首页 Hikvision_H264播放器编程指南V4.9

Hikvision_H264播放器编程指南V4.9

举报
开通vip

Hikvision_H264播放器编程指南V4.9 HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 1 - HikVision H264 播放器编程指南 版本 4.9 2008-06-13 ...

Hikvision_H264播放器编程指南V4.9
HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 1 - HikVision H264 播放器编程指南 版本 4.9 2008-06-13 HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 2 - 特别声明: 如果用户使用超线程的 cpu 解码,请使用我们播放器 3.4 及其以上版本,否则会出现花屏。 版本说明:(ver 4.9) 更新:1、增加 PlayM4_GetPort ( ) 和 PlayM4_FreePort ( ),分别用于获取未使用的播放器通 道号和释放已使用的通道号。 2、增加密钥设置接口 PlayM4_SetSecretKey ( )。 3、增加设置文件播放结束回调接口 PlayM4_SetFileEndCallback ( )。 版本说明:(ver 4.8) (build0813) 更新:1、增加抓图函数 PlayM4_GetBMP()和 PlayM4_GetJPEG()用于修正在暂停状态 下无法抓图的 bug;这两个函数在播放时可以随时调用。 2、增加是否跳帧函数,在帧号不连续时是否跳下一个 I 帧播放,默认情况下是跳下一 个 I 帧播放。 3、增加解码回调函数 PlayM4_SetDecCallBackMend(), 和以前解码回调函数区别在于 增加了用户传递参数。 版本说明:(ver 4.7) (build0711) 更新:1、用于抓图存为 Jpeg 的函数 PlayM4_ConvertToJpegFile()和设置 Jpeg 图像质量的 函数 PlayM4_SetJpegQuality(); 2、增加了一种错误宏类型 PLAYM4_JPEG_COMPRESS_ERROR, 主要用于表明抓图 存为 Jpeg 格式时, 进行 Jpeg 压缩出错的返回. 3、增加了设置是否去闪烁接口函数 PlayM4_SetDeflash(); 版本说明:(ver 4.6) (build1013) 修正 bug:NTSC 制式下抓图失败; 硬盘空间不足时抓图失败; (build0728) 更新:优化了播放器 SDK 解码性能,降低播放器正常播放和快速播放文件时的 CPU 利用率; 配合 HC 卡 4.0 版本发布,解码库版本升级,同时修正了旧版本中存在的一两个小 bug; 版本说明:(ver 4.5) (build0407) 更新:修正了上一版本调用函数 PlayM4_SetPicQuality()时,在某些显卡上出现花屏的 bug; (build0303) 增 加 : 1 、 用 于 文 件 拼 接 的 两 个 函 数 PlayM4_GetOriginalFrameCallBack ( ) 和 PlayM4_GetFileSpecialAttr(); 更新:配合 HC 卡 3.2 版本发布,解码库升级,新版本向下兼容,可以解以前的码流,而老 的解码库不能解 HC 卡 3.2 及以后版本的录象文件; 版本说明:(ver 4.3) (build0901) 增加:1、增加解码时图象格式发生改变通知用户的回调函数,用户可以改变界面大小; 2、增加获取/调节视频参数接口,在回放时可以调节亮度、对比度、饱和度、色调等 HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 3 - 参数,以获得更好的播放效果; 3、播放器的 DEMO 中增加了将解码后的 YUV 数据直接转成 AVI 格式文件的功能, 注意目前只能对视频数据进行处理,转换后的 AVI 文件占用磁盘空间很大,一秒钟的数据量 有 3.6M 左右,要转换的文件时间长度不要超过 500 秒,回放转换后的 AVI 文件需要安装 DivX5.2 版本的插件。 版本说明:(ver 4.3) (build0626) 更新:修正了通过网络客户端显示图象时可能出现马赛克的问题; 修正了上一版本用文件长度方式检索时可能出现的 BUG; 版本说明:(ver 4.2) (build0616) 更新:支持图像格式的动态改变,如从 4CIF 到 CIF,播放器自动识别,不用重新启动。 修改 PlayM4_SetVerifyCallBack( )函数,可以检测文件丢帧或丢数据 版本说明:(ver 4.0) (build0420) 更新:支持 4CIF 格式的解码,改正了在用户回调解码退出时可能出现的错误。 版本说明:(ver 3.6) (build 1230) 更新:支持图像格式的动态改变,如从 CIF 到 QCIF,播放器自动识别,不用重新启动。 增加:1、另外一个调整音量的接口(82) 2、水印校验接口(83); 3、解码后的音频数据回调,用户可用来分析音频数据(84)。 版本说明:(ver 3.4) (build 0626) 更新:最多支持 100 路解码器,取消 16 路限制。 增加:1、Set/Get 使用的定时器(78~79); 2、Reset/Get 播放器使用的缓冲区(80~81); 版本说明:(ver 3.2) (build 0430) 增加:1、音视频流分开解码(71~74) 2、在使用 off-screen 表面时,获得设备上下文,可以在显示窗口打标记。Overlay 表 面不需要这样做,可直接在窗口上打标记。(75) 3、获取和设置索引信息(76-77) 版本说明:(ver 3.0) (build 0325) 增加:1、支持 DS-400XH 系列板卡生成的码流。 2、可设置最多 4 个显示区域,支持局部显示(可实现局部放大)。(68~70) 3、可以设置解码回调的流类型。(67) 修改: 1、改正原来解码回调只回调 I 帧的 BUG。 2、改正 QCIF 并且 NTSC 模式下,文件不能会放。 版本说明:(ver 2.5) HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 4 - (build 1118) 修改:PlayM4_OpenStream 有时失败,返回错误值 PLAYM4_SYS_NOT_SUPPORT. (build 1115) 增加:(65~66) 1. 设置显示模式(65~66) 修改: 1.修改了在使用中发现的一些 bug。 版本说明:(ver 2.4) (build 0911) 增加:(42~63) 1、获得更多信息接口(42~46); 2、流模式下控制源缓冲区接口(47~59); 3、控制播放缓冲接口(51~52); 4、文件准确定位及单帧回退接口,需要一定的时间生成索引(53~57); 5、可以抽帧播放,减小 CPU 利用率;(58) 6、多显卡支持(59~64); 更新: 1、播放器效率大幅提高,在 Pentinum4 1.5GHZ 下可同时播放 9 路复杂图像视频。简单图像的 情况下,可以支持更多路。在多路播放情况下,需要显卡支持硬件缩放。 2、在文件回放到文件尾时,不再强制退出,而有用户决定。 3、获得的当前时间和帧号不再反映解码时状态,而是反映播放时状态。更符合用户习惯。 4、调整快放和慢放范围,可以连续调用 4 次,即播放速度可以设置 16 倍速(实际速度视系统 性能而定)。 5、支持只有 MMX 指令集的 CPU(如 Pentium II ) . 6、可定位到文件最后一帧。 修改: 1、在显卡不支持硬件缩放抓图时,图片数据错误。 版本说明:(ver 2.2) (build 0703) 增加:(35-41) 获得错误码接口 PlayM4_GetLastError; 刷新显示接口 PlayM4_RefreshPlay; 获得图像大小接口 PlayM4_GetPictureSize; 设置 OVERLAY 模式显示接口 PlayM4_SetOverlayMode 设置图像质量接口 PlayM4_SetPicQuality 共享方式打开声音接口 PlayM4_PlaySoundShare; 共享方式关闭声音接口 PlayM4_StopSoundShare 更新:在暂停时可以单帧播放; 在 STREAM_FILE 模式下增加了暂停,快放,慢放,单帧播放操作。 当显卡不支持 BLT 缩放时,采用软件方法,但占用 CPU 资源很高。 修改:在复合流抽帧情况下,播放速度正常(前一版本播放速度太快)。 版本说明:(ver 2.0) (build 0607) 更新:提高了图像质量,消除了色斑; HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 5 - (build 0605) 增加:抓图; 用户可以控制解码后音视频数据; 设置流播放模式(实时和文件模式); 获得当前播放时间(单位毫秒); 设置当前播放位置到指定时间; 获得文件中的总帧数和当前解码的帧号; 获得当前帧率; 获得当前版本号; 支持 QCIF 格式播放。 更新:流播放的实时性和流畅性提高,播放器性能提高; 版本说明:(ver1.11) 修改在非 VC++开发时死机问题。 版本说明:(ver 1.1) 播放器支持多路播放(根据主机资源定,以后我们效率会继续提高,现在在 Pentinum4 下支 持 4 路)最大支持 16 路。增加了流接口和一些其他功能。注意:CPU 必须是 Intel Pentium 3 以上。初始化和释放 DirectDraw 表面的接口不再需要,每路可以相互独立。 版本说明:(ver 1.0) 目前此播放器 sdk 只支持一路播放,输入参数 nPort 必须是 0,以后会增加支持多路的播放。 目前此播放器的声音部分可能有不流畅的情况,以后我们会改进。此播放器使用了显卡的某 些功能,所以如果不能显示图像,请尝试以下操作:1)把屏幕颜色值设为 32 位。2)更换 显卡(建议 ATI 系列,因为 ATI 系列显卡对图形处理比较好)。 技术支持:如果发现本 SDK 中存在什么问题或对我们有什么要求请与我们联系 Email: hkvs@hikvision.com 电话:0571-88075998 /88081125 HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 6 - 有关显示的说明:播放器的显示部分,主要采用了 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 公司显卡需要更新最新的驱动。老的驱动可能不支持缩小功能;其他没有测 试过的显卡,如果在你使用时发现不支持某些播放需要的功能,不妨安装该显卡的最新驱 动试试 HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 7 - 函数说明: 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); HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 8 - 说明:设置文件结束时要发送的消息;从 2.4 版开始,当文件播放完时,解码线程将不会自动结束,需要 用户做停止工作:应用程序在收到这个消息后要调用播放结束函数 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。 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 轴放大;如果不支持,系统使用软件方式转换。 HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 9 - SUPPORT_BLTSTRETCHY 显卡 BLT 支持 Y 轴放大;如果不支持,系统使用软件方式转换。 SUPPORT_SSE CPU 支持 SSE 指令,Intel Pentium3 以上支持 SSE 指令; SUPPORT_MMX CPU 支持 MMX 指令集。 注意:如果显卡支持上面列出的显示功能,将会大大降低 CPU 利用率。解码后的图像是 352*288(PAL) 大小,如果显卡不支持放大缩小,则建议显示窗口也使用 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 nPort,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,T_RGB32, T_YV12,详见宏定义说明。 long nFrameRate;//编码时产生的图像帧率。 }FRAME_INFO; 宏定义说明: T_AUDIO16 音频数据;采样率 16khz,单声道,每个采样点 16 位表示。 T_RGB32 视频数据。每个像素 4 个字节,排列方式与位图相似,“B-G-R-0 ……”,第一个像素位于 图像左下角。 T_UYVY 视频数据,uyvy 格式。“U0-Y0-V0-Y1-U2-Y2-V2-Y3….”,第一个像素位于图像左上角。 HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 10 - T_YV12 视频数据,yv12 格式。排列顺序“Y0-Y1-……”,“V0-V1….”,“U0-U1-…..”。 关于图像格式详细信息,用户可以查阅相关资料。 25 . BOOL PlayM4_SetDisplayCallBack(LONG nPort,void (CALLBACK* DisplayCBFun)(long nPort,char * pBuf,long nSize,long nWidth,long nHeight,long nStamp,long nType,long nReceaved)); 说明:设置抓图回调函数;注意要尽快返回,如果要停止回调,可以把回调函数指针 DisplayCBFun 设 为 NULL。一旦设置回调函数,则一直有效,直到程序退出。该函数可以在任何时候调用。 输入参数:DisplayCBFun 抓图回调函数。可以为 NULL; 回调函数参数说明: nPort 通道号。 pBuf 返回图像数据; nSize 返回图像数据大小。 nWidth 画面宽,单位像素。 nHeigh 画面高。 nStamp 时标信息,单位毫秒。 nType 数据类型, T_YV12,T_RGB32,T_UYVY,详见宏定义说明。 nReceaved 保留。 26.BOOL PLayM4_ConvertToBmpFile(char * pBuf,long nSize,long nWidth,long nHeight,long nType,char *sFileName); 说明:将抓图得到的图像数据保存成 BMP 文件。转换函数占用的 cpu 资源,如果不需要保存图片,则不要 调用; 输入参数; pBuf, nSize,nWidth,nHeight, nType 同抓图回调函数中的参数。 sFileName 要保存的文件名。最好以 BMP 作为文件扩展名。 27.DWORD PlayM4_GetFileTotalFrames(LONG nPort); 说明:得到文件中的总帧数。 返回值:文件中的总帧数。 28.DWORD PlayM4_GetCurrentFrameRate(LONG nPort); 说明:得到当前码流中编码时的帧率。 返回值:当前码流中编码时的帧率。 29.DWORD PlayM4_GetPlayedTimeEx(LONG nPort); 说明:得到文件当前播放的时间,单位毫秒; 30.BOOL PlayM4_SetPlayedTimeEx(LONG nPort,DWORD nTime); 说明:根据时间设置文件播放位置,此接口比 PlayM4_SetPlayPos 费时,但如果用时间来控制播放进度条 (与 PlayM4_GetPlayedTime(Ex)配合使用),那么可以使进度条平滑滚动。 输入参数: nTime 设置文件播放位置到指定时间。单位毫秒。 31.DWORD PlayM4_GetCurrentFrameNum(LONG nPort); HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 11 - 说明:得到当前播放的帧序号,。而 PlayM4_GetPlayedFrames 是总共解码的帧数。如果文件播放位置不被 改变,那么这两个函数的返回值应该非常接近,除非码流丢失数据。 32.BOOL PlayM4_SetStreamOpenMode(LONG nPort,DWORD nMode); 说明:设置流播放的模式。必须在播放之前设置。 参数:nMode,STREAME_REALTIME 实时模式(默认),STREAME_FILE 文件模式。 宏定义说明: STREAME_REALTIME 实时模式,适合播放网络实时数据,解码器会立刻解码。 STREAME_FILE 文件模式,适合用户把文件数据用流方式输入;注意:当 PlayM4_InputData() 返回 FALSE 时,用户要等一下重新输入。 注意:2.2 版以后可以做暂停,快放,慢放,单帧播放操作。 33.DWORD PlayM4_GetFileHeadLength(); 说明:得到当前版本播放器能播放的文件的文件头长度。 主要应用在流播放器的 STREAME_FILE 模式下。 以便读出文件头作为 PlayM4_OpenStream()的输入参数。 返回值:此版本播放器对应的文件头的长度。 例如: CFile m_TestFile; void Start() { //获得文件头长度; DWORD nLength= PlayM4_GetFileHeadLength(); PBYTE pFileHead=new BYTE[nLength]; //打开文件; m_TestFile.Open("test.mp4 ", CFile::modeRead,NULL); m_TestFile.Read(pFileHead,nLength); //设置模式 PlayM4_SetStreamOpenMode(0,STREAME_FILE); //打开流接口 if(!PlayM4_OpenStream(0,pFileHead, nLength,1024*100)) { m_strPlayFileName=""; MessageBox("文件打不开"); } //播放 m_bPlaying = PlayM4_Play( 0, m_hWnd); delete []pFileHead; } /////////////////////////////////////////////////////////////////////////////// void InputData() { BYTE pBuf[4096]; m_TestFile.Read(pBuf,sizeof(pBuf)); while(!PlayM4_InputData(0,pBuf,sizeof(pBuf))) { HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 12 - if(!m_bPlaying) break;//如果已经停止播放,则退出; TRACE("SLEEEP \n"); Sleep(5); } } 34.DWORD PlayM4_GetSdkVersion(); 说明:得到当前播放器 sdk 的版本号和 build 号。如果只是修改 bug,我们只升级 build 号。 返回值:高 16 位表示当前的 build 号。9~16 位表示主版本号,1~8 位表示次版本号。如:返回值 0x06040105 表示:build 号是 0604,版本号 1.5。 35.DWORD PlayM4_GetLastError(LONG nPort) 说明:获得当前错误的错误码。用户应该在调用某个函数失败时,调用此函数以获得错误的详细信息。 返回值:错误码详见宏定义。 宏定义说明: PLAYM4_NOERROR 没有错误; PLAYM4_PARA_OVER 输入参数非法; PLAYM4_ORDER_ERROR 调用顺序不对; PLAYM4_TIMER_ERROR 多媒体时钟设置失败; PLAYM4_DEC_VIDEO_ERROR 视频解码失败; PLAYM4_DEC_AUDIO_ERROR 音频解码失败; PLAYM4_ALLOC_MEMORY_ERROR 分配内存失败; PLAYM4_OPEN_FILE_ERROR 文件操作失败; PLAYM4_CREATE_OBJ_ERROR 创建线程事件等失败; PLAYM4_CREATE_DDRAW_ERROR 创建 directDraw 失败; PLAYM4_CREATE_OFFSCREEN_ERROR 创建后端缓存失败; PLAYM4_BUF_OVER 缓冲区满,输入流失败; PLAYM4_CREATE_SOUND_ERROR 创建音频设备失败; PLAYM4_SET_VOLUME_ERROR 设置音量失败; PLAYM4_SUPPORT_FILE_ONLY 只能在播放文件时才能使用此接口; PLAYM4_SUPPORT_STREAM_ONLY 只能在播放流时才能使用此接口; PLAYM4_SYS_NOT_SUPPORT 系统不支持,解码器只能工作在 Pentium 3 以上; PLAYM4_FILEHEADER_UNKNOWN 没有文件头; PLAYM4_VERSION_INCORRECT 解码器和编码器版本不对应; PALYM4_INIT_DECODER_ERROR 初始化解码器失败; PLAYM4_CHECK_FILE_ERROR 文件太短或码流无法识别; PLAYM4_INIT_TIMER_ERROR 初始化多媒体时钟失败; PLAYM4_BLT_ERROR 位拷贝失败; PLAYM4_UPDATE_ERROR 显示 overlay 失败; 36.BOOL PlayM4_RefreshPlay(LONG nPort) 说明:刷新显示。当用户暂停时如果刷新了窗口,则窗口中的图像因为刷新而消失,此时调用这个接口可 以重新把图像显示出来。只有在暂停和单帧播放时才会执行, 其它情况会直接返回。 HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 13 - 37.BOOL PlayM4_SetOverlayMode(LONG nPort,BOOL bOverlay,COLORREF colorKey) 说明:设置 OVERLAY 模式显示画面。在一块显卡中同一时刻只能有一个 OVERLAY 表面处于活动状态, 如果此时系统中已经有程序使用了 OVERLAY,那么播放器就不能再创建 OVERLAY 表面,它将自 动改用 Off_Screen 表面,并不返回 FALSE。一些常用的播放器,以及我们卡的预览都可能使用了 overlay 表面。同样,如果播放器使用了 OVERLAY 表面,那么,其他的程序将不能使用 OVERLAY 表面,特别注意,我们的卡在预览时可能也要使用 OVERLAY(用户可设置),如果先打开播放器(并 且使用了 OVERLAY),再启动预览,那么预览可能因为得不到 OVERLAY 而失败。使用 OVERLAY 模式的优点是:大部份的显卡都支持 OVERLAY,在一些不支持 BLT 硬件缩放和颜色转换的显卡上 (如 SIS 系列显卡)使用 OVERLAY 模式(OVERLAY 模式下的缩放和颜色转换由显卡支持),可以大 大减小 cpu 利用率并提高画面质量(相对于软件缩放和颜色转换)。缺点是:只能有一路播放器使用。 该设置必须在 PLAY 之前使用,而且需要设置透明色。 输入参数: bOverlay 如果为 TRUE,表示将首先尝试使用 OVERLAY 模式,如果不行再使用其他模式。如果为 FALSE, 则不进行 OVERLAY 模式的尝试。 colorKey 用户设置的透明色,透明色相当于一层透视膜,显示的画面只能穿过这种颜色,而其他的颜色将 挡住显示的画面。用户应该在显示窗口中涂上这种颜色,那样才能看到显示画面。一般应该使 用一种不常用的颜色作为透明色。这是一个双字节值 0x00rrggbb,最高字节为 0,后三个字节分 别表示 r,g,b 的值。 38. BOOL PlayM4_GetPictureSize(LONG nPort,LONG *pWidth,LONG *pHeight); 说明:获得码流中原始图像的大小,根据此大小来设置显示窗口的区域,可以不用显卡做缩放工作,对于 那些不支持硬件缩放的显卡来说非常有用。 输出参数: pWidth 原始图像的宽。在 PAL 制 CIF 格式下是 352。 pHeight 原始图像的高。在 PAL 制 CIF 格式下是 288。 39.BOOL PlayM4_SetPicQuality(LONG nPort,BOOL bHighQuality); 说 明:设置图像质量,当设置成高质量时画面效果好,但 CPU 利用率高。在支持多路播放时,可以 设为低质量,以降低 CPU 利用率;当某路放大播放时将该路设置成高质量,以达到好的画面效 果。 输入参数:bHighQuality 等于 1 时图像高质量,等于 0 时低质量(默认值)。 40.BOOL PlayM4_PlaySoundShare(LONG nPort); 说 明:以共享方式播放声音,只管播放本路声音而不去关闭其他路的声音。注意:WIN98 及其之前 版本操作系统不支持创建多个声音设备。如果声卡已经被使用,那么此函数将返回 FALSE。 41.BOOL PlayM4_StopSoundShare(LONG nPort); 说 明:以共享方式关闭声音。Playm4_PlaySound 和 PlayM4_StopSound 是以独占方式播放声 音的。注意:在同一个进程中,所有通道必须使用相同的方式播放或关闭声音。 以下为 2.4 版新增接口 42. LONG PlayM4_GetStreamOpenMode(LONG nPort); HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 14 - 说 明:获得流模式类型。 返 回 值:STREAME_REALTIME 或 STREAME_FILE; 43.LONG PlayM4_GetOverlayMode(LONG nPort); 说 明:检查当前播放器是否使用了 OVERLAY 模式; 返 回 值:0,表示没有使用 OVERLAY;1 表示使用了 OVERLAY 表面。 44.COLORREF PlayM4_GetColorKey(LONG nPort); 说 明:获得 OVERLAY 表面使用的透明色; 返 回 值:颜色值; 45.WORD PlayM4_GetVolume(LONG nPort); 说 明:获得当前设置的音量。 返 回 值:音量值。 46.BOOL PlayM4_GetPictureQuality(LONG nPort,BOOL *bHighQuality); 说 明:获得当前图像质量 输出参数:bHighQuality 1 表示高质量,0 表示低质量。 47.DWORD PlayM4_GetSourceBufferRemain(LONG nPort); 说 明:获得流播放模式下源缓冲剩余数据; 返 回 值:当前源缓冲的大小(BYTE)。 48.BOOL PlayM4_ResetSourceBuffer(LONG nPort); 说 明:清除流播放模式下源缓冲区剩余数据 49 . BOOL PlayM4_SetSourceBufCallBack(LONG nPort,DWORD nThreShold,void (CALLBACK * SourceBufCallBack)(long nPort,DWORD nBufSize,DWORD dwUser,void*pResvered),DWORD dwUser,void *pReserved); 说 明:设置源缓冲区阀值和剩余数据小于等于阀值时的回调函数指针。 输入 参数:nThreShold 阀值。 SourceBufCallBack 回调函数指针; dwUser 用户数据; pReserved 保留数据; 回调函数声明: void CALLBACK SourceBufCallBack(long nPort,DWORD nBufSize, DWORD dwUser,void*pContext) 参 数:nPort 播放器通道号。 nBufSize 缓冲区中剩余数据; dwUser 用户数据; pResvered 保留数据; 50.BOOL PlayM4_ResetSourceBufFlag(LONG nPort); 说 明:重置回调标志位为有效状态。流模式下源缓冲到达阀值时(如果用户设置了回调函数)不一 定会回调,用户需要重置回调标志位后才能回调。而且每次回调后标志位都被设为无效,用户可以 在适当的时候重置回调标志,这个接口的主要目的是防止重复回调(数据在阀值附近摆动因为用户 HikVision H264 播放器编程指南 杭州海康威视数字技术有限公司版权所有 Copyright(C)HangZhou Hikvision Digital Technology Co,.Ltd 2002-2008. All rights reserved. - 15 - 输入数据时,播放器也在读走数据)。初始化状态下,回调标志位是有效的。 51.BOOL PlayM4_SetDisplayBuf(LONG nPort,DWORD nNum); 说 明:设置播放缓冲区(即解码后的图像缓冲区)大小;这个缓冲区比较重要,他直接影响播放的 流畅性和延时性。在一定范围内缓冲越大越流畅,同时延时越大。在播放文件时用户最好可以考 虑开大缓冲(如果内存足够大),我们的默认值是 15(帧),在 25 帧/秒的情况下即 0.6 秒的数据。 在播放流时我们的默认值是 10(帧),如果用户追求最大延时最小,可以考虑试当减小这个值。 输入参数:nNum 播放缓冲区最大缓冲帧数。范围:MIN_DIS_FRAMES ~MAX_DIS_FRAMES。一帧 352*288 图像的所需内存最小值是 352*288*3/2 大约 150K 。最大值是 352*288*4 大约 405K。 宏定义: MIN_DIS_FRAMES 播放缓冲最小值 MAX_DIS_FRAMES 播放缓冲最大值 52.DWORD PlayM4_GetDisplayBuf(LONG nPort); 说 明:获得播放缓冲区最大缓冲的帧数; 返 回 值:播放缓冲区最大缓冲帧数。
本文档为【Hikvision_H264播放器编程指南V4.9】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_465987
暂无简介~
格式:pdf
大小:278KB
软件:PDF阅读器
页数:27
分类:互联网
上传时间:2012-12-25
浏览量:196