大华播放SDK开发手册_第1页
大华播放SDK开发手册_第2页
大华播放SDK开发手册_第3页
大华播放SDK开发手册_第4页
大华播放SDK开发手册_第5页
已阅读5页,还剩133页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大华播放SDK开发手册究前言本手册可能包含技术上不准确的地方或印刷错误,欢迎指正。我们将会定期更新手2010-1-292010-1-222009-10-262009-8-142009-07-152008-03-252007-10-16PLAY_SetFileRefCallBackExPLAY_GetRealFrameBitRate添加接口:PLAY_SetVisibleDecCallBack;PLAY_CatchResizePicPLAY_GetFreePort,PLAY_ReleasePort;PLAY_VerticalSyncEnable;PLAY_GetPicBMP,PLAY_GetPicJPEG;整理文档,修改文档版式,添加接口说明整理文档,增加对最新接口的说明整理文档,修改多显卡及设置高画质接口的定义202007-9-32006-12-18施施播放SDK是大华压缩卡和硬盘录像机的配套产品,支持大华所有码流格式以及海思播放SDK的主要功能有:支持文件或流数据的播放、回放控制(如暂停\恢复、快放慢放)、音频控制、流数据录像、多区域显示、按帧序号或按时间定位、数据回调、消息回调、字符叠加、抓图…….以及ADI的h264码流和海思的h264码流的解码HBHBELB、LBE、GB、GBE、NVS机型码流设计原则显卡设备用的显卡PLAY_InitDDrawDevicePLAY_GetDDrawDeviceTotalNumsPLAY_SetDDrawDevicePLAY_GetDDrawDeviceInfo束消息回调数回调改变消息回调式改变函数回调建立后回调阀值回调置数据解码回调同时显示视频PLAY_GetCapsExPLAY_RealeseDDrawPLAY_SetFileEndMsgPLAY_SetFileEndCallBackPLAY_SetEncChangeMsgPLAY_SetEncTypeChangeCallBackPLAY_SetFileRefCallBackPLAY_SetSourceBufCallBackPLAY_SetDecCallBackPLAY_SetDecCallBackExPLAY_SetVisibleDecCallBackPLAY_SetDisplayCallBackPLAY_SetAudioCallBackPLAY_SetVerifyCallBackPLAY_SetDemuxCallBackPLAY_SetRefValuePLAY_SetDisplayBufPLAY_SetOverlayModePLAY_SetStreamOpenModePLAY_SetTimerTypePLAY_SetWaterMarkCallBackPLAY_CreateFilePLAY_OpenFilePLAY_CreateStreamPLAY_OpenStreamPLAY_OpenStreamExPLAY_PlayPLAY_PlaySoundPLAY_PlaySoundSharePLAY_SetVolumePLAY_GetVolumePLAY_StopSoundPLAY_StopSoundSharePLAY_StartDataRecordPLAY_GetFreePort释放通道号PLAY_ReleasePortPLAY_InputDataPLAY_InputVideoDataPLAY_InputAudioDataPLAY_StopDataRecord回调标志PLAY_ResetSourceBufFlagPLAY_FastPLAY_SlowPLAY_PausePLAY_SetCurrentFrameNumPLAY_SetPlayedTimeExPLAY_SetPlayPosPLAY_RefreshPlayPLAY_RefreshPlayExPLAY_OneByOnePLAY_OneByOneBackPLAY_BackOnePLAY_BackPLAY_CatchPicPLAY_CatchPicExPLAY_CatchResizePic据)PLAY_GetPicBMPPLAY_GetPicJPEG放的流畅性PLAY_ResetBufferPLAY_SetColorPLAY_SetDisplayRegionPLAY_SetDisplayTypePLAY_VerticalSyncEnablePLAY_AdjustFluencyPLAY_ChangeRatePLAY_OpenAudioRecordPLAY_CloseAudioRecordPLAY_GetColorPLAY_GetColorKeyPLAY_GetCurrentFrameNumPLAY_GetCurrentFrameRatePLAY_GetDisplayBufPLAY_GetDisplayTypePLAY_GetPlayedTimePLAY_GetPlayedTimeExPLAY_QueryInfoPLAY_GetFileTotalFramesPLAY_GetFileTimePLAY_GetPlayPosPLAY_GetRefValuePLAY_GetSourceBufferRemainPLAY_GetStreamOpenModePLAY_GetKeyFramePosPLAY_GetNextKeyFramePosPLAY_GetOverlayModePLAY_GetPictureSizePLAY_GetPlayedFramesPLAY_GetRealFrameBitRatePLAYPLAY_Stop关闭创建的文件卡资源PLAY_DestroyFilePLAY_CloseFilePLAY_DestroyStreamPLAY_CloseStreamPLAY_CloseStreamExPLAY_ReleaseDDrawDevicePLAY_GetCapsPLAY_ConvertToBmpFilePLAY_GetFileHeadLengthPLAY_GetSdkVersion中的功能大部分之间没有调用先后顺序,当然对同一个功能还是应该按先打开再操作最3数据结构定义//最大播放通道#defineFUNC_MAX_PORT//最大播放通道数-100#defineMIN_WAVE-100#defineMAX_WAVE_COEF#defineTIMER_1#defineTIMER_2#defineBUF_VIDEO_SRC#defineBUF_AUDIO_SRC#defineBUF_VIDEO_RENDER频数据缓冲#defineBUF_AUDIO_RENDER频数据缓冲12//默认定时器,精确定时,但一据不限制//音频源缓冲3//解码后视4//解码后音BUFBUF_VIDEO_SRC视频数据源缓冲,缓冲解码之前视频数据,只对流模式有效,单位byteBUF_AUDIO_SRC音频数据源缓冲,缓冲解码之前音频数据,只对流模BUF_VIDEO_RENDER解码后视频数据缓冲,单位帧数BUF_AUDIO_REND解码后音频数据缓冲,单位帧数,音频40ms数据定为ER一帧DHDH_PLAY_NOERROR#define0eDHPLAYPARAOVER非法#defineDH_PLAY_ORDER_ERROR不对#defineDH_PLAY_TIMER_ERROR钟设置失败#defineDH_PLAY_DEC_VIDEO_ERROR码失败#defineDH_PLAY_DEC_AUDIO_ERROR码失败#define#define作失败#define等失败DH_PLAY_ALLOC_MEMORY_ERROR6DH_PLAY_OPEN_FILE_ERRORDH_PLAY_CREATE_OBJ_ERROR#define#define失败#defineDH_PLAY_CREATE_DDRAW_ERROR9DH_PLAY_CREATE_OFFSCREEN_ERRORDH_PLAY_BUF_OVER缓冲区满,输入流失败#defineDH_PLAY_CREATE_SOUND_ERROR失败#defineDH_PLAY_SET_VOLUME_ERROR#defineDH_PLAY_SUPPORT_FILE_ONLY时才能使用1//输入参数2//调用顺序3//多媒体时//分配内存失败8//创建线程事件/建directDra败10//创建后端缓存11//12//创建音频设备13//设置音量失败14//只能在播放文件HPLAYSUPPORTSTREAMONLY用#defineDH_PLAY_SYS_NOT_SUPPORT16#defineDH_PLAY_FILEHEADER_UNKNOWN#defineDH_PLAY_VERSION_INCORRECT器版本不对应#defineDH_PLAY_INIT_DECODER_ERROR失败#defineDH_PLAY_CHECK_FILE_ERROR流无法识别#defineDH_PLAY_INIT_TIMER_ERROR多媒体时钟失败#defineDH_PLAY_BLT_ERROR位拷贝失败#defineDH_PLAY_UPDATE_ERRORoverlay失败#defineDH_PLAY_MEMORY_TOOSMALLsmall#defineMAX_DISPLAY_WND个区域显示窗口15//只能在播放流时才能使//系统不支持,解码器只能工作18//解码器和编码19//初始化解码器20//文件太短或码22//23//显示24//memorytoo4//同时最多打开4////以正常分辨率显DISPLAY_NORMAL#define示2//以四分之2//以四分之一分辨率显示50//最大解码#defineMAX_DIS_50//最大解码缓冲帧数6//最小解码缓冲帧#define6//最小解码缓冲帧数#defineBY_#defineBY_FRAMENUM#defineBY_FRAMETIME2//按时间#defineSOURCE_BUF_MAX#define#defineSOURCE_BUF_MAX#defineSOURCE_BUF_MIN#defineSTREAME_REALTIME#defineSTREAME_REALTIME式#defineSTREAME_FILE1//最流畅方式#defineT#defineT_AUDIO16#defineT_AUDIO8#defineT_UYVY#defineT_YV#defineT_RGB322#definePLAY_CMD_GetTime2#definePLAY_CMD_GetFileRatenePLAYCMDGetMediaInfo/支持DIRECTDRAW;如果不支持,则播放器不#defineSUPPORT_DDRAW1#defineSUPPORT_BLT2definedefinedefinedefine#defineSUPPORT_BLTFOURCCSUPPORT_BLTSHRINKXSUPPORT_BLTSHRINKYSUPPORT_BLTSTRETCHXSUPPORT_BLTSTRETCHY#defineSUPPORT_SSEtypedeftypedefenum__tPicFormats{PicFormat_BMP=0,PicFormat_JPEG,typedeftypedefstruct{eerSampleplesPerSectypedefstruct{longnFilePos;//指定帧在文件中FrameNum}FRAME_POS,*PFRAME_POS;//画面宽//画面宽,单位像素。如果是音频数据则为0//画面高。如果是音频数据则为0//时标信息,单位毫秒码时产生的图像帧率typedefstruct{dthnHeight;StampnType;nFrameRate;typedefstruct{aBuflongnSize;函函数名BOOLPLAY_GetFreePort(LONG*plPort)称述plPort获取的通道号明函函数名BOOLPLAY_ReleasePort(LONGlPort)称述lPort通道号明BOOLBOOLPLAY_OpenFile(LONGnPort,LPSTRsFileName)称述nPort通道号明sFileName文件名,(文件不能超过4G或小于4K)BOOLBOOLPLAY_CreateFile(LONGnPort,LPSTRsFileName)称,自动分配通道号述明sFileName函函数名BOOLPLAY_Play(LONGnPort,HWNDhWnd)称功能描开始播放。如果已经播放,改变当前播放状态为正常速度播放述明hWndBOOLBOOLPLAY_Stop(LONGnPort)称述明tBOOLBOOLPLAY_CloseFile(LONGnPort)称述明函数名BOOLPLAY_DestoryFile(LONGnPort)称述nPort通道号明BOOLBOOLPLAY_OpenStream(LONGnPort,PBYTEpFileHeadBuf,DWORDnSize,DWORDnBufPoolSize)打开流接口(类似打开文件)eadBuflSize设置播放器中存放数据流的缓冲区大小。范围可调小该值,如果数据传输不均匀,可增大该pFileHeadBuf原先用于识别该码流是否是大华码流,后改由码流中的标志来识别,所以现在该参数实际不起作用。这样做的目的是为方便用户做二次开发,码流识别由播放库内部处理,而不需要用户传个特定厂家的文件头称述明明BOOLBOOLPLAY_CreatStream(LONGnPort,PBYTEpFileHeadBuf,Size述明目前不使用,填NULL置播放器中存放数据流的缓冲区大小。范围是设为900*1024,如果数据送过来相对均匀,可调小该值,如果数据传输不均匀,可增大该值称BOOLBOOLPLAY_InputData(LONGnPort,PBYTEpBuf,DWORDze输入从设备上得到的流数据;打开流并调用PLAY_Play之后才明pBuf已满称述BOOLBOOLPLAY_CloseStream(LONGnPort)称关闭数据流(类似关闭文件)述明函函数名BOOLPLAY_DestoryStream(LONGnPort)称功能描关闭数据流,并释放自动分配的端口号述nPort通道号明BOOLBOOLPLAY_OpenStreamEx(LONGnPort,PBYTEpFileHeadBuf,DWORDnSize,DWORDnBufPoolSize)述nPort通道号明pFileHeadBuf用户从卡上得到的文件头数据称设置播放器中存放数据流的缓冲区大小。范围是[SOURCE_BUF_MIN,SOURCE_BUF_MAX]eBOOLBOOLPLAY_InputVideoData(LONGnPort,PBYTEpBuf,DWORDnSize)输入从设备上得到的视频流(可以是复合流,但音频数据会被忽略);打开流之后才能输入数据通道号明缓冲区地址缓冲区大小称述nPortpBufnSize回值BOOLBOOLPLAY_InputAudioData(LONGnPort,PBYTEpBuf,WORDnSize到的音频流;打开声音之后才能输入数据述明pBuf称BOOLBOOLPLAY_CloseStreamEx(LONGnPort)称述明4.4.3.10流方式历史数据(包括本地文件和远程录像文件)播放简单示例:PLAY_OpenStream(0,NULL,0,900*1024);PLAY_SetStreamOpenMode(0,STREAME_FILE)//文件模式PLAY_Play(0,hWnd);FILE*fp=fopen(“”,”rb”);BYTEpBuf[4096];while(true){intlen=fread(pBuf,1,4096,fp);{break}}WhilePLAY_InputData(0,pBuf,len)==FALSE){}}PLAY_OpenStream(0,NULL,0,900*1024);PLAYSetStreamOpenMode,STREAME_REALTIME)//实时模式,是实时模式PLAY_Play(0,hWnd);/网络流数据回调函数voidWINAPICallFunction(LONGnPort,LPBYTEpDataBuffer,DWORDDataLength,{PLAY_InputData(nPort,pDataBuffer,DataLength);//网络实时流数据,数据只送一次,以保证实时性}BOOLBOOLPLAY_Pause(LONGnPort,DWORDnPause)称述明SEseBOOLBOOLPLAY_Fast(LONGnPort)称快速播放。播放速度分为九级,播放速度分别为每秒播放1,3,6,12,25,50,75,100,帧12图5像。每次调用播放速度提升一级最多调用4次,要恢复正常播放调用PLAY_Play,从当前位明述函函数名BOOLPLAY_Slow(LONGnPort)称称上。每次调用播放速度降一级;最多调用4次,nPort通道号明函函数名BOOLPLAY_OneByOne(LONGnPort)称述nPort通道号明函函数名BOOLPLAY_OneByOneBack(LONGnPort)称功能描单帧回放。每调用一次倒退一帧。此函数必须在文件索引生成述之后才能调用参数说nPort通道号明返回值成功返回TRUE,不成功返回FALSE称BOOLBOOLPLAY_BackOne(LONGnPort)称述明BOOLBOOLPLAY_Back(LONGnPort)述nPort通道号明函函数名BOOLPLAY_PlaySound(LONGnPort)称功能描打开声音;同一时刻只能有一路声音。如果现在已经有声音打述开,则自动关闭原来已经打开的声音。注意:默认情况下声音明BOOLBOOLPLAY_StopSound()称述明无函函数名BOOLPLAY_PlaySoundShare(LONGnPort)称述nPort通道号明函数名BOOLPLAY_StopSoundShare(LONGnPort)称以独占方式播放声音的。注意:在同一个进程中,所有通道必须使用相同的方式播放或关闭声音参数说nPort通道号明返回值成功返回TRUE,不成功返回FALSE述BOOLBOOLPLAY_SetVolume(LONGnPort,WORDnVolume)称述明nVolume量的值,范围[0,0XFFFF]WORDWORDPLAY_GetVolume(LONGnPort)称量述明BOOLBOOLPLAY_AdjustWaveAudio(LONGnPort,LONG调整WAVE波形,可以改变声音的大小。它和PLAY_SetVolumet明nCoefficientMAX_WAVE_COEF,0是不调整称述BOOLBOOLPLAY_SetDecCallBack(LONGnPort,void(CALLBACK*DecCBFun)(longnPort,char*pBuf,longnSize,FRAME_INFO*pFrameInfo,longnReserved1,longnReserved2))设置回调函数,替换播放器中的显示部分,由用户自己控制显示,该函数在PLAY_Play之前调用,在PLAY_Stop时自动失效,下次调用PLAY_Play之前需要重新设置。解码部分不控制速度,只要用户从回调函数中返回,解码器就会解码下一部分放有足够的了解,否则请慎重使用。通道号明回调函数指针,不能为NULLnPortDecCBFun述称voidvoid(CALLBACK*DecCBFun)(longnPort,char*pBuf,longnSize,FRAME_INFO*pFrameInfo,longnReserved1,longnReserved2解码后的音视频数据pBuf的长度保留参数数明longnHeight;longnStamp;longnType;longnFrameRate;//画面宽,单位像素。如果是音频数据据则为0;BOOLBOOLPLAY_SetDecCallBackEx(LONGnPort,void(CALLBACK*DecCBFun)(longnPort,char*pBuf,longnSize,FRAME_INFO*pFrameInfo,longnReserved1,longnReserved2),long明DecCBFun述称voidvoid(CALLBACK*DecCBFun)(longnPort,char*pBuf,longnSize,FRAME_INFO*pFrameInfo,longnReserved1,long明pBuf数函函数名BOOLPLAY_SetVisibleDecCallBack(LONGnPort,void称称((CALLBACK*DecCBFun)(longnPort,char*pBuf,longnSize,FRAME_INFO*pFrameInfo,longnReserved1,longlongnUser与PLAY_SetDecCallBackEx基本相同,不同的是解码回调的同ortDecCBFunser用户自定义回调参数称述明BOOLBOOLPLAY_SetDecCBStream(LONGnPort,DWORDnStream)述明ream2ckBOOLBOOLPLAY_SetDisplayCallBack(LONGnPort,void(CALLBACK*DisplayCBFun)(longnPort,char*pBuf,longnSize,longnWidth,longnHeight,longnStamp,longnType,longavedlongnUser设置视频图像数据回调,可用作抓图。如果要停止回调,可以述把回调函数指针DisplayCBFun设为NULL。一旦设置回调函数,则一直有效,直到程序退出。该函数可以在任何时候调用nPort通道号明DisplayCBFun视频图像数据回调函数。可以ULL;nUser用户自定义数据返回值成功返回TRUE,不成功返回FALSE回调函数参数说明:voidvoid(CALLBACK*DisplayCBFun)(longnPort,char*pBuf,longnSize,longnWidth,longnHeight,longnStamp,longnType,longnReceaved)nPort通道号明pBuf返回图像数据nSize返回图像数据大小nWidth画面宽,单位像素nHeight画面高nStamp时标信息,单位毫秒nReceaved保留数函函数名BOOLPLAY_SetAudioCallBack(LONGnPort,void(CALLBACK**funAudio)(longnPort,char*pAudioBuf,longnSize,称述明voidvoidCALLBACKFunAudio(longnPort,char*pAudioBuf,nPort通道号nSize数据长度nStampms每个采样点16位表示用户自定义数据数明音频类型T_AUDIO16,采样率8000,单声道,nUserBOOLBOOLPLAY_SetVerifyCallBack(LONGnPort,DWORDnBeginTime,DWORDnEndTime,void(CALLBACK*funVerify)(longnPort,FRAME_POS*pFilePos,DWORDbIsVideo,DWORDnUser),DWORDnUser)称注册一个回调函数,校验数据是否被修改,实现水印功能。注册一个回调函数,校验数据是否被修改,实现水印功能。该接口暂未实现nPortnBeginTimenEndTimefunVerifynUser通道号开始时间结束时间水印回调函数指针用户自定义数据成功返回TRUE,不成功返回FALSE述明返回值voidvoidCALLBACKfunVerify(longnPort,FRAME_POS*pFilePos,DWORDbIsVideo,DWORDnUser)通道号明帧信息是否是视频数据用户自定义数据nPortpFilePosbIsVideonUser数BOOLBOOLPLAY_SetDemuxCallBack(LONGnPort,void(CALLBACK*DemuxCBFun)(longnPort,char*pBuf,longnSize,void*pParam,longnReserved,longnUser),longnUser)的数据回调述明DemuxCBFun称nUsernUser用户自定义数据voidvoidCALLBACKDemuxCBFun(longlongnSize,void*pParam,明pBufnPortchar*pBuf,longnReserved,long数BOOLBOOLPLAY_SetWaterMarkCallBack(LONGnPort,GetWaterMarkInfoCallbackFuncpFunc,longnUser)述明pFunc回调函数称intint(__stdcall*GetWaterMarkInfoCallbackFunc)(char*longlen,longreallen,longreserved,明keylongkey,数BOOLBOOLPLAY_SetEncChangeMsg(LONGnPort,HWNDhWnd,UINT发送的消息用户输入的消息,当解码时编码格式发生改变hWnd这个消息称述明BOOLBOOLPLAY_SetFileEndMsg(LONGnPort,HWNDhWnd,UINT述明hWndhWnd窗口过程中收到这个消息用户输入的消息,当播放到文件结束时用户在称BOOLBOOLPLAY_SetSourceBufCallBack(LONGnPort,DWORDnThreShold,void(CALLBACK*SourceBufCallBack)(longnPort,DWORDnBufSize,DWORDdwUser,void*pResvered),DWORDdwUser,void*pReserved)数据小于等于阀值时的回调函数指针述明nThreSholdllB称称pReservedpReserved保留voidvoidCALLBACKSourceBufCallBack(longnPort,DWORDred明缓冲中的数据长度数agBOOLBOOLPLAY_ResetSourceBufFlag(LONGnPort)功能描重置回调标志位为有效状态。流模式下源缓冲到达阀值时(如果用户设置了回调函数)不一定会回调,用户需要重置回调标志位后才能回调。而且每次回调后标志位都被设为无效,用户可以在适当的时候重置回调标志,这个接口的主要目的是防止重复回调(数据在阀值附近摆动因为用户输入数据时,播放器也在读走数据)。初始化状态下,回调标志位是有效的。参数说nPort通道号明返回值成功返回TRUE,不成功返回FALSE述函数名BOOLPLAY_SetEncTypeChangeCallBack(LONGnPort,称voidvoid(CALLBACK*funEncChange)(longnPort,longnUser),设置解码时图象格式发生改变通知用户的回调函数;打开文件nPortfunEncChangenUser通道号用户自定义数据成功返回TRUE,不成功返回FALSE称述明返回值voidvoid(CALLBACK*funEncChange)(longnPort,longnUser)数明dwUser通道号用户数据nPortckBOOLBOOLPLAY_SetFileRefCallBack(LONGnPort,void(CALLBACK*pFileRefDone)(DWORDnPort,DWORDnUser),DWORDnUser)功能描设置回调函数指针,文件索引建立后回调。为了能在文件中准确快速的定位,我们在文件打开时生成文件索引。这个过程耗时比较长,大约每秒处理40M左右的数据,主要是因为从硬盘读数据比较慢。建立索引的过程是在后台完成,需要使用索引的函数要等待这个过程结束,而其他接口不会受到影响。参数说nPort通道号明pFileRefDone回调函数指针述nUsernUser用户自定义数据FileRefDoneDWORDnPortDWORDnUser数明dwUserBOOLBOOLPLAY_SetFileRefCallBackEx(LONGnPort,(CALLBACK*pFileRefDoneEx)(DWORDnPort,bIndexCreated,DWORDnUser),DWORDnUser)PLAY_SetFileRefCallBack的扩展接口,可以返回索引的创建nPort通道号明pFileRefDoneE回调函数指针xnUser用户自定义数据成功返回TRUE,不成功返回FALSE述称返回值voidvoidFileRefDoneEx(DWORDnPort,BOOLbIndexCreated,nPort通道号明bIndexCreated索引创建标志,TRUE--索引创建成功,FALSE-数-失败-失败kBOOLBOOLCALLMETHODPLAY_SetFileEndCallBack(LONGnPort,void(CALLBACK*pFileEnd)(DWORDnPort,DWORDnUser),DWORDnUser述明pFileEnd称voidvoidFileEnd(DWORDnPort,DWORDnUser)数明dwUser数名BOOLPLAY_SetRefValue(LONGnPort,BYTE*pBuffer,DWORDnSize)功能描设置文件索引。如果已经有了文件索引信息,可以不再调用生成索引的回调函数(),直接输入索引信息。注:索引信息及其明pBuffer述BOOLBOOLPLAY_GetRefValue(LONGnPort,BYTE*pBuffer,DWORD*pSize)获取文件索引信息,以便下次打开同一个文件时直接使用这个信息。必须在索引建成后才能获得信息通道号明索引信息出,输入pBuffer的大小,输出索引信注:可以在第一次指定需要的缓冲区大小。然后分配足够的缓冲,再称述nPortpBuffernSizeum函数名BOOLPLAY_SetCurrentFrameNum(LONGnPort,DWORD称设设置当前播放播放位置到指定帧号,根据帧号来定位播放位置。此函数必须在文件索引生成之后才能调用通道号帧序号成功返回TRUE,不成功返回FALSE述明返回值nPortnFrameNumBOOLBOOLPLAY_SetPlayedTimeEx(LONGnPort,DWORDnTime)称根据时间设置文件播放位置,此接口比PLAY_SetPlayPos费时,但如果用时间来控制进度条(与PLAY_GetPlayedTime(Ex)配合使用),那么可以使进度条平滑滚动明设置文件播放位置到指定时间。单位毫秒述ortimeBOOLBOOLPLAY_SetPlayPos(LONGnPort,floatfRelativePos)设置文件播放指针的相对位置(百分比)述nPort通道号明fRelativePos范围0-100%floatfloatPLAY_GetPlayPos(LONGnPort)称文件播放指针的相对位置述明BOOLBOOLPLAY_SetColor(LONGnPort,DWORDnRegionNum,intnBrightness,intnContrast,intnSaturation,intnHue)置图像的视频参数,即时起作用述明nRegionNum果只有一个显示区域(通常情况)设为0返回值显示区域,参考PLAY_SetDisplayRegi;on如nBrightnessnContrastnSaturationnHue称成功返回TRUE,不成功返回FALSE称BOOLBOOLPLAY_SetDisplayBuf(LONGnPort,DWORDnNum)称设置播放缓冲区(即解码后的图像缓冲区)大小;这个缓冲区比较重要,他直接影响播放的流畅性和延时性。在一定范围内缓冲越大越流畅,同时延时越大。在播放文件时用户最好可以考虑开大缓冲(如果内存足够大),我们的默认值是15(帧),在25帧/秒的情况下即秒的数据。如果用户追求最大延时最小,可以考虑试当减小这个值nPort通道号明nNum数。范围:352*288图像的所需内存最小值是352*288*3/2大约150K。最大值是352*288*4MIN_DIS_FRAMES播放缓冲最小值MAX_DIS_FRAMES播放缓冲最大值述BOOLBOOLPLAY_SetDisplayType(LONGnPort,LONGnType)设置显示的模式,在小画面显示时,采用DISPLAY_QUARTER可以减小显卡工作量,从而支持更多路显示,但画面显示质量有下降。在正常和大画面显示时应该使用DISPLAY_NORMALnPort通道号述称两两种模式:DISPLAY_NORMAL或DISPLAY_QUARTERDISPLAY_NORMAL正常送显卡显示DISPLAY_QUARTER1/4分辨率数据送显卡显示返回值成功返回TRUE,不成功返回FALSEleBOOLBOOLPLAY_VerticalSyncEnable(LONGnPort,BOOLbEnable)称此接口需在PLAY_Play之后调用,重新播放时需重新设置。在播放动态图像出现断层时,可以使用此接口打开垂直同步功能,但CPU占用率会明显提高通道号明TRUEFALSE成功返回TRUE,不成功返回FALSE打开垂直同步关闭垂直同步nPortbEnable述返回值BOOLBOOLPLAY_AdjustFluency(LONGnPort,intlevel)功能描调整图象播放的流畅性。流畅性和实时性是一对平衡体。当述整图象的等级(0-6)实时监视时,使用了新的帧率控制方式,目前该函数无效明明BOOLBOOLPLAY_ChangeRate(LONGnPort,intrate)称述明rateBOOLBOOLPLAY_OpenAudioRecord(pCallFunctionnProc,LONGnBitsPerSample,LONGnSamplesPerSec,longnLength,longnReserved,LONGnUser)述明表示每个采样所需要的位数eplesPerSesPerSampl称cvoidpCallFunction(LPBYTEvoidpCallFunction(LPBYTEerpDataBuffer,DWORD数明函数名BOOLPLAY_CloseAudioRecord()称采集功能述明函数名BOOLPLAY_SetOverlayMode(LONGnPort,BOOLbOverlay,FcolorKey述述OVERLAY表面处于活动状态,如果此时系统中已经有程序使用了OVERLAY,那么播放器就不能再创建OVERLAY表面,它将自动改OffScreen面,并不返回FALSE。一些常用的播放器,以及我们卡的预览都可能使用了OVERLAY表面。同样,如果播放器使用了OVERLAY表面,那么,其他的程序将不能使用OVERLAY表面,特别注意,我们的卡在预览时可能也要使用OVERLAY(用户可设置),如果先打开播放器(并且使用了OVERLAY),再启动使用OVERLAY模式的优点是:大部份的显卡都支持OVERLAY,显卡)使用OVERLAY模式(OVERLAY模式下的缩放和颜色转换由显卡支持),可以大大减小CPU利用率并提高画面质量(相对于软件缩放和颜色转换)。缺点是:只能有一路播放器使用。明TRUE表示将首先尝试使用OVERLAY模其他模式FALSE不进行OVERLAY模式的尝试colorKey用户设置的透明色,透明色相当于一层透视膜,显示的画面只能穿过这种颜色,而其他的颜色将挡住显示的画面。用户应该在显示窗口到显示画面。一是一个双字节值0x00rrggbb,最高字节为0,后rgb的值返回值成功返回TRUE,不成功返回FALSE称述明返回值BOOLPLAY_SetPicQuality(LONGnPort,BOOLbHighQuality)设置图像质量,当设置成高质量时画面效果好,但CPU利用率高。在支持多路播放时,可以设为低质量,以降低CPU利用率;当某路放大播放时将该路设置成高质量,以达到好的画面nPortbHighQuality音频采集数据回调指针等于1时图像高质量,等于0时低质量(默认成功返回TRUE,不成功返回FALSEBOOLBOOLPLAY_SetStreamOpenMode(LONGnPort,DWORDnMode)设置流播放的模式。必须在播放之前设置STREAME_REALTIME(默认)STREAME_FILE模式实时模式,适合播放网络实时数据,解码器会称述明文件文件模式,适合用户把文件数据用流方式输注意:当PLAY_InputData()返回FALSE时,用户要等一下重新输入;返回值成功返回TRUE,不成功返回FALSEBOOLBOOLPLAY_SetTimerType(LONGnPort,DWORDnTimerType,DWORDnReserved)述明TIMER_1多媒体定时器,精度高,但不能超过TIMER_2线程定时器,精度略低,无数量限制称nTimerTypenReservedintintPLAY_GetCaps()称测试播放器需要的一些系统功能述无称明明作显卡BLT支持颜色转换;如果不支持,播放器会使用软件方式作RGB转换SUPPORT_BLTSHRINKXYBOOLBOOLPLAY_GetColor(LONGnPort,DWORDnRegionNum,int*pBrightness,int*pContrast,int*pSaturation,intenBrightnessnContrastnSaturationnHue显示区域,参考PLAY_SetDisplayRegi;on如果只有一个显示区域(通常情况)设为0色调,默认64;范围0-128成功返回TRUE,不成功返回FALSE述明返回值DWORDDWORDPLAY_GetDisplayBuf(LONGnPort)称放缓冲区最大缓冲的帧数述明所获得的播放缓冲区最大缓冲帧数longlongPLAY_GetDisplayType(LONGnPort)称显示模式述nPort通道号明返回值DISPLAY_NORMAL或DISPLAY_QUARTERlonglongPLAY_GetDisplayType(LONGnPort)称述明函函数名LONGPLAY_GetOverlayMode(LONGnPort)称述nPort通道号明y函函数名BOOLPLAY_GetPictureQuality(LONG称bHighQuality)前图像质量nPort,BOOL*述述明低质量lityeLONGLONGPLAY_GetStreamOpenMode(LONGnPort)称述明MEFILEBOOLBOOLPLAY_GetTimerType(LONGnPort,DWORD*pTimerType,DWORD*pReserved)述明pTimerTypepReserved称称述明DWORDPLAY_GetBufferValue(LONGnPort,DWORDnBufType)获取播放器中的缓冲区大小(帧数或者byte)。这个接口可以帮助用户了解缓冲区中的数据,从而在网络延时方面有所估计ype根据不同参数返回缓冲区值,源缓冲区返回byte,解码后缓冲函数名DWORDPLAY_GetCurrentFrameNum(LONGnPort)称述的帧数。如果文件播放位置不被改变,那么这两个函数的返回值应该非常接近,除非码流丢失数据参数说nPort通道号明返回值当前播放的帧序号函函数名DWORDPLAY_GetCurrentFrameRate(LONGnPort)称描得到当前码流中编码时的帧率述nPort通道号明时的帧率值函数名DWORDPLAY_GetFileHeadLength()称功能描得到当前版本播放器能播放的文件的文件头长度述明返回值此版本播放器对应的文件头的长度DWORDDWORDPLAY_GetFileTime(LONGnPort)称得到文件总的时间长度,单位秒述明长度值函函数名DWORDPLAY_GetFileTotalFrames(LONGnPort)称件中的总帧数述nPort通道号明BOOLBOOLPLAY_GetKeyFramePos(LONGnPort,DWORDnValue,DWORDnType,PFRAME_POSpFramePos)查找指定位置之前的关键帧位置信息。图像解码必须从关键帧开始,如果用户保存的文件不是从关键帧开始的,那么倒下一个关键帧之前的数据会被忽略。如果用户要截取文件中的一段数据,则应该考虑从关键帧开始截取。结束位置则关系不大,nPortnValuepFramePos通道号当前位置,可以是时间或帧号,类型由nType如果nType是BY_FRAMENUM,则nValu表e示帧如果nType是BY_FRAMTIME,则nValu表e示时间,单位ms查找到的关键帧的文件位置信息结构指针。typedefstruct{longnFilePo;s/件位置;称述明}FRAME_POS,*PFRAME_POS//帧时标(ms);BOOLBOOLPLAY_GetNextKeyFramePos(LONGnPort,DWORDnValue,DWORDnType,PFRAME_POSpFramePos)置当前位置,可以是时间或帧号,类型由nType如果nType是BY_FRAMENUM,则nValu表e示帧如果nType是BY_FRAMTIME,则nValu表e示时间,单位ms查找到的关键帧的文件位置信息结构指针。typedefstruct{pFramePoslongnFilePo;slongnFrameNu;mlongnFrameTim;e/件位置;//帧序号;ms称述明}}FRAME_POS,*PFRAME_POS称述明返回值BOOLPLAY_GetPictureSize(LONGnPort,LONG*pWidth,LONGht获得码流中原始图像的大小,根据此大小来设置显示窗口的区域,可以不用显卡做缩放工作,对于那些不支持硬件缩放的显卡来说非常有用nPortpWidthpHeight通道号原始图像的宽。在PAL制CIF格式下是352原始图像的高。在PAL制CIF格式下是288成功返回TRUE,不成功返回FALSEDWORDDWORDPLAY_GetPlayedFrames(LONGnPort)称已经解码的视频帧数述明函函数名DWORDPLAY_GetPlayedTime(LONGnPort)称位秒述nPort通道号明间函数名DWORDPLAY_GetPlayedTimeEx(LONGnPort)称功能描得到文件当前播放的时间,单位毫秒述nPort通道号明文件当前播放的时间oBOOLBOOLPLAY_QueryInfo(LONGnPort,intcmdType,char*lenPLAY_CMD_GetTimems称述明获取时间信息,单flenreturnlenPLAY_CMD_GetFileRate获取帧率信息PLAY_CMD_GetMediaInfo获取媒体信息,信MEDIAINFO的缓冲息的有效数据长度MEDIA_INFOtMediaInfo;PLAY_QueryInfo(0,PLAY_CMD_GetMediaInfo,(char*)&tMediaInfo,sizeof(MEDIA_INFO),&len);函数名DWORDPLAY_GetSourceBufferRemain(LONGnPort)称能描获得流播放模式下源缓冲剩余数据述nPort通道号明返回值当前源缓冲的大小(BYTE)函数名BOOLPLAY_GetRealFrameBitRate(LONGnPort,double*述明pBitRate称BOOLBOOLPLAY_InitDDrawDevice()称显示设备,多显卡使能述明无cevoidvoidPLAY_ReleaseDDrawDevice()称释放枚举显示设备的过程中分配的资源述明无无函函数名BOOLPLAY_SetDDrawDevice(LONGnPort,DWORDnDeviceNum)称述明函函数名BOOLPLAY_SetDDrawDeviceEx(LONGnPort,DWORDiceNum述明foBOOLBOOLPLAY_GetDDrawDeviceInfo(DWORDnDeviceNum,LPSTRlpDriverDescription,DWORDnDespLen,LPSTRlpDriverNameDWORDnNameLenHMONITOR*hhMonitor)监视器信息述参数说nDeviceNum[in]显示设备的设备号,如果是0,则表示称lpDriverNamenNameLenhhMonitor[in]表示lpDriverDescript已in配空间的大小,单位byte[out]显示设备的设备名[in]表示lpDriverNam分配空间的大小,单位byte[out]显示设备使用的监视器句柄,通过WindowsAPI函数GetMonitorInfo,可以得到详细信息,供用户定位窗口位置成功返回TRUE,不成功返回FALSE明返回值DWORDDWORDPLAY_GetDDrawDeviceTotalNums()无系统中只有主显示设备1表示系统中安装了多块显卡,但只有一块显卡与Windows桌面绑定其他值表示系统中与桌面绑定的显卡数目。在多显卡的系统中可以通过设置显示属性,而指定任意一块显卡称述明称述明补充说明:目前的多显卡显示方式和上述接口函数有所出入。不需要由用户去指定用哪BOOLBOOLPLAY_ConvertToBmpFile(char*pBuf,longnSize,longnWidth,longnHeight,longnType,char*sFileName)不要调用明图像数据大小称述NameBMPeBOOLBOOLPLAY_ConvertToJpegFile(char*pYUVBuf,longnWidth,longnHeight,intYUVtype,intquality,charsFileName述明图像宽度YUV型,如T_YV12,T_UYVY好以jpg作为文件扩展名VBufhhtVtype称函函数名BOOLPLAY_CatchPic(LONGnPort,char*sFileName)称功能描抓图,将图片保存为指定的文件。设置的视频数据回调函数,只有在有视频数据解码出来时才调用,并由用户处理视频数据(如抓图),如果不断有解码的数据,就不断调用这个回调函数。而PLAY_CatchPic一次只抓一幅图,并能在暂停和单帧播放时实现抓图。建议:如果用户想实现抓图(一次抓一幅图),调用PLAY_CatchPic,而如果想得到一段时间内的视频述明BOOLBOOLPLAY_CatchPicEx(LONGnPort,char*sFileName,tPicFormatsePicfomat)明sFileName称述BOOLBOOLPLAY_CatchResizePic(LONGnPort,char*sFileName,LONGlTargetWidth,LONGlTargetHeight,tPicFormats述明sFileName称PicFomatsBOOLBOOLPLAY_GetPicBMP(LONGnPort,PBYTEpBmpBuf,DWORDdwBufSizeDWORDpBmpSize述明pBmpBufsizeof(BITM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论