c# 海康威视 Winform播放mp4视频

最近有个视频播放系统,需要对海康的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只用到了几个播放,暂停,快进,后退,播放时间,当前时间几个功能。

时间: 2024-08-06 05:46:47

c# 海康威视 Winform播放mp4视频的相关文章

html5播放mp4视频代码

1.nginx支持flv和mp4格式播放 默认yum安装nginx centos7安装nginx时候应该是默认安装nginx_mod_h264_streaming模块的 # nginx -V查看是否安装nginx_mod_h264_streaming模块 nginx在新版本中已经支持了--with-http_mp4_module --with-http_flv_module这2个模块即可 # vi /etc/nginx/nginx.conf server { listen       80 de

cocos2d-x 3.0 播放MP4视频

猴子原创,欢迎转载. 转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢. 原文地址: http://www.cocos2dev.com/?p=545 非常久曾经写的一个2dx播放MP4视频的教材.有网友反映已经不能用了,今天晚上写了个简单的2dx播放视频类.使用的是cocos2dx 3.0. 类说明:LHVideoPlayerImplCpp.h/mm // cocos2dx中使用的播放MP4接口LHVideoPlayerImpl.h/m // videoPlayer的o

WinForm播放视频

1背景 这几天一老友要求我做个小软件,在WinForm播放视频.印象中微软有个WM控件直接可以使用,晚上研究下 2实现方式 2.1微软草根 最简单的方式,是直接使用微软的WM控件,也是通过COM方式集成进来.操作步骤如下 l 工具箱引用 n 在工具箱中新建一Tab页面,命名为Windows Media Player(随意命名).创建成功后,再右键选中该面板,如下图所示 n 选中Com面板,找到如下图所示控件,引用即可 n 引用成功后,如下图所示.工具箱中已存在此控件,直接将此控件拖至页面中即可

flash播放mp4插件轻松搞定播放视频问题

1.使用SWFObject插入Adobe Flash媒体资源兼容性好代码 <script src="http://js.kuwo.cn/yinyue/webmv/swfobject.js"></script>SWFObject是一个用于在HTML中方便插入Adobe Flash媒体资源(*.swf文件)的独立.敏捷的JavaScript模块.该模块中的JavaScript脚本能够自动检测PC.Mac机器上各种主流浏览器对Flash插件的支持情况.它使得插入Fla

Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型

转自原文 Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型 播放mp4格式的时候提示 原因是在IIS中没有添加 mp4 这种文件格式 解决办法: 打开 MIME 类型,然后右键 添加

800Li 流媒体和传统http播放MP4和FLV对比

随着Web 应用发展的普及,在浏览器上播放媒体(视频.音频)的需求变得越来越普遍:很多的企业在尝试在网站加入多媒体内容,最常见的俩种方式: 1. 普通的 http 文件点播 ,直接通过网站前台 file upload 的方式上传文件MP4或者FLV,保存路径,客户端通过开源的flash 播放器 或者html5标签去播放服务器返回这个路径的视频文件,可能是mp4 或者FLV. 2. 加入流媒体服务器,通过流媒体来解决视频上传和视频播放的问题 web网站只解决 网页显示和网站逻辑.   下面将主要讲

Android[安德鲁斯] 文本Air Video 远程播放电脑视频

苹果iOS下列.目前应用Air Video,能力iOS由Wifi远程直接播放电脑视频,无需看视频复制到手机.非常好用!最近使用Android打电话.展望类别似应用,找了很长一段时间没有找到.在仔细的思考AirVideo工程,视频站点类似,在Android以下应该也能够有类似的方法实现. 今日在华为荣耀6上面最终验证通过了一个完美的方案.赶紧放上来和有相同须要的朋友们分享分享. 先说一下Air Video的工作原理: 1) 在Windows以下安装Air Video Serverserver,并设

播放本地视频

1.播放本地视频 PlayLocationVideoInSDActivity.java 关键点1: String path = "/sdcard/TZH.mp4"; //String path2 = ""+Environment.getExternalStorageDirectory()+"/TZH.mp4";//等价上面的地址 关键点2:控制进度条 package com.example.videoplaydemo; import androi

unity 播放外部视频

摘要: Unity支持的播放视频格式有.mov..mpg..mpeg..mp4..avi和.asf.只需将对应的视频文件拖拽入Project视图即可,它会自动生成对应的MovieTexture对象. 1.Unity3D中播放游戏视频的方式有两种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面上.第二种是在GUI层面上播放视频.播放视频其实和贴图非常相像,因为播放视频用到的MovieTexture属于贴图Texture的子类 //电影纹理 publi