海康播放库编程指南 ver 6.1.1.0

这是一份详细的海康播放库编程指南,涵盖了多个版本的更新内容,包括支持多屏显示的自适应、解码模块的整合和动态库形式的独立。指南还介绍了播放库的初始化、文件打开、播放控制、显示方式、音量设置、回调函数、系统功能测试等功能,以及各种播放状态和数据处理的接口。此外,还涉及了硬件支持、性能优化和错误处理等方面。
摘要由CSDN通过智能技术生成
特别声明:  如果用户使用超线程的cpu 解码,请使用我们播放器3.4及其以上版本,否则会出现花屏。  
版本说明:(ver 6.1.1.0)  
      更新:1、支持多屏显示的自适应。  
2、PlayM4_GetFileSpecialAttr、PlayM4_GetOriginalFrameCallBack不再支持,相
关功能由其他库实现。
     
 
版本说明:(ver 6.0.0.1)  
      更新:1、最多支持500路解码,取消100路限制。
   2、将解码模块重新整合进播放库,形成单Dll。
    
版本说明:(ver 5.0 )  
更新:1 、将解码模块以动态库的形式独立出来,在解码过程中根据实际需要动态加载。
 
版本说明:(ver 4.9 )  
更新:1 、增加PlayM4_GetPort ( )  和 PlayM4_FreePort ( ),分别用于获取未使用的播放器通
道号和释放已使用的通道号。  
2 、增加对标准MPEG4码流的支持。
3 、增加密钥设置接口PlayM4_SetSecretKey ( )。
4 、增加设置文件播放结束回调接口 PlayM4_SetFileEndCallback ( ) 。
 
 
                                   播放库编程指南
  - 3 -有关显示的说明:播放器的显示部分,主要采用了 DirectDraw  技术。目前使用了两种方式显示画面:1 、
创建使用off_screen  画面并 Blt(位转换货位传输,可做缩放、旋转、镜像等效果)到
主画面;2 、创建使用OVERLAY 画面。这两种方式有以下特点:第一种方式使用
Off_screen 画面,优点:多路播放可以相对对立,相互间不受影响,缺点:受显卡的影
响比较大,如果显卡不支持缩放等操作,当用户需要缩放时(显示窗口和图像原始尺寸
不同时),我们会使用软件方式进行缩放,如果放大CPU 利用率会非常高,我们提供了
一个接口PlayM4_GetCaps,用户可以用它测试你的显卡是否支持 Blt的缩放等操作,表
1 是我们测试过的几款显卡;第二种方式使用 OVERLAY 画面,优点:目前的绝大部分
显卡都支持OVERLAY 画面,OVERLAY 画面支持硬件的缩放,当第一种方式得不到显
卡支持时,使用 OVERLAY 画面可以得到显卡支持,缺点:具有独占性,在一块显卡上
同时只能有一个OVERLAY 画面处于活动状态,因此同时只能有一路播放器使用
OVERLAY 画面,而且如果其他程序正在使用 OVERLAY 画面,那么播放器就不能再使
用OVERLAY 画面了,同样,如果播放器使用了OVERLAY 画面,其他程序也不能再使
用OVERLAY 画面。
 
表1 我们测试过的几款显卡有以下几种(Win2000 下):
显卡型号  显存
(M)
是否支持颜色转

是否支持缩

是否支持放

ATI Rage128  32  是  是  是
ATI Radeon LE  32  是  是  是
ATI Radeon 7200  64  是  是  是
nVidia TNT2 Model64  16和32 是  是  是
nVidia TNT2 Pro  32  是  是  是
Geforce2
Mx,Mx200,Mx400
32  是  是  是
Geforce4 Mx420,Mx440  32  是  是  是
*****************************************************************************
Sis630  16  否  否  否
Sis305  32  是  否  否
 
注意:nVidia  公司显卡需要更新最新的驱动。老的驱动可能不支持缩小功能;其他没有测
试过的显卡,如果在你使用时发现不支持某些播放需要的功能,不妨安装该显卡的最新驱
动试试
                                   播放库编程指南
  - 4 -函数说明:
1、 BOOL PlayM4_InitDDraw(HWND hWnd);
说明:初始化DirectDraw 表面。在使用vb,delphi 开发时请注意,它们生成的对话框具有 WS_CLIPCHILDREN
窗口风格,必须去掉这种风格,否则显示画面会被对话框上的控件覆盖。注意:1.1 版以上不需要调用。
输入参数:hWnd  应用程序主窗口的句柄。
 
2、 BOOL PlayM4_RealeseDDraw();
说明:释放directDraw 表面;注意:1.1版以上不需要调用。
 
3、 BOOL  PlayM4_OpenFile(LONG nPort,LPSTR sFileName);
说明:打开播放文件;
输入参数:sFileName  文件名,文件不能超过4G或小于4K;
 
4、 BOOL PlayM4_CloseFile(LONG nPort);
说明:关闭播放文件;
 
5、 BOOL  PlayM4_Play(LONG nPort, HWND hWnd);
说明:播放开始,播放视频画面大小将根据hWnd 窗口调整,要全屏显示,只要把hWnd 窗口放大到全屏。
如果已经播放,只是改变当前播放速度为正常速度。
输入参数:hWnd  播放视频的窗口句柄。
 
6、 BOOL PlayM4_Stop(LONG nPort);
说明:播放结束
 
7、 BOOL PlayM4_Pause(LONG nPort,DWORD nPause);
说明:播放暂停/ 恢复:
输入参数:nPause=TRUE暂停;否则恢复;
 
8、 BOOL PlayM4_Fast(LONG nPort);
说明:快速播放,每次调用将使当前播放速度加快一倍,最多调用4 次;要恢复正常播放调用 PlayM4_Play
(), 从当前位置开始正常播放;
 
9、 BOOL PlayM4_Slow(LONG nPort);
说明:慢速播放,每次调用将使当前播放速度慢一倍;最多调用4 次;要恢复正常播放调用PlayM4_Play
();
 
10、BOOL PlayM4_SetPlayPos(LONG nPort,float fRelativePos);
说明:设置文件播放指针的相对位置(百分比)。
输入参数:fRelativePos   范围0-100%;
 
11 、float PlayM4_GetPlayPos(LONG nPort);
说明:获得文件播放指针的相对位置;
返回值:范围0-100%
 
12、BOOL  PlayM4_SetFileEndMsg(LONG nPort,HWND hWnd,UINT nMsg);
说明:设置文件结束时要发送的消息;从2.4 版开始,当文件播放完时,解码线程将不会自动结束,需要
                                   播放库编程指南
  - 5 -用户做停止工作:应用程序在收到这个消息后要调用播放结束函数PlayM4_Stop(nPort) 。
输入参数:hWnd  消息发送的窗口。
nMsg  用户自定义的输入的消息;当播放到文件结束时用户从hWnd 窗口过程中收到这个消息。
此消息函数中的wParam参数返回nPort的值。
 
13、BOOL PlayM4_SetVolume(LONG nPort,WORD nVolume);
说明:设置音量;可以在播放之前设置,返回值是 FALSE ,但设置的值被保存,并作为启动声音时的初始
音量;
输入参数:nVolume  音量的值,范围0-0XFFFF;
 
14.BOOL PlayM4_PlaySound(LONG nPort);
说明:打开声音;同一时刻只能有一路声音。如果现在已经有声音打开,则自动关闭原来已经打开的声音。
注意:默认情况下声音是关闭的!
 
15.BOOL PlayM4_StopSound();
说明:关闭声音;
 
16 .BOOL  PlayM4_OpenStream(LONG nPort,PBYTE pFileHeadBuf,DWORD
nSize,DWORD nBufPoolSize);
说明:打开流接口(类似打开文件);
输入参数:pFileHeadBuf 用户从回调中得到的文件头数据。
          nSize  文件头长度。
          nBufPoolSize  设置播放器中存放数据流的缓冲区大小。范围是 SOURCE_BUF_MIN~
SOURCE_BUF_MAX。该值过小会导致无法解码,建议标清设备该值大于等于200*1024,高清设备大于
等于600*1024 。
 
17.BOOL PlayM4_InputData(LONG nPort,PBYTE pBuf,DWORD nSize);
说明:输入从卡上得到的流数据;打开流之后才能输入数据。
输入参数:pBuf  缓冲区地址;
          nSize缓冲区大小
返回值:TURE, 表示已经输入数据。FALSE 表示失败,数据没有输入;
 
18. BOOL  PlayM4_CloseStream(LONG nPort);
说明:关闭数据流;
 
19.int PlayM4_GetCaps();
说明:测试播放器需要的一些系统功能;
返回值: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 轴放大;如果不支持,系统使用软件方式转换。
                                   播放库编程指南
  - 6 -SUPPORT_SSE           CPU支持SSE 指令,Intel Pentium3 以上支持SSE 指令;
SUPPORT_MMX    CPU 支持MMX指令集。
注意:如果显卡支持上面列出的显示功能,将会大大降低CPU 利用率。解码后的图像是352*288(PA L )
大小,如果显卡不支持放大缩小,则建议显示窗口也使用352*288 。
 
20.DWORD PlayM4_GetFileTime(LONG nPort);
说明:得到文件总的时间长度,单位秒,不支持对文件的数据追加;
 
21.DWORD PlayM4_GetPlayedTime(LONG nPort);
说明:得到文件当前播放的时间,单位秒;
 
22.DWORD  PlayM4_GetPlayedFrames(LONG nPort);
说明:得到已经解码的视频帧数;
 
23.BOOL PlayM4_OneByOne(LONG nPort);
说明:单帧播放。要恢复正常播放调用PlayM4_Play();
 
24.BOOL  PlayM4_SetDecCallBack(LONG nP ort,void (CALLBACK * DecCBFun)(long
nPort,char * pBuf,long nSize,FRAME_INFO * pFrameInfo, long nReserved1,long
nReserved2));
说明:设置回调函数,替换播放器中的显示部分,有用户自己控制显示,该函数在 PlayM4_Play 之前调
用,在PlayM4_Stop 时自动失效,下次调用PlayM4_Play 之前需要重新设置。注意解码部分
不控制速度,只要用户从回调函数中返回,解码器就会解码下一部分数据。这个功能的使用需要用
户对视频显示和声音播放有足够的了解,否则请慎重使用,有关知识请参阅directx 开发包。
输入参数:DecCBFun 回调函数指针,不能为NULL;  
回调函数中的参数说明:
         nPort  播放器通道号。
         pBuf  解码后的音视频数据。
        nSize 解码后的音视频数据 pBuf的长度;
         pFrameInfo  图像和声音信息。详见下。
         nReserved1 ,nReserved2 保留参数。
结构说明:
typedef struct{
   long nWidth;  // 画面宽,单位像素。如果是音频数据则为 0 ;
   long nHeight;  // 画面高。如果是音频数据则为 0 ;
   long nStamp;  // 时标信息,单位毫秒。
   long nType;  // 数据类型,T_AUDIO16,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值