c# 海康威视 Winform播放mp4视频
最近有个视频播放系统,需要对海康的mp4格式视频进行播放,由于普通播放器无法对该视频进行播放原因是海康对视频进行了自己的编码,需要相应的解码才可以对视频进行播放。
下面是对海康威视视频播放的c#代码(需要从海康官网下载播放库)。
一,这个是核心库通过c#对海康提供的动态链接库dll方法的封装。
public class PlayCtrlSDK
{
#region 解码库
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern uint PlayM4_GetLastError(int nPort);
/// <summary>
/// 获取文件当前播放位置(百分比)。
/// </summary>
/// <param name="nPort"></param>
/// <returns></returns>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern float PlayM4_GetPlayPos(int nPort);
/// <summary>
///设置文件当前播放位置(百分比)。
/// </summary>
/// <param name="nPort"></param>
/// <returns></returns>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern float PlayM4_SetPlayPos(int nPort, float fRelativePos);
/// <summary>
/// 获取文件大小
/// </summary>
/// <returns></returns>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern uint PlayM4_GetFileHeadLength();
/// <summary>
/// 获取文件总时间
/// </summary>
/// <param name="nPort"></param>PlayM4_GetPlayedTime
/// <returns></returns>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern uint PlayM4_GetFileTime(int nPort);
/// <summary>
/// 获取当前播放时间
/// </summary>
/// <param name="nPort"></param>
/// <returns></returns>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern uint PlayM4_GetPlayedTime(int nPort);
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern int PlayM4_GetCaps();
/// <summary>
/// 关闭声音
/// </summary>
/// <returns></returns>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern bool PlayM4_StopSound();
/// <summary>
/// 获取未使用的通道号
/// </summary>
/// <param name="nPort"></param>
/// <returns></returns>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern bool PlayM4_GetPort(ref int nPort);
/// <summary>
///播放声音
/// </summary>
/// <param name="nPort"></param>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern bool PlayM4_PlaySound(int nPort);
/// <summary>
/// 设置流播放模式
/// </summary>
/// <param name="port"></param>
/// <param name="mode"></param>
/// <returns></returns>
[SecurityCritical]
[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>
[SecurityCritical]
[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>
[SecurityCritical]
[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>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern bool PlayM4_OpenFile(int nPort, string fileName);
/// <summary>
/// 关闭文件
/// </summary>
/// <param name="nPort"></param>
/// <param name="hWnd"></param>
/// <returns></returns>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern bool PlayM4_CloseFile(int nPort);
/// <summary>
/// 开启播放
/// </summary>
/// <param name="nPort"></param>
/// <param name="hWnd"></param>
/// <returns></returns>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern bool PlayM4_Play(int nPort, IntPtr hWnd);
/// <summary>
/// 开始倒放
/// </summary>
/// <param name="nPort"></param>
/// <returns></returns>
[SecurityCritical]
[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>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern bool PlayM4_InputData(int nPort, byte[] pBuf, uint nSize);
/// <summary>
/// 关闭播放
/// </summary>
/// <param name="nPort"></param>
/// <returns></returns>PlayM4_Pause
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern bool PlayM4_Stop(int nPort);
/// <summary>
///暂停/播放1:暂停,0:恢复
/// </summary>
/// <param name="nPort"></param>
/// <returns></returns>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern bool PlayM4_Pause(int nPort, uint nPause);
/// <summary>
/// 关闭流
/// </summary>
/// <param name="nPort"></param>
/// <returns></returns>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern bool PlayM4_CloseStream(int nPort);
/// <summary>
/// 释放已使用的通道号
/// </summary>
/// <param name="nPort"></param>
/// <returns></returns>
[SecurityCritical]
[DllImport("PlayCtrl.dll")]
public static extern bool PlayM4_FreePort(int nPort); #endregion
}
二,自定义控件:如下图

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

实现功能很简单,主要是对海康播放库的调用。自己做的这个demo只用到了几个播放,暂停,快进,后退,播放时间,当前时间几个功能。
c# 海康威视 Winform播放mp4视频的更多相关文章
- cocos2d-x 3.0 播放MP4视频
猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=545 很久以前写的一个2dx播放 ...
- html5播放mp4视频代码
1.nginx支持flv和mp4格式播放 默认yum安装nginx centos7安装nginx时候应该是默认安装nginx_mod_h264_streaming模块的 # nginx -V查看是否安 ...
- Chrome使用video无法正常播放MP4视频的解决方案
H5的video标签让前端开发者用一行代码就可以实现视频和音频的播放,然而,有时候我们会突然发现,某些Mp4格式的视频在Chrome下居然无法正常播放?这究竟是什么原因呢?这篇文章主要分析了部分Mp4 ...
- Centos7无法播放mp4视频(待验证)
新安装Centos7后,发现无法正常播放本地mp4视频 可以尝试安装 yum -y install ffmpeg 安装之后,需要重启电脑才能生效 浏览器安装年flash,只能播放部分视频,也有可能是s ...
- H5的video标签在网页上播放MP4视频时只有声音没有画面
最近做一个项目时,发现mp4文件播放时没有图像,只有声音,代码检查了N次,都没有问题,就算是直接使用网上的实例代码,也只能播放实例视频,mp4文件绝对路径,相对路径也都试了,还是不能播放我的mp4. ...
- HTML标签播放MP4视频
1.使用 <object> 标签播放视频 <object width="500" height="300" data="http:/ ...
- WinForm播放视频
原文:WinForm播放视频 1背景 这几天一老友要求我做个小软件,在WinForm播放视频.印象中微软有个WM控件直接可以使用,晚上研究下 2实现方式 2.1微软草根 最简单的方式,是直接使用微软的 ...
- IIS6/IIS7环境下实现支持mp4视频随意拖动、预览播放、边下载边播放
前几天,一客户需要在IIS环境下实现MP4视频可以随意拖动观看,边下载边播放.一看这要求,IIS本身是无法实现,想着应该需要用插件,于是GG一番,还真找到这样的插件,此组件为H264-Streamin ...
- Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型
转自原文 Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型 播放mp4格式的时候提示 Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型 原因是在IIS中 ...
随机推荐
- 把json格式对象转成可提交字符串格式,会过滤掉函数 {a: {b: 3}, b: [1], c: "d"} -> a.b=3&b[0]=1&c=d
var json = { name: "任务名称" , scoreRule: "", score: "", // 如果规则表达式不为空,则默 ...
- 【ZZ】超全面的设计模式总结
http://www.cnblogs.com/chenssy/p/3357683.html#rd
- SqlServer2008 之 应用积累
1.断开数据库连接,在原有查询窗口(断开数据库连接的未关闭查询窗口),对现在所连数据库进行操作,结果是对已断开数据库的误操作. 正确操作:重新连接数据库后,应关闭原有查询窗口,新建查询窗口后再执行操作 ...
- myEclipse6.5与数据库(SQL Server2008)连接遇到的问题(自己总结的干货)<用SSH框架的时候,用servlet+javabean+jsp的时候>
昨天因为学习SSH框架的搭建,时隔一年又重新遇到了myEclipse连接数据库的问题.废话不多说,上干货 (以下全部按照我遇到的问题的顺序,也就是没有顺序,就是任性) 请注意:这是在myEclipse ...
- https的工作流程
(1)客户端向服务器提出请求,发出SSL握手信号. (2)服务器发出回应,并出示服务器证书(公钥),显示服务器站点身份. (3)客户端验证服务器证书,并生成一个随机的会话密钥,密钥长度达到128位. ...
- hibernate 查询
String hql = "select * from Commodity where commodityName like :commodityname" ...
- 如何删除C/C++源代码中的注释
具体代码: #include <stdlib.h> #include <stdio.h> //删除注释 void commentFilter(FILE* sourceFi ...
- mac 下curl的使用
curl用起来非常方便,但是老是记不住各个参数的含义,还是记录下来方便查询吧 这东西现在已经是苹果机上内置的命令行工具之一了,可见其魅力之一斑 1)二话不说,先从这里开始吧! curl http:// ...
- .net mvc sample 参考网址
http://www.asp.net/mvc/samples http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store- ...
- 转: OpenResty最佳实践
https://moonbingbing.gitbooks.io/openresty-best-practices/content/ centOS安装另加内容 ln -sf luajit-2.1.0- ...