1、大华播放SDK开发手册大华播放SDK编程手册VERSION3.28.2(Build100129)2010-01-29版权所有XX前言非常感谢您使用我们公司的设备,我们将为您提供最好的服务。本手册可能包含技术上不准确的地方或印刷错误,欢迎指正。我们将会定期更新手册的内容。修订记录日期修订内容修订者2010-1-29添加接口:PLAY_SetFileRefCallBackExPLAY_GetRealFrameBitRate金志贤2010-1-22添加接口:PLAY_SetVisibleDecCallBack;PLAY_CatchResizePic金志贤2009-10-26添加接口说明:PLAY_G
2、etFreePort,PLAY_ReleasePort;PLAY_VerticalSyncEnable;PLAY_GetPicBMP,PLAY_GetPicJPEG;添加媒体信息获取指令:PLAY_CMD_GetMediaInfo金志贤2009-8-14整理文档,修改文档版式,添加接口说明金志贤2009-07-15整理文档,增加对最新接口的说明张博2008-03-25整理文档,修改多显卡及设置高画质接口的定义周国锋2007-10-16整理文档周国锋、陈琼施2007-9-3增加对最新接口的说明王兰君2006-12-27整理文档周国锋、陈琼施2006-12-18创建冯江、周国锋1简介 61.1概述
3、 61.2适用性 62设计原则 62.1典型调用 62.2编程补充说明 103数据结构定义 113.1宏定义 113.2媒体信息结构 143.3帧信息结构 144接口定义 154.1通道控制 154.2播放文件 164.3播放流数据 174.4回放控制 214.5音频控制 224.6数据回调 244.7消息回调 294.8函数回调 304.9文件索引 334.10文件定位 334.11设置属性 344.12获得属性 394.13多显卡控制 454.14抓图 474.15字符叠加 504.16多区域显示 514.17数据流录像 514.18清缓冲 524.19智能搜索 524.20获得版本号 5
4、34.21获得错误号 544.22其它 54简介概述播放SDK是大华压缩卡和硬盘录像机的配套产品,支持大华所有码流格式以及海思公司的h264码流和ADI的h264码流。本文档详细描述了开发包中各函数实现的功能及接口播放SDK的主要功能有:支持文件或流数据的播放、回放控制(如暂停恢复、快放慢放)、音频控制、流数据录像、多区域显示、按帧序号或按时间定位、数据回调、消息回调、字符叠加、抓图.开发包中包括的文件有:dhplay.dll、dhplay.h、dhplay.lib、底层mpeg4解码库(dllmpeg4.dll)、底层h264解码库dllh264.dll(解大华的h264码流和ADI公司的码
5、流)和海思的h264解码库,包括(AmrDLL.dll、DLLDeinterlace.dll、hi_h264dec_w.dll)。适用性v支持大华所有码流以及ADI的h264码流和海思的h264码流的解码v支持HB、HBE、LB、LBE、GB、GBE、NVS机型码流设计原则设计原则典型调用多显卡初始化初始化多显卡设备PLAY_InitDDrawDevice获取显卡数目PLAY_GetDDrawDeviceTotalNums设置播放窗口使用的显卡PLAY_SetDDrawDevice获取显卡信息PLAY_GetDDrawDeviceInfo获取显卡功能PLAY_GetCapsEx关闭多显卡设备P
6、LAY_RealeseDDraw回调及功能设置设置文件结束消息回调PLAY_SetFileEndMsg设置文件结束函数回调PLAY_SetFileEndCallBack设置图像格式改变消息回调PLAY_SetEncChangeMsg设置图像格式改变函数回调PLAY_SetEncTypeChangeCallBack设置文件索引建立后回调PLAY_SetFileRefCallBack设置流缓冲小于阀值回调PLAY_SetSourceBufCallBack设置数据解码回调PLAY_SetDecCallBackPLAY_SetDecCallBackEx设置数据解码回调同时显示视频PLAY_SetVis
7、ibleDecCallBack设置视频解码回调PLAY_SetDisplayCallBack设置音频解码回调PLAY_SetAudioCallBack设置水印数据回调PLAY_SetVerifyCallBack设置分析数据回调PLAY_SetDemuxCallBack设置文件索引PLAY_SetRefValue设置播放缓冲帧数PLAY_SetDisplayBuf设置overlay模式及关键色PLAY_SetOverlayMode设置流打开模式PLAY_SetStreamOpenMode设置定时器类型PLAY_SetTimerType设置水印数据回调PLAY_SetWaterMarkCallBa
8、ck打开文件或数据流创建文件PLAY_CreateFile打开文件PLAY_OpenFile创建流文件PLAY_CreateStream打开流PLAY_OpenStreamPLAY_OpenStreamEx播放播放开始PLAY_Play各功能操作及信息获取播放声音PLAY_PlaySoundPLAY_PlaySoundShare设置音量PLAY_SetVolume获取音量PLAY_GetVolume关闭声音PLAY_StopSoundPLAY_StopSoundShare开始流数据录像PLAY_StartDataRecord获取空闲的通道号PLAY_GetFreePort释放通道号PLAY_R
9、eleasePort输入流数据PLAY_InputDataPLAY_InputVideoDataPLAY_InputAudioData结束流数据录像PLAY_StopDataRecord重置流缓冲回调标志PLAY_ResetSourceBufFlag快放PLAY_Fast慢放PLAY_Slow暂停PLAY_Pause按帧号定位PLAY_SetCurrentFrameNum按时间定位PLAY_SetPlayedTimeEx按文件偏移定位PLAY_SetPlayPos刷新PLAY_RefreshPlayPLAY_RefreshPlayEx单帧播放PLAY_OneByOne单帧倒放PLAY_OneB
10、yOneBackPLAY_BackOne反向回放PLAY_Back抓图(写文件)PLAY_CatchPicPLAY_CatchPicExPLAY_CatchResizePic抓图(获取图片数据)PLAY_GetPicBMPPLAY_GetPicJPEG清缓冲PLAY_ResetBuffer颜色调整PLAY_SetColor多区域显示PLAY_SetDisplayRegion显示模式设置PLAY_SetDisplayType垂直同步使能PLAY_VerticalSyncEnable调整图象播放的流畅性PLAY_AdjustFluency改变图象播放的帧率PLAY_ChangeRate打开音频采集
11、功能PLAY_OpenAudioRecord关闭音频采集功能PLAY_CloseAudioRecord获取颜色参数PLAY_GetColor获取关键色PLAY_GetColorKey获取当前帧数PLAY_GetCurrentFrameNum获取当前帧率PLAY_GetCurrentFrameRate获取缓冲帧数PLAY_GetDisplayBuf获取显示类型PLAY_GetDisplayType获取当前时间PLAY_GetPlayedTimePLAY_GetPlayedTimeEx获取当前信息状态PLAY_QueryInfo获取总帧数PLAY_GetFileTotalFrames获取总时间PL
12、AY_GetFileTime获取文件偏移PLAY_GetPlayPos获取索引信息PLAY_GetRefValue获取流剩余缓冲PLAY_GetSourceBufferRemain获取流打开模式PLAY_GetStreamOpenMode获取关键帧信息PLAY_GetKeyFramePosPLAY_GetNextKeyFramePos获取OVERLAY模式PLAY_GetOverlayMode获取图像大小PLAY_GetPictureSize获取已播放的桢数PLAY_GetPlayedFrames获取视频实时码率PLAY_GetRealFrameBitRate停止播放停止PLAY_Stop结束
13、关闭创建的文件PLAY_DestroyFile关闭文件PLAY_CloseFile关闭创建的流PLAY_DestroyStream关闭流PLAY_CloseStreamPLAY_CloseStreamEx释放多显卡资源PLAY_ReleaseDDrawDevice可随时调用的函数获取系统功能PLAY_GetCaps转BMP文件PLAY_ConvertToBmpFile获取文件头长度PLAY_GetFileHeadLength获取版本信息PLAY_GetSdkVersion编程补充说明步骤A中的操作用于支持多显卡,目前播放库暂不支持,采用默认的显卡。步骤B中的功能设置操作只能在PLAY_play
14、之前设置一次。如果用户不调用这些函数,播放库会采用默认值,如播放缓冲帧数默认为15帧,默认用overlay显示,默认流打开模式为最实时模式。要使播放SDK能正常工作,步骤C和步骤D是必须的大部分操作集中在步骤E中,即在PLAY_Play和PLAY_Stop之间调用。但其中播放声音的函数PLAY_PlaySound、PLAY_PlaySoundShare可以在PLAY_Play之前调用,以防止部分声音数据不能播放,这在播放一个纯音频文件时较为明显对D、E、F、G、H、I中的功能大部分之间没有调用先后顺序,当然对同一个功能还是应该按先打开再操作最后关闭的顺序。 数据结构定义宏定义最大通道数#def
15、ineFUNC_MAX_PORT 501/最大播放通道数声音波形范围#defineMIN_WAVE_COEF -100#defineMAX_WAVE_COEF 100定时器类型#defineTIMER_1 1 /默认定时器,精确定时,但一个进程中最多只有16个#defineTIMER_2 2 /不精确定时,个数据不限制缓冲类型#defineBUF_VIDEO_SRC 1 /视频源缓冲#defineBUF_AUDIO_SRC 2 /音频源缓冲#defineBUF_VIDEO_RENDER 3 /解码后视频数据缓冲#defineBUF_AUDIO_RENDER 4 /解码后音频数据缓冲注:BUF_
16、VIDEO_SRC视频数据源缓冲,缓冲解码之前视频数据,只对流模式有效,单位byteBUF_AUDIO_SRC音频数据源缓冲,缓冲解码之前音频数据,只对流模式有效,单位byteBUF_VIDEO_RENDER解码后视频数据缓冲,单位帧数BUF_AUDIO_RENDER解码后音频数据缓冲,单位帧数,音频40ms数据定为一帧错误类型#defineDH_PLAY_NOERROR 0/没有错误#defineDH_PLAY_PARA_OVER 1/输入参数非法#defineDH_PLAY_ORDER_ERROR 2/调用顺序不对#defineDH_PLAY_TIMER_ERROR 3/多媒体时钟设置失败
17、#defineDH_PLAY_DEC_VIDEO_ERROR 4 /视频解码失败#defineDH_PLAY_DEC_AUDIO_ERROR 5 /音频解码失败#defineDH_PLAY_ALLOC_MEMORY_ERROR 6 /分配内存失败#defineDH_PLAY_OPEN_FILE_ERROR 7 /文件操作失败#defineDH_PLAY_CREATE_OBJ_ERROR 8 /创建线程事件等失败#defineDH_PLAY_CREATE_DDRAW_ERROR 9/创建directDraw失败#defineDH_PLAY_CREATE_OFFSCREEN_ERROR 10 /创
18、建后端缓存失败#defineDH_PLAY_BUF_OVER 11 /缓冲区满,输入流失败#defineDH_PLAY_CREATE_SOUND_ERROR 12 /创建音频设备失败#defineDH_PLAY_SET_VOLUME_ERROR 13 /设置音量失败#defineDH_PLAY_SUPPORT_FILE_ONLY 14/只能在播放文件时才能使用#defineDH_PLAY_SUPPORT_STREAM_ONLY 15/只能在播放流时才能使用#defineDH_PLAY_SYS_NOT_SUPPORT 16/系统不支持,解码器只能工作在Pentium3以上#defineDH_PL
19、AY_FILEHEADER_UNKNOWN 17 /没有文件头#defineDH_PLAY_VERSION_INCORRECT 18 /解码器和编码器版本不对应#defineDH_PLAY_INIT_DECODER_ERROR 19 /初始化解码器失败#defineDH_PLAY_CHECK_FILE_ERROR 20 /文件太短或码流无法识别#defineDH_PLAY_INIT_TIMER_ERROR 21 /初始化多媒体时钟失败#defineDH_PLAY_BLT_ERROR 22 /位拷贝失败#defineDH_PLAY_UPDATE_ERROR 23 /显示overlay失败#def
20、ineDH_PLAY_MEMORY_TOOSMALL 24 /memorytoosmall最大区域显示数#defineMAX_DISPLAY_WND 4/同时最多打开4个区域显示窗口显示类型#defineDISPLAY_NORMAL 1/以正常分辨率显示#defineDISPLAY_QUARTER 2 /以四分之一分辨率显示解码缓冲数#defineMAX_DIS_FRAMES 50 /最大解码缓冲帧数#defineMIN_DIS_FRAMES 6 /最小解码缓冲帧数定位类型#defineBY_FRAMENUM 1 /按帧号#defineBY_FRAMETIME 2 /按时间数据流原始缓冲大小#
21、defineSOURCE_BUF_MAX 1024*100000 /最大原始缓冲#defineSOURCE_BUF_MIN 1024*50 /最小原始缓冲数据流播放模式#defineSTREAME_REALTIME 0 /最实时方式#defineSTREAME_FILE 1 /最流畅方式解码回调音频帧类型#defineT_AUDIO16 101#defineT_AUDIO8 100解码回调视频帧类型#defineT_UYVY 1#defineT_YV12 3#defineT_RGB32 7媒体信息查询指令#definePLAY_CMD_GetTime 1#definePLAY_CMD_GetF
22、ileRate 2#definePLAY_CMD_GetMediaInfo 3系统功能#defineSUPPORT_DDRAW 1/支持DIRECTDRAW;如果不支持,则播放器不能工作#defineSUPPORT_BLT 2/显卡支持BLT操作;如果不支持,则播放器不能工作#defineSUPPORT_BLTFOURCC 4 /显卡BLT支持颜色转换#defineSUPPORT_BLTSHRINKX 8 /显卡BLT支持X轴缩小#defineSUPPORT_BLTSHRINKY 16 /显卡BLT支持Y轴缩小#defineSUPPORT_BLTSTRETCHX 32 /显卡BLT支持X轴放大
23、#defineSUPPORT_BLTSTRETCHY 64 /显卡BLT支持Y轴放大#defineSUPPORT_SSE128 /CPU支持SSE指令,IntelPentium3以上支持SSE指令#defineSUPPORT_MMX 256/CPU支持MMX指令集抓图格式类型定义typedefenum_tPicFormats PicFormat_BMP=0, PicFormat_JPEG,tPicFormats;媒体信息结构typedefstruct longlWidth; longlHeight; longlFrameRate; longlChannel; longlBitPerSample
24、; longlSamplesPerSec;MEDIA_INFO;帧信息结构帧位置typedefstruct longnFilePos; /指定帧在文件中的偏移位置longnFrameLen;/帧长度longnFrameNum; /帧序号longnFrameTime; /帧时间longnErrorFrameNum; /错误帧号SYSTEMTIME*pErrorTime; /错误帧时间longnErrorLostFrameNum; /错误帧帧号longnErrorFrameSize; /错误帧大小FRAME_POS,*PFRAME_POS;帧信息typedefstruct longnWidth;
25、/画面宽,单位像素。如果是音频数据则为0 longnHeight; /画面高。如果是音频数据则为0 longnStamp; /时标信息,单位毫秒 longnType;/视频帧类型,T_AUDIO16,T_RGB32,T_YV12 longnFrameRate; /编码时产生的图像帧率FRAME_INFO;帧类型typedefstructchar*pDataBuf;/帧数据longnSize; /帧大小longnFrameNum; /帧序号BOOLbIsAudio; /是否音频帧longnReserved; /保留字FRAME_TYPE;接口定义通道控制PLAY_GetFreePort函数名称B
26、OOLPLAY_GetFreePort(LONG*plPort)功能描述获取空闲的通道号,与PLAY_RealsePort成对使用参数说明plPort获取的通道号返回值成功返回TRUE,不成功返回FALSEPLAY_ReleasePort函数名称BOOLPLAY_ReleasePort(LONGlPort)功能描述释放端口号,与PLAY_GetFreePort成对使用参数说明lPort通道号返回值成功返回TRUE,不成功返回FALSE播放文件PLAY_OpenFile函数名称BOOLPLAY_OpenFile(LONGnPort,LPSTRsFileName)功能描述打开文件参数说明nPort
27、通道号sFileName文件名,(文件不能超过4G或小于4K)返回值成功返回TRUE,不成功返回FALSEPLAY_CreateFile函数名称BOOLPLAY_CreateFile(LONGnPort,LPSTRsFileName)功能描述打开文件,自动分配通道号参数说明nPort未使用sFileName文件名,(文件不能超过4G或小于4K)返回值成功返回TRUE,不成功返回FALSEPLAY_Play函数名称BOOLPLAY_Play(LONGnPort,HWNDhWnd)功能描述开始播放。如果已经播放,改变当前播放状态为正常速度播放参数说明nPort通道号hWnd播放窗口句柄返回值成功返
28、回TRUE,不成功返回FALSEPLAY_Stop函数名称BOOLPLAY_Stop(LONGnPort)功能描述结束播放参数说明nPort通道号返回值成功返回TRUE,不成功返回FALSEPLAY_CloseFile函数名称BOOLPLAY_CloseFile(LONGnPort)功能描述关闭播放文件,在PLAY_Stop后调用参数说明nPort通道号返回值成功返回TRUE,不成功返回FALSEPLAY_DestoryFile函数名称BOOLPLAY_DestoryFile(LONGnPort)功能描述关闭播放文件,并释放自动分配的通道号。参数说明nPort通道号返回值成功返回TRUE,不成功返回FALSE播放流数据PLAY_OpenStream函数名称BOOLPLAY_OpenStream(LONGnPort,PBYTEpFileHeadBuf,DWORDnSize,DWORDnBufPoolSize)功能描述打开流
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1