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中 ...
随机推荐
- 从一行代码里面学点JavaScript
从一行代码里面学点JavaScript 现如今,JavaScript无处不在,因此关于JavaScript的新知识也是层出不穷.JavaScript的特点在于,要学习它的语法入门简简单,但是要精通使用 ...
- Python拼接多张图片
写机器学习相关博文,经常会碰到很多公式,而Latex正式编辑公式的利器.目前国内常用的博客系统,好像只有博客园支持,所以当初选择落户博客园.我现在基本都是用Latex写博文,然后要发表到博客园上与大家 ...
- oracle时间格式转换问题 ORA-01810: format code appears twice--转
今天在做报表查询的时候Oracle报错: 信息为 ORA-01810: format code appears twice 原因:由于想java一样转化时间格式,但是Oracle中是不区分大小写的,所 ...
- 使用coreData
1.设计数据模型 2.创建持久化视图和控制器 #import "BIDViewController.h" #import "BIDAppDelegate.h" ...
- Android(java)学习笔记99:android的短信发送器研究
1.第一种可以调用系统内部的短信程序. 之前我曾经出现过一个bug就是报错: android.content.ActivityNotFoundException: No Activity found ...
- CSS完成三角形
通过设置div的border属性,来实现! 将div的height和width属性分别设置为0px,将4边的border值设置为一样的宽度,通过调节边框的颜色课看到效果. <style> ...
- CEF js调用C#封装类含注释
/* * CEF JS调用C#组装类 * * 使用方法(CefGlue为例): * public class BrowserRenderProcessHandler : CefRenderProces ...
- SSIS 学习(1): 概要【转】
俗话说:“十年磨一剑”,Microsoft 通过5年时间的精心打造,于2005年浓重推出Sql Server 2005,这是自SQL Server 2000 以 后的又一旷世之作.这套企业级的数据库解 ...
- 利用jQuery实现选项卡
/*Tab 选项卡 标签*/ $(function(){ var $div_li =$("div.tab_menu ul li"); $div_li.click(function( ...
- js限制文本框输入字数
//js代码 <script type="text/javascript"> function checkLen(term){ document.all.termLen ...