最近有个视频播放系统,需要对海康的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视频的更多相关文章

  1. cocos2d-x 3.0 播放MP4视频

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=545 很久以前写的一个2dx播放 ...

  2. html5播放mp4视频代码

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

  3. Chrome使用video无法正常播放MP4视频的解决方案

    H5的video标签让前端开发者用一行代码就可以实现视频和音频的播放,然而,有时候我们会突然发现,某些Mp4格式的视频在Chrome下居然无法正常播放?这究竟是什么原因呢?这篇文章主要分析了部分Mp4 ...

  4. Centos7无法播放mp4视频(待验证)

    新安装Centos7后,发现无法正常播放本地mp4视频 可以尝试安装 yum -y install ffmpeg 安装之后,需要重启电脑才能生效 浏览器安装年flash,只能播放部分视频,也有可能是s ...

  5. H5的video标签在网页上播放MP4视频时只有声音没有画面

    最近做一个项目时,发现mp4文件播放时没有图像,只有声音,代码检查了N次,都没有问题,就算是直接使用网上的实例代码,也只能播放实例视频,mp4文件绝对路径,相对路径也都试了,还是不能播放我的mp4. ...

  6. HTML标签播放MP4视频

    1.使用 <object> 标签播放视频 <object width="500" height="300" data="http:/ ...

  7. WinForm播放视频

    原文:WinForm播放视频 1背景 这几天一老友要求我做个小软件,在WinForm播放视频.印象中微软有个WM控件直接可以使用,晚上研究下 2实现方式 2.1微软草根 最简单的方式,是直接使用微软的 ...

  8. IIS6/IIS7环境下实现支持mp4视频随意拖动、预览播放、边下载边播放

    前几天,一客户需要在IIS环境下实现MP4视频可以随意拖动观看,边下载边播放.一看这要求,IIS本身是无法实现,想着应该需要用插件,于是GG一番,还真找到这样的插件,此组件为H264-Streamin ...

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

    转自原文 Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型 播放mp4格式的时候提示 Html 播放 mp4格式视频提示 没有发现支持的视频格式和mime类型 原因是在IIS中 ...

随机推荐

  1. day02 Java基础

    1.Java中的关键字都是小写的. 2.Java中的关键字 3.Java中的注释分为:单行注释.多行注释.文档注释 文档注释将被javadoc工具解析生成一个说明书. 4.Java中的常量分为字面值常 ...

  2. 【双十一到了,准备买书了么?】推荐几本c/c++入手的书籍

    <C和指针>c语言的经典之作,全书共18章,覆盖了数据.语句.操作符和表达式.指针.函数.数组.字符串.结构和联合等几乎所有重要的C编程话题.而且每章后面都有基础回顾已经较多例程,很适合入 ...

  3. Android基本控件之RadioGroup

    我们在手机上经常看到一堆选项,但是我们只能选择一个,那么在Android中,这个控件就叫做RadioButton,也就是单选按钮的意思,他们之所以能够达到只能选择一个的效果,是因为有一个RadioGr ...

  4. tomcat服务器 去掉端口8080 以及项目名 直接使用IP地址访问

      >>>  先在web.xml中设置默认页面 <welcome-file-list> <welcome-file>/login.jsp</welcom ...

  5. 为什么arcgis里,鼠标的图标都变成放大镜不能用了

    做作业做到一半,鼠标的图标就只有放大镜了,不管是点箭头还是作图工具都没用,手抓的也没用,只剩下放大镜的功能和图标了,这是怎么一回事啊?种情况我碰到过几次,具体原因不清楚,但是解决方法是有的:把你的数据 ...

  6. 在vs环境中跑动sift特征提取(原理部分)

    /* 如果给两张图片,中间有相似点.要求做匹配.怎么做.我现在能讲么?   比如给了两幅图片,先求出sift点.   尺度空间极值检测.高斯模糊 关键点定位 关键点方向确定 关键点描述   kdtre ...

  7. obj 转为Json 时间格式自定义

    var tb = evnWarningBll.GatWarning();             var  timeFormat = new IsoDateTimeConverter();       ...

  8. 【Irrlicht鬼火引擎】 认识鬼火引擎

    一.Irrlicht简介 (1)概念 Irrlicht引擎是一个用C++书写的高性能实时3D引擎,可以应用于C++程序或者.NET语言中.通过使用Direct3D(Windows平台).OpenGL ...

  9. MSP430常见问题之复位系统类

    Q1:请问msp430 怎么手动复位啊?是不是连到RST/NMI 上?但是这个脚不是和JTAG 连吗?我看到一些资料上说复位的话还要上拉电阻或者复位电路.A1:JTAG 功能只在下载程序时候使用,正常 ...

  10. hdu 2838 树状数组

    思路:从后面往前面插,用一个二维树状数组保存,c[i][0]表示比i小的元素和,c[i][1]表示比i小的元素个数. #include<iostream> #include<cstr ...