大华播放SDK开发手册.docx
《大华播放SDK开发手册.docx》由会员分享,可在线阅读,更多相关《大华播放SDK开发手册.docx(70页珍藏版)》请在冰豆网上搜索。
![大华播放SDK开发手册.docx](https://file1.bdocx.com/fileroot1/2023-2/17/27a4e5bc-fb47-4149-8d7c-f39102a0bc81/27a4e5bc-fb47-4149-8d7c-f39102a0bc811.gif)
大华播放SDK开发手册
大华播放SDK编程手册
VERSION3.28.2(Build100129)
2010-01-29
版权所有XX
前言
非常感谢您使用我们公司的设备,我们将为您提供最好的服务。
本手册可能包含技术上不准确的地方或印刷错误,欢迎指正。
我们将会定期更新手册的内容。
修订记录
日期
修订内容
修订者
2010-1-29
添加接口:
PLAY_SetFileRefCallBackEx
PLAY_GetRealFrameBitRate
金志贤
2010-1-22
添加接口:
PLAY_SetVisibleDecCallBack;
PLAY_CatchResizePic
金志贤
2009-10-26
添加接口说明:
PLAY_GetFreePort,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简介6
1.1概述6
1.2适用性6
2设计原则6
2.1典型调用6
2.2编程补充说明10
3数据结构定义11
3.1宏定义11
3.2媒体信息结构14
3.3帧信息结构14
4接口定义15
4.1通道控制15
4.2播放文件16
4.3播放流数据17
4.4回放控制21
4.5音频控制22
4.6数据回调24
4.7消息回调29
4.8函数回调30
4.9文件索引33
4.10文件定位33
4.11设置属性34
4.12获得属性39
4.13多显卡控制45
4.14抓图47
4.15字符叠加50
4.16多区域显示51
4.17数据流录像51
4.18清缓冲52
4.19智能搜索52
4.20获得版本号53
4.21获得错误号54
4.22其它54
简介
概述
播放SDK是大华压缩卡和硬盘录像机的配套产品,支持大华所有码流格式以及海思公司的h264码流和ADI的h264码流。
本文档详细描述了开发包中各函数实现的功能及接口
播放SDK的主要功能有:
支持文件或流数据的播放、回放控制(如暂停\恢复、快放慢放)、音频控制、流数据录像、多区域显示、按帧序号或按时间定位、数据回调、消息回调、字符叠加、抓图…….
开发包中包括的文件有:
dhplay.dll、dhplay.h、dhplay.lib、底层mpeg4解码库(dllmpeg4.dll)、底层h264解码库dllh264.dll(解大华的h264码流和ADI公司的码流)和海思的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
关闭多显卡设备
PLAY_RealeseDDraw
回调及功能设置
设置文件结束消息回调
PLAY_SetFileEndMsg
设置文件结束函数回调
PLAY_SetFileEndCallBack
设置图像格式改变消息回调
PLAY_SetEncChangeMsg
设置图像格式改变函数回调
PLAY_SetEncTypeChangeCallBack
设置文件索引建立后回调
PLAY_SetFileRefCallBack
设置流缓冲小于阀值回调
PLAY_SetSourceBufCallBack
设置数据解码回调
PLAY_SetDecCallBack
PLAY_SetDecCallBackEx
设置数据解码回调同时显示视频
PLAY_SetVisibleDecCallBack
设置视频解码回调
PLAY_SetDisplayCallBack
设置音频解码回调
PLAY_SetAudioCallBack
设置水印数据回调
PLAY_SetVerifyCallBack
设置分析数据回调
PLAY_SetDemuxCallBack
设置文件索引
PLAY_SetRefValue
设置播放缓冲帧数
PLAY_SetDisplayBuf
设置overlay模式及关键色
PLAY_SetOverlayMode
设置流打开模式
PLAY_SetStreamOpenMode
设置定时器类型
PLAY_SetTimerType
设置水印数据回调
PLAY_SetWaterMarkCallBack
打开文件或数据流
创建文件
PLAY_CreateFile
打开文件
PLAY_OpenFile
创建流文件
PLAY_CreateStream
打开流
PLAY_OpenStream
PLAY_OpenStreamEx
播放
播放开始
PLAY_Play
各功能操作及信息获取
播放声音
PLAY_PlaySound
PLAY_PlaySoundShare
设置音量
PLAY_SetVolume
获取音量
PLAY_GetVolume
关闭声音
PLAY_StopSound
PLAY_StopSoundShare
开始流数据录像
PLAY_StartDataRecord
获取空闲的通道号
PLAY_GetFreePort
释放通道号
PLAY_ReleasePort
输入流数据
PLAY_InputData
PLAY_InputVideoData
PLAY_InputAudioData
结束流数据录像
PLAY_StopDataRecord
重置流缓冲回调标志
PLAY_ResetSourceBufFlag
快放
PLAY_Fast
慢放
PLAY_Slow
暂停
PLAY_Pause
按帧号定位
PLAY_SetCurrentFrameNum
按时间定位
PLAY_SetPlayedTimeEx
按文件偏移定位
PLAY_SetPlayPos
刷新
PLAY_RefreshPlay
PLAY_RefreshPlayEx
单帧播放
PLAY_OneByOne
单帧倒放
PLAY_OneByOneBack
PLAY_BackOne
反向回放
PLAY_Back
抓图(写文件)
PLAY_CatchPic
PLAY_CatchPicEx
PLAY_CatchResizePic
抓图(获取图片数据)
PLAY_GetPicBMP
PLAY_GetPicJPEG
清缓冲
PLAY_ResetBuffer
颜色调整
PLAY_SetColor
多区域显示
PLAY_SetDisplayRegion
显示模式设置
PLAY_SetDisplayType
垂直同步使能
PLAY_VerticalSyncEnable
调整图象播放的流畅性
PLAY_AdjustFluency
改变图象播放的帧率
PLAY_ChangeRate
打开音频采集功能
PLAY_OpenAudioRecord
关闭音频采集功能
PLAY_CloseAudioRecord
获取颜色参数
PLAY_GetColor
获取关键色
PLAY_GetColorKey
获取当前帧数
PLAY_GetCurrentFrameNum
获取当前帧率
PLAY_GetCurrentFrameRate
获取缓冲帧数
PLAY_GetDisplayBuf
获取显示类型
PLAY_GetDisplayType
获取当前时间
PLAY_GetPlayedTime
PLAY_GetPlayedTimeEx
获取当前信息状态
PLAY_QueryInfo
获取总帧数
PLAY_GetFileTotalFrames
获取总时间
PLAY_GetFileTime
获取文件偏移
PLAY_GetPlayPos
获取索引信息
PLAY_GetRefValue
获取流剩余缓冲
PLAY_GetSourceBufferRemain
获取流打开模式
PLAY_GetStreamOpenMode
获取关键帧信息
PLAY_GetKeyFramePos
PLAY_GetNextKeyFramePos
获取OVERLAY模式
PLAY_GetOverlayMode
获取图像大小
PLAY_GetPictureSize
获取已播放的桢数
PLAY_GetPlayedFrames
获取视频实时码率
PLAY_GetRealFrameBitRate
停止
播放停止
PLAY_Stop
结束
关闭创建的文件
PLAY_DestroyFile
关闭文件
PLAY_CloseFile
关闭创建的流
PLAY_DestroyStream
关闭流
PLAY_CloseStream
PLAY_CloseStreamEx
释放多显卡资源
PLAY_ReleaseDDrawDevice
可随时调用的函数
获取系统功能
PLAY_GetCaps
转BMP文件
PLAY_ConvertToBmpFile
获取文件头长度
PLAY_GetFileHeadLength
获取版本信息
PLAY_GetSdkVersion
编程补充说明
Ø步骤A中的操作用于支持多显卡,目前播放库暂不支持,采用默认的显卡。
Ø步骤B中的功能设置操作只能在PLAY_play之前设置一次。
如果用户不调用这些函数,播放库会采用默认值,如播放缓冲帧数默认为15帧,默认用overlay显示,默认流打开模式为最实时模式。
Ø要使播放SDK能正常工作,步骤C和步骤D是必须的
大部分操作集中在步骤E中,即在PLAY_Play和PLAY_Stop之间调用。
但其中播放声音的函数PLAY_PlaySound、PLAY_PlaySoundShare可以在PLAY_Play之前调用,以防止部分声音数据不能播放,这在播放一个纯音频文件时较为明显对D、E、F、G、H、I中的功能大部分之间没有调用先后顺序,当然对同一个功能还是应该按先打开再操作最后关闭的顺序。
数据结构定义
宏定义
最大通道数
#defineFUNC_MAX_PORT501//最大播放通道数
声音波形范围
#defineMIN_WAVE_COEF-100
#defineMAX_WAVE_COEF100
定时器类型
#defineTIMER_11//默认定时器,精确定时,但一个进程中最多只有16个
#defineTIMER_22//不精确定时,个数据不限制
缓冲类型
#defineBUF_VIDEO_SRC1//视频源缓冲
#defineBUF_AUDIO_SRC2//音频源缓冲
#defineBUF_VIDEO_RENDER3//解码后视频数据缓冲
#defineBUF_AUDIO_RENDER4//解码后音频数据缓冲
注:
BUF_VIDEO_SRC
视频数据源缓冲,缓冲解码之前视频数据,只对流模式有效,单位byte
BUF_AUDIO_SRC
音频数据源缓冲,缓冲解码之前音频数据,只对流模式有效,单位byte
BUF_VIDEO_RENDER
解码后视频数据缓冲,单位帧数
BUF_AUDIO_RENDER
解码后音频数据缓冲,单位帧数,音频40ms数据定为一帧
错误类型
#defineDH_PLAY_NOERROR0//没有错误
#defineDH_PLAY_PARA_OVER1//输入参数非法
#defineDH_PLAY_ORDER_ERROR2//调用顺序不对
#defineDH_PLAY_TIMER_ERROR3//多媒体时钟设置失败
#defineDH_PLAY_DEC_VIDEO_ERROR4//视频解码失败
#defineDH_PLAY_DEC_AUDIO_ERROR5//音频解码失败
#defineDH_PLAY_ALLOC_MEMORY_ERROR6//分配内存失败
#defineDH_PLAY_OPEN_FILE_ERROR7//文件操作失败
#defineDH_PLAY_CREATE_OBJ_ERROR8//创建线程事件等失败
#defineDH_PLAY_CREATE_DDRAW_ERROR9//创建directDraw失败
#defineDH_PLAY_CREATE_OFFSCREEN_ERROR10//创建后端缓存失败
#defineDH_PLAY_BUF_OVER11//缓冲区满,输入流失败
#defineDH_PLAY_CREATE_SOUND_ERROR12//创建音频设备失败
#defineDH_PLAY_SET_VOLUME_ERROR13//设置音量失败
#defineDH_PLAY_SUPPORT_FILE_ONLY14//只能在播放文件时才能使用
#defineDH_PLAY_SUPPORT_STREAM_ONLY15//只能在播放流时才能使用
#defineDH_PLAY_SYS_NOT_SUPPORT16//系统不支持,解码器只能工作在Pentium3以上
#defineDH_PLAY_FILEHEADER_UNKNOWN17//没有文件头
#defineDH_PLAY_VERSION_INCORRECT18//解码器和编码器版本不对应
#defineDH_PLAY_INIT_DECODER_ERROR19//初始化解码器失败
#defineDH_PLAY_CHECK_FILE_ERROR20//文件太短或码流无法识别
#defineDH_PLAY_INIT_TIMER_ERROR21//初始化多媒体时钟失败
#defineDH_PLAY_BLT_ERROR22//位拷贝失败
#defineDH_PLAY_UPDATE_ERROR23//显示overlay失败
#defineDH_PLAY_MEMORY_TOOSMALL24//memorytoosmall
最大区域显示数
#defineMAX_DISPLAY_WND4//同时最多打开4个区域显示窗口
显示类型
#defineDISPLAY_NORMAL1//以正常分辨率显示
#defineDISPLAY_QUARTER2//以四分之一分辨率显示
解码缓冲数
#defineMAX_DIS_FRAMES50//最大解码缓冲帧数
#defineMIN_DIS_FRAMES6//最小解码缓冲帧数
定位类型
#defineBY_FRAMENUM1//按帧号
#defineBY_FRAMETIME2//按时间
数据流原始缓冲大小
#defineSOURCE_BUF_MAX1024*100000//最大原始缓冲
#defineSOURCE_BUF_MIN1024*50//最小原始缓冲
数据流播放模式
#defineSTREAME_REALTIME0//最实时方式
#defineSTREAME_FILE1//最流畅方式
解码回调音频帧类型
#defineT_AUDIO16101
#defineT_AUDIO8100
解码回调视频帧类型
#defineT_UYVY1
#defineT_YV123
#defineT_RGB327
媒体信息查询指令
#definePLAY_CMD_GetTime1
#definePLAY_CMD_GetFileRate2
#definePLAY_CMD_GetMediaInfo3
系统功能
#defineSUPPORT_DDRAW1//支持DIRECTDRAW;如果不支持,则播放器不能工作
#defineSUPPORT_BLT2//显卡支持BLT操作;如果不支持,则播放器不能工作
#defineSUPPORT_BLTFOURCC4//显卡BLT支持颜色转换
#defineSUPPORT_BLTSHRINKX8//显卡BLT支持X轴缩小
#defineSUPPORT_BLTSHRINKY16//显卡BLT支持Y轴缩小
#defineSUPPORT_BLTSTRETCHX32//显卡BLT支持X轴放大
#defineSUPPORT_BLTSTRETCHY64//显卡BLT支持Y轴放大
#defineSUPPORT_SSE128//CPU支持SSE指令,IntelPentium3以上支持SSE指令
#defineSUPPORT_MMX256//CPU支持MMX指令集
抓图格式类型定义
typedefenum__tPicFormats
{
PicFormat_BMP=0,
PicFormat_JPEG,
}tPicFormats;
媒体信息结构
typedefstruct{
longlWidth;
longlHeight;
longlFrameRate;
longlChannel;
longlBitPerSample;
longlSamplesPerSec;
}MEDIA_INFO;
帧信息结构
帧位置
typedefstruct{
longnFilePos;//指定帧在文件中的偏移位置
longnFrameLen;//帧长度
longnFrameNum;//帧序号
longnFrameTime;//帧时间
longnErrorFrameNum;//错误帧号
SYSTEMTIME*pErrorTime;//错误帧时间
longnErrorLostFrameNum;//错误帧帧号
longnErrorFrameSize;//错误帧大小
}FRAME_POS,*PFRAME_POS;
帧信息
typedefstruct{
longnWidth;//画面宽,单位像素。
如果是音频数据则为0
longnHeight;//画面高。
如果是音频数据则为0
longnStamp;//时标信息,单位毫秒
longnType;//视频帧类型,T_AUDIO16,T_RGB32,T_YV12
longnFrameRate;//编码时产生的图像帧率
}FRAME_INFO;
帧类型
typedefstruct{
char*pDataBuf;//帧数据
longnSize;//帧大小
longnFrameNum;//帧序号
BOOLbIsAudio;//是否音频帧
longnReserved;//保留字
}FRAME_TYPE;
接口定义
通道控制
PLAY_GetFreePort
函数名称
BOOLPLAY_GetFreePort(LONG*plPort)
功能描述
获取空闲的通道号,与PLAY_RealsePort成对使用
参数说明
plPort
获取的通道号
返回值
成功返回TRUE,不成功返回FALSE
PLAY_ReleasePort
函数名称
BOOLPLAY_ReleasePort(LONGlPort)
功能描述
释放端口号,与PLAY_GetFreePort成对使用
参数说明
lPort
通道号
返回值
成功返回TRUE,不成功返回FALSE
播放文件
PLAY_OpenFile
函数名称
BOOLPLAY_OpenFile(LONGnPort,LPSTRsFileName)
功能描述
打开文件
参数说明
nPort
通道号
sFileName
文件名,(文件不能超过4G或小于4K)
返回值
成功返回TRUE,不成功返回FALSE
PLAY_CreateFile
函数名称
BOOLPLAY_CreateFile(LONGnPort,LPSTRsFileName)
功能描述
打开文件,自动分配通道号
参数说明
nPort
未使用
sFileName
文件名,(文件不能超过4G或小于4K)
返回值
成功返回TRUE,不成功返回FALSE
PLAY_Play
函数名称
BOOLPLAY_Play(LONGnPort,HWNDhWnd)
功能描述
开始播放。
如果已经播放,改变当前播放状态为正常速度播放
参数说明
nPort
通道号
hWnd
播放窗口句柄
返回值
成功返回TRUE,不成功返回FALSE
PLAY_Stop
函数名称
BOOLPLAY_Stop(LONGnPort)
功能描述
结束播放
参数说明
nPort
通道号
返回值
成功返回TRUE,不成功返回FALSE
PLAY_CloseFile
函数名称
BOOLPLAY_CloseFile(LONGnPort)
功能描述
关闭播放文件,在PLAY_Stop后调用
参数说明
nPort
通道号
返回值
成功返回TRUE,不成功返回FALSE
PLAY_DestoryFile
函数名称
BOOLPLAY_DestoryFile(LONGnPort)
功能描述
关闭播放文件,并释放自动分配的通道号。
参数说明
nPort
通道号
返回值
成功返回TRUE,不成功返回FALSE
播放流数据
PLAY_OpenStream
函数名称
BOOLPLAY_OpenStream(LONGnPort,PBYTEpFileHeadBuf,DWORDnSize,DWORDnBufPoolSize)
功能描述
打开流