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

二,自定义控件:如下图

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

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

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

c# 海康威视 Winform播放mp4视频相关推荐

  1. CEF 最新版本自己编译加上支持播放MP4视频

    CEF 编译支持播放MP4视频 写在前面 编译过程 验证效果 最新编译成果列表(持续更新) 获取方式 写在前面 由于研究学习需要,使用CEF,发现官网的版本默认不带视频播放功能,根据官方源码,加上支持 ...

  2. video网页能播放.mp4视频,微信不能播放的问题

    刚刚学开发播放视频的人员来说,可能有以下2种问题, 一.在本地调试网页能播放.mp4视频,放到服务器上,在手机上测试,却不能播放.mp4视频. 其实这是服务器上将下载.mp4的格式文件给禁止了.在服务 ...

  3. 服务器设置播放mp4文件,服务器设置播放mp4视频

    服务器设置播放mp4视频 内容精选 换一换 华为云面向企业市场推出音视频转码解决方案,可以根据用户业务需要,提供云端音视频转码服务,以满足用户业务在OTT.PC以及移动终端上播放的诉求 来自:解决方案 ...

  4. html5播放mp4视频代码

    1.nginx支持flv和mp4格式播放 默认yum安装nginx centos7安装nginx时候应该是默认安装nginx_mod_h264_streaming模块的 # nginx -V查看是否安 ...

  5. 播放mp4视频,有声音无图像,AVC(H264)编码转换

    html中播放MP4视频时,总是有声音无图像,尝试了各种播放器插件(如video.js/clappr.min.js)均无效,遂怀疑是不是视频本身的问题.查了资料后了解到,mp4的视频编码有三种:MPE ...

  6. android webview播放mp4,Android的webview不播放mp4视频在同一页

    我想显示一个本地html文件包含播放视频的代码,并尝试显示在android webview的HTML文件.Android的webview不播放mp4视频在同一页 我用下面的代码用于播放视频: WebV ...

  7. ffmpeg播放MP4视频与分离音频

    一.准备 首先,下载ffmpeg.exe和ffplay.exe,准备要处理的素材 ffmpeg文件: http://链接:https://pan.baidu.com/s/1Pe4vUoy4UU_x7S ...

  8. android 播放视频链接,如何通过Android视频播放器中的直接链接播放MP4视频?

    我正在制作一个 Android应用程序,我需要通过直接下载链接在Android默认本机视频播放器中播放mp4视频. 要打开Android视频播放器,我使用以下代码 Intent intent = ne ...

  9. html5网页中用video标签无法播放MP4视频的解决方法

    为了避免大家遇到同样的问题我在这里就给大家普及一下html5关于标签的知识吧: 在使用html4协议做网站时我们想要在网页上播放一个视频要不使用flash去播放,要么就是嵌入式页面来实现,对于html ...

最新文章

  1. elment-ui 表格进行实时百分比计算
  2. android调频收音机代码,android 收音机 FM 驱动 hal层 框架层以及应用层代码
  3. MessagePack:一种高效二进制序列化格式
  4. python什么模块动态调用链接库_python 动态调用模块、类、方法(django项目)
  5. 设计模式:桥接模式(Bridge Pattern)
  6. Day11多态部分-3
  7. like左匹配索引失效_Mysql索引失效的情况
  8. 一加7T Pro曝光:10月10日发布
  9. 【mysql】期末数据库复习指南(《数据库系统概率》知识点总结,数据库系统原理,数据库设计课程复习)
  10. 手机html文件转TXT,Html 转换 Txt
  11. Library Monkey Pro for Mac(专业的音频控制整理工具)
  12. 3月25日 编译的四个过程
  13. html swf格式转换器,蒲公英SWF格式转换器
  14. 搭建VUE应用的时候,fsevents报错问题
  15. 基于zookeeper实现统一配置管理
  16. 自建家居 Wiki 系统(BookStack 服务)
  17. Activity标签设置
  18. 第14章-Spring AOP通知(Advice)详解
  19. PHP compact() 函数,好用!
  20. 文库网站的文件转换源码分享

热门文章

  1. 一些选好虚拟主机控制面板的秘诀
  2. 医学图像处理开源软件集合
  3. java计算机毕业设计ssm办公耗材采购管理系统(源码+系统+mysql数据库+Lw文档)
  4. 设备巡检小程序开发制作功能介绍
  5. 【echarts】xAxis鼠标事件失效问题
  6. 简单几步学会java爬虫
  7. C语言:编写一个程序判断一个数是否为素数/
  8. Kubernetes helm burrow 集成
  9. hive安装过程中报错处理办法
  10. LPC24xx系列CAN波特率计算