C# 视频监控系列(11):H264播放器——封装API[HikPlayM4.dll] (3)

  1. 云栖社区>
  2. 博客>
  3. 正文

C# 视频监控系列(11):H264播放器——封装API[HikPlayM4.dll] (3)

科技小先锋 2017-11-21 19:36:00 浏览571
展开阅读全文
/// <summary>
        
/// 释放directDraw表面;注意:1.1版以上不需要调用。
        
/// 
        
/// 2、 BOOL Hik_PlayM4_RealeseDDraw(); 
        
/// </summary>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_RealeseDDraw();

        
/// <summary>
        
/// 打开播放文件
        
/// 
        
/// 3、 BOOL Hik_PlayM4_OpenFile(LONG nPort,LPSTR sFileName); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <param name="sFileName">文件名,文件不能超过4G或小于4K</param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_OpenFile(int nPort, string sFileName);

        
/// <summary>
        
/// 关闭播放文件
        
/// 
        
/// 4、 BOOL Hik_PlayM4_CloseFile(LONG nPort); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_CloseFile(int nPort);

        
/// <summary>
        
/// 播放开始,播放视频画面大小将根据hWnd窗口调整,要全屏显示,只要把hWnd窗口放大到全屏。
        
///     如果已经播放,只是改变当前播放速度为正常速度。 
        
///     输入参数:hWnd 播放视频的窗口句柄。 
        
/// 
        
/// 5、 BOOL Hik_PlayM4_Play(LONG nPort, HWND hWnd); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <param name="hWnd"></param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_Play(int nPort, IntPtr hWnd);

        
/// <summary>
        
/// 播放结束
        
/// 
        
/// 6、 BOOL Hik_PlayM4_Stop(LONG nPort); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_Stop(int nPort);

        
/// <summary>
        
/// 播放暂停/恢复
        
/// 
        
/// 7、 BOOL Hik_PlayM4_Pause(LONG nPort,DWORD nPause); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <param name="nPause">TRUE暂停,否则恢复</param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_Pause(int nPort, bool nPause);

        
/// <summary>
        
/// 快速播放,每次调用将使当前播放速度加快一倍,最多调用4次;要恢复正常播放调用
        
/// Hik_PlayM4_Play(),从当前位置开始正常播放
        
/// 
        
/// 8、 BOOL Hik_PlayM4_Fast(LONG nPort); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_Fast(int nPort);

        
/// <summary>
        
/// 慢速播放,每次调用将使当前播放速度慢一倍;最多调用4次;要恢复正常播放调用Hik_PlayM4_Play
        
/// 
        
/// 9、 BOOL Hik_PlayM4_Slow(LONG nPort); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_Slow(int nPort);

        
/// <summary>
        
/// 设置文件播放指针的相对位置(百分比)。 
        
/// 
        
/// 10、BOOL Hik_PlayM4_SetPlayPos(LONG nPort,float fRelativePos); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <param name="fRelativePos">范围0-100%  0-1 之间</param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_SetPlayPos(int nPort, float fRelativePos);

        
/// <summary>
        
/// 获得文件播放指针的相对位置
        
/// 
        
/// 11、float Hik_PlayM4_GetPlayPos(LONG nPort); 
        
/// </summary>
        
/// <param name="nPort">范围0-100%</param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern float Hik_PlayM4_GetPlayPos(int nPort);

        
/// <summary>
        
/// 说明:设置文件结束时要发送的消息;从2.4版开始,当文件播放完时,解码线程将不会自动结束,需要
        
/// 用户做停止工作:应用程序在收到这个消息后要调用播放结束函数Hik_PlayM4_Stop(nPort)。 
        
/// 
        
/// 12、BOOL Hik_PlayM4_SetFileEndMsg(LONG nPort,HWND hWnd,UINT nMsg); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <param name="hWnd">消息发送的窗口。 </param>
        
/// <param name="nMsg">用户自定义的输入的消息;当播放到文件结束时用户从hWnd窗口过程中收到这个消息。此消息函数中的wParam参数返回nPort的值。</param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_SetFileEndMsg(int nPort, IntPtr hWnd, uint nMsg);

        
/// <summary>
        
/// 设置音量;可以在播放之前设置,返回值是FALSE,但设置的值被保存,并作为启动声音时的初始
        
/// 
        
/// 13、BOOL Hik_PlayM4_SetVolume(LONG nPort,WORD nVolume); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <param name="nVolume">nVolume 音量的值,范围0-0XFFFF</param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_SetVolume(int nPort, int nVolume);

        
/// <summary>
        
/// 打开声音;同一时刻只能有一路声音。如果现在已经有声音打开,则自动关闭原来已经打开的声音。
        
///     注意:默认情况下声音是关闭的! 
        
/// 
        
/// 14.BOOL  Hik_PlayM4_PlaySound(LONG nPort); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_PlaySound(int nPort);

        
/// <summary>
        
/// 关闭声音
        
/// 
        
/// 15.BOOL  Hik_PlayM4_StopSound(); 
        
/// </summary>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_StopSound();

        
/// <summary>
        
/// 打开流接口(类似打开文件)
        
/// 
        
/// 16.BOOL  Hik_PlayM4_OpenStream(LONG nPort,PBYTE pFileHeadBuf,DWORD nSize,DWORD nBufPoolSize); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <param name="pFileHeadBuf">用户从卡上得到的文件头数据。</param>
        
/// <param name="nSize">文件头长度。</param>
        
/// <param name="nBufPoolSize">设置播放器中存放数据流的缓冲区大小。范围是SOURCE_BUF_MIN~ SOURCE_BUF_MAX。 </param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_OpenStream(int nPort, IntPtr pFileHeadBuf, ushort nSize, ushort nBufPoolSize);


        
/// <summary>
        
/// 输入从卡上得到的流数据;打开流之后才能输入数据。
        
/// 
        
/// 17.BOOL  Hik_PlayM4_InputData(LONG nPort,PBYTE pBuf,DWORD nSize); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <param name="pBuf">缓冲区地址</param>
        
/// <param name="nSize">缓冲区大小</param>
        
/// <returns>TURE,表示已经输入数据。FALSE 表示失败,数据没有输入。</returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_InputData(int nPort, IntPtr pBuf, ushort nSize);

        
/// <summary>
        
/// 关闭数据流
        
/// 
        
/// 18.BOOL  Hik_PlayM4_CloseStream(LONG nPort); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern bool Hik_PlayM4_CloseStream(int nPort);

        
/// <summary>
        
/// 测试播放器需要的一些系统功能 
        
///    注意:如果显卡支持上面列出的显示功能,将会大大降低CPU利用率。解码后的图像是352*288(PAL)
        
///    大小,如果显卡不支持放大缩小,则建议显示窗口也使用352*288。 
        
/// 
        
/// 19.int    Hik_PlayM4_GetCaps(); 
        
/// </summary>
        
/// <returns>
        
/// 1~8位分别表示以下信息(位与是TRUE表示支持): 
        
///    SUPPORT_DDRAW   支持DIRECTDRAW;如果不支持,则播放器不能工作。 
        
///    SUPPORT_BLT          显卡支持BLT操作;如果不支持,则播放器不能工作。 
        
///    SUPPORT_BLTFOURCC   显卡BLT支持颜色转换;如果不支持,播放器会使用软件方式作RGB转换。
        
///    SUPPORT_BLTSHRINKX 显卡BLT支持X轴缩小;如果不支持,系统使用软件方式转换。
        
///    SUPPORT_BLTSHRINKY   显卡BLT支持Y轴缩小;如果不支持,系统使用软件方式转换。 
        
///    SUPPORT_BLTSTRETCHX 显卡BLT支持X轴放大;如果不支持,系统使用软件方式转换。
        
///    SUPPORT_BLTSTRETCHY  显卡BLT支持Y轴放大;如果不支持,系统使用软件方式转换。 
        
///    SUPPORT_SSE           CPU支持SSE指令,Intel Pentium3以上支持SSE指令; 
        
///    SUPPORT_MMX    CPU支持MMX指令集。 
        
/// 
        
/// </returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern int Hik_PlayM4_GetCaps();

        
/// <summary>
        
/// 得到文件总的时间长度,单位秒
        
/// 
        
/// 20.DWORD  Hik_PlayM4_GetFileTime(LONG nPort); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern int Hik_PlayM4_GetFileTime(int nPort);



        
/// <summary>
        
/// 得到文件当前播放的时间,单位秒
        
/// 
        
/// 21. DWORD  Hik_PlayM4_GetPlayedTime(LONG nPort); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern ushort Hik_PlayM4_GetPlayedTime(int nPort);

        
/// <summary>
        
/// 得到已经解码的视频帧数
        
/// 
        
/// 22.DWORD  Hik_PlayM4_GetPlayedFrames(LONG nPort); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]
        
public static extern ushort Hik_PlayM4_GetPlayedFrames(int nPort);

        
/// <summary>
        
/// 单帧播放。要恢复正常播放调用Hik_PlayM4_Play()
        
/// 
        
/// 23.BOOL  Hik_PlayM4_OneByOne(LONG nPort); 
        
/// </summary>
        
/// <param name="nPort"></param>
        
/// <returns></returns>
        [DllImport("HikPlayM4.dll")]

        public static extern bool Hik_PlayM4_OneByOne(int nPort);



本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/586641,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
科技小先锋
+ 关注