Welcome

首页 / 软件开发 / .NET编程技术 / 海康威视频监控设备Web查看系统(三)Web篇

海康威视频监控设备Web查看系统(三)Web篇2015-01-06本文是本系列三篇文章中的最后一篇,在前两篇文章中,介绍了开发海康监控的方案及中转服务器的实现,本篇文章介绍Web端的功能实现,经过本篇文章中的项目开发,我们就实现了最初的项目需求。 项目中需要,请各位根据项目需要下载相应版本。先来作者就带着大家一步步来实现客户端插件的开发。

播放器开发:

根据海康官方的SDK,我们要做的播放器其实只是将海康的播放库引入到我们自己的项目中,然后接收来自中转服务器的数据,最后播放显示到客户Web浏览器上。其实整个就是一个引入了海康播放库的ActiveX插件开发。下面按照开发流程一步步实现播放器插件开发。

新建C#类库项目

将播放器SDK中文件引入到项目中

在项目中添加Winform用户控件

新建安装项目

发布项目

数字签名

发布Web网站

关于C#开发ActiveX的详细过程,园子里有好多文章写的非常详细,我这里不在累述,有不太了解的朋友,我这里推荐一篇比较详细的文章《ASP.NET C# 之 Activex用C#编写ActiveX控件》。本篇文章写播放器插件的核心功能。

首先来看SDK的C#调用的内容:

public class PlayCtrlSDK{#region 解码库[DllImport("PlayCtrl.dll")]public static extern uint PlayM4_GetLastError(int nPort);[DllImport("PlayCtrl.dll")]public static extern int PlayM4_GetCaps();/// <summary>/// 获取未使用的通道号/// </summary>/// <param name="nPort"></param>/// <returns></returns>[DllImport("PlayCtrl.dll")]public static extern bool PlayM4_GetPort(ref int nPort);/// <summary>/// 设置流播放模式/// </summary>/// <param name="port"></param>/// <param name="mode"></param>/// <returns></returns>[DllImport("PlayCtrl.dll")]public static extern bool PlayM4_SetStreamOpenMode(int nPort, int mode);/// <summary>/// 打开流/// </summary>/// <param name="nPort"></param>/// <param name="pFileHeadBuf"></param>/// <param name="nSize"></param>/// <param name="nBufPoolSize"></param>/// <returns></returns>[DllImport("PlayCtrl.dll")]public static extern bool PlayM4_OpenStream(int nPort, byte[] pFileHeadBuf, UInt32 nSize, uint nBufPoolSize);/// <summary>/// 设置播放缓冲区最大缓冲帧数/// </summary>/// <param name="nPort"></param>/// <param name="nNum"></param>/// <returns></returns>[DllImport("PlayCtrl.dll")]public static extern bool PlayM4_SetDisplayBuf(int nPort, uint nBufPoolSize);/// <summary>/// 开启播放/// </summary>/// <param name="nPort"></param>/// <param name="hWnd"></param>/// <returns></returns>[DllImport("PlayCtrl.dll")]public static extern bool PlayM4_Play(int nPort, IntPtr hWnd);/// <summary>/// 开始倒放/// </summary>/// <param name="nPort"></param>/// <returns></returns>[DllImport("PlayCtrl.dll")]public static extern bool PlayM4_ReversePlay(int nPort);/// <summary>/// 输入流数据/// </summary>/// <param name="nPort"></param>/// <param name="pBuf"></param>/// <param name="nSize"></param>/// <returns></returns>[DllImport("PlayCtrl.dll")]public static extern bool PlayM4_InputData(int nPort, byte[] pBuf, uint nSize);/// <summary>/// 关闭播放/// </summary>/// <param name="nPort"></param>/// <returns></returns>[DllImport("PlayCtrl.dll")]public static extern bool PlayM4_Stop(int nPort);/// <summary>/// 关闭流/// </summary>/// <param name="nPort"></param>/// <returns></returns>[DllImport("PlayCtrl.dll")]public static extern bool PlayM4_CloseStream(int nPort);/// <summary>/// 释放已使用的通道号/// </summary>/// <param name="nPort"></param>/// <returns></returns>[DllImport("PlayCtrl.dll")]public static extern bool PlayM4_FreePort(int nPort);#endregion}