博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 海康威视 Winform播放mp4视频
阅读量:4361 次
发布时间:2019-06-07

本文共 5530 字,大约阅读时间需要 18 分钟。

最近有个视频播放系统,需要对海康的mp4格式视频进行播放,由于普通播放器无法对该视频进行播放原因是海康对视频进行了自己的编码,需要相应的解码才可以对视频进行播放。

下面是对海康威视视频播放的c#代码(需要从海康官网下载播放库)。

一,这个是核心库通过c#对海康提供的动态链接库dll方法的封装。

 

1 public class PlayCtrlSDK  2     {  3         #region 解码库  4         [SecurityCritical]  5         [DllImport("PlayCtrl.dll")]  6         public static extern uint PlayM4_GetLastError(int nPort);  7         ///   8         /// 获取文件当前播放位置(百分比)。  9         ///  10         ///  11         /// 
12 [SecurityCritical] 13 [DllImport("PlayCtrl.dll")] 14 public static extern float PlayM4_GetPlayPos(int nPort); 15 /// 16 ///设置文件当前播放位置(百分比)。 17 /// 18 /// 19 ///
20 [SecurityCritical] 21 [DllImport("PlayCtrl.dll")] 22 public static extern float PlayM4_SetPlayPos(int nPort, float fRelativePos); 23 /// 24 /// 获取文件大小 25 /// 26 ///
27 [SecurityCritical] 28 [DllImport("PlayCtrl.dll")] 29 public static extern uint PlayM4_GetFileHeadLength(); 30 /// 31 /// 获取文件总时间 32 /// 33 /// PlayM4_GetPlayedTime 34 ///
35 [SecurityCritical] 36 [DllImport("PlayCtrl.dll")] 37 public static extern uint PlayM4_GetFileTime(int nPort); 38 /// 39 /// 获取当前播放时间 40 /// 41 /// 42 ///
43 [SecurityCritical] 44 [DllImport("PlayCtrl.dll")] 45 public static extern uint PlayM4_GetPlayedTime(int nPort); 46 [SecurityCritical] 47 [DllImport("PlayCtrl.dll")] 48 public static extern int PlayM4_GetCaps(); 49 /// 50 /// 关闭声音 51 /// 52 ///
53 [SecurityCritical] 54 [DllImport("PlayCtrl.dll")] 55 public static extern bool PlayM4_StopSound(); 56 /// 57 /// 获取未使用的通道号 58 /// 59 /// 60 ///
61 [SecurityCritical] 62 [DllImport("PlayCtrl.dll")] 63 public static extern bool PlayM4_GetPort(ref int nPort); 64 /// 65 ///播放声音 66 /// 67 /// 68 [SecurityCritical] 69 [DllImport("PlayCtrl.dll")] 70 public static extern bool PlayM4_PlaySound(int nPort); 71 /// 72 /// 设置流播放模式 73 /// 74 /// 75 /// 76 ///
77 [SecurityCritical] 78 [DllImport("PlayCtrl.dll")] 79 public static extern bool PlayM4_SetStreamOpenMode(int nPort, int mode); 80 /// 81 /// 打开流 82 /// 83 /// 84 /// 85 /// 86 /// 87 ///
88 [SecurityCritical] 89 [DllImport("PlayCtrl.dll")] 90 public static extern bool PlayM4_OpenStream(int nPort, byte[] pFileHeadBuf, UInt32 nSize, uint nBufPoolSize); 91 /// 92 /// 设置播放缓冲区最大缓冲帧数 93 /// 94 /// 95 /// 96 ///
97 [SecurityCritical] 98 [DllImport("PlayCtrl.dll")] 99 public static extern bool PlayM4_SetDisplayBuf(int nPort, uint nBufPoolSize);100 /// 101 /// 打开文件102 /// 103 /// 104 /// 105 ///
106 [SecurityCritical]107 [DllImport("PlayCtrl.dll")]108 public static extern bool PlayM4_OpenFile(int nPort, string fileName);109 /// 110 /// 关闭文件111 /// 112 /// 113 /// 114 ///
115 [SecurityCritical]116 [DllImport("PlayCtrl.dll")]117 public static extern bool PlayM4_CloseFile(int nPort);118 /// 119 /// 开启播放120 /// 121 /// 122 /// 123 ///
124 [SecurityCritical]125 [DllImport("PlayCtrl.dll")]126 public static extern bool PlayM4_Play(int nPort, IntPtr hWnd);127 /// 128 /// 开始倒放129 /// 130 /// 131 ///
132 [SecurityCritical]133 [DllImport("PlayCtrl.dll")]134 public static extern bool PlayM4_ReversePlay(int nPort);135 /// 136 /// 输入流数据137 /// 138 /// 139 /// 140 /// 141 ///
142 [SecurityCritical]143 [DllImport("PlayCtrl.dll")]144 public static extern bool PlayM4_InputData(int nPort, byte[] pBuf, uint nSize);145 /// 146 /// 关闭播放147 /// 148 /// 149 ///
PlayM4_Pause150 [SecurityCritical]151 [DllImport("PlayCtrl.dll")]152 public static extern bool PlayM4_Stop(int nPort);153 /// 154 ///暂停/播放1:暂停,0:恢复 155 /// 156 /// 157 ///
158 [SecurityCritical]159 [DllImport("PlayCtrl.dll")]160 public static extern bool PlayM4_Pause(int nPort, uint nPause);161 /// 162 /// 关闭流163 /// 164 /// 165 ///
166 [SecurityCritical]167 [DllImport("PlayCtrl.dll")]168 public static extern bool PlayM4_CloseStream(int nPort);169 /// 170 /// 释放已使用的通道号171 /// 172 /// 173 ///
174 [SecurityCritical]175 [DllImport("PlayCtrl.dll")]176 public static extern bool PlayM4_FreePort(int nPort);177 178 #endregion179 }

 

二,自定义控件:如下图

三。引用控件实现效果如下:

实现功能很简单,主要是对海康播放库的调用。自己做的这个demo只用到了几个播放,暂停,快进,后退,播放时间,当前时间几个功能。

 

转载于:https://www.cnblogs.com/dashouqianxiaoshou/p/3953312.html

你可能感兴趣的文章
WPF路由事件二:路由事件的三种策略(转)
查看>>
Java中的内存泄露
查看>>
asp.net 自定义控件验证FCKeditor是否为空
查看>>
oracle 查看表空间的脚本
查看>>
Python 描述符是什么?以及如何实现
查看>>
程序员的激情其实是一种痛苦
查看>>
MySQL后台线程的清理工作
查看>>
连接mysql数据库,创建用户模型
查看>>
cogs1885 [WC2006]水管局长数据加强版
查看>>
paramiko模块
查看>>
[原创]茗洋AaronYang的 jquery.myselect.js 我的一次前端突破[上]
查看>>
1083 是否存在相等的差
查看>>
SpringMVC12拦截器
查看>>
[转载]C#中as和is关键字的用法
查看>>
jsp 发布war 包到Tomcat
查看>>
J2SE基础夯实系列之finally中return语句
查看>>
手把手交大家在mac上用VMWare虚拟机装Linux-Ubuntu--及Ubuntu安装Vmware Tools[转载+一些修改](版本:17.04)...
查看>>
C#基础精华07(委托事件,委托的使用,匿名方法)
查看>>
C语言strcpy函数所引发的问题
查看>>
js通过ajax和thinkPHP交换数据
查看>>