⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avplayer.h

📁 TM8000硬盘录像机客户端编程文档和Demo源代码
💻 H
字号:
#ifndef AVPLAYER_H
#define AVPLAYER_H

#define DLLEXPORT_API  extern "C"__declspec(dllexport) 

#include <Mmreg.h>
#include "TM4Format\\TmFileFormat.h"
/**************最多支持16路解码*********************/
//消息定义
#define PB_MSG_PLAY_END     0x01

#define PB_MSG_PLAY_ENDEX   0xFFFFFFFF
// 远程回放控制 
#define REMOTEPLAY_NORMAL	0
#define REMOTEPLAY_SLOW_2	1
#define REMOTEPLAY_SLOW_4	2
#define REMOTEPLAY_SLOW_8	3
#define REMOTEPLAY_FAST_2	4 
#define REMOTEPLAY_FAST_4	5
#define REMOTEPLAY_FAST_8	6
#define REMOTEPLAY_PAUSE	10
#define REMOTEPLAY_PACE		11
#define REMOTEPLAY_FASTFORWARD		12

#define REMOTEPLAY_FAST_WAITTIME 1000
typedef void (__stdcall *CALLBACK_READ_FRAME_DATA)(HANDLE PlayHandle,PBYTE pBuf,DWORD nSize,BYTE nFrameType);
typedef void (__stdcall *CALLBACK_DECODE_YUV_DATA)(HANDLE PlayHandle,PBYTE Ybuf,PBYTE Ubuf,PBYTE Vbuf,int nWidth,int nHeight,BYTE FrameType,void *context);
typedef void (__stdcall *CALLBACK_DECODE_WAVE_DATA)(HANDLE PlayHandle,WAVEFORMATEX pWave,unsigned short *WaveBuf,DWORD nLength);
DLLEXPORT_API int __stdcall PB_IniPlayer(HANDLE *pPlayHandle,HWND hWnd,BOOL bIsRemotePlayBack = FALSE); //初始化播放器nPort (0-3)下同
DLLEXPORT_API int __stdcall PB_Release(HANDLE &PlayHandle);             //释放播放器
/****************文件播放*****************************************/
//DLLEXPORT_API int __stdcall PB_OpenFile(HANDLE PlayHandle,LPCSTR lpFileName,DWORD*,DWORD* );//打开文件
DLLEXPORT_API int __stdcall PB_OpenFile(HANDLE PlayHandle,char* lpFileName,BOOL First);//打开文件
DLLEXPORT_API int __stdcall PB_GetFileInfo(HANDLE PlayHandle,DWORD *dwTimeLength,DWORD *dwFileLength,
										   DWORD *dwWidth,DWORD *dwHeight);  //得到文件信息
DLLEXPORT_API int __stdcall PB_Play(HANDLE PlayHandle);                      //播放
DLLEXPORT_API int __stdcall PB_Stop(HANDLE PlayHandle);                      //停止
DLLEXPORT_API int __stdcall PB_PlayPrev(HANDLE PlayHandle,DWORD dwValue);         //变速播放
                            /*
							dwValue 1---1000之间
							*/
DLLEXPORT_API int __stdcall PB_StepIn(HANDLE PlayHandle);                         //单帧进
DLLEXPORT_API int __stdcall PB_StepOut(HANDLE PlayHandle);                        //单帧退
DLLEXPORT_API int __stdcall PB_FastPlay(HANDLE PlayHandle,DWORD nValue);          //快速播放 
                            /*
							nValue 1--1000之间
							*/
DLLEXPORT_API int __stdcall PB_PlayMotion(HANDLE PlayHandle,DWORD dwDelayNoMove,DWORD dwDelayMove);        //运动播放
                            /*
							图象有运动时播放速度为每帧dwDelayNoMove毫秒(1-1000)
							图象无运动时播放速度为每帧dwDelayMove 毫秒(1-1000)
							*/
DLLEXPORT_API int __stdcall PB_Pause(HANDLE PlayHandle);                          //暂停  
DLLEXPORT_API int __stdcall PB_Resume(HANDLE PlayHandle);                         //继续
DLLEXPORT_API int __stdcall PB_GetPlayInfo(HANDLE PlayHandle,DWORD *dwPlayedTime);//得到播放的时间
DLLEXPORT_API int __stdcall PB_SetPlayPosition(HANDLE PlayHandle,float fOffset);  //设置播放位置
DLLEXPORT_API int __stdcall PB_SetLoop(HANDLE PlayHandle,BOOL  bIsLoop);          //循环播放 
DLLEXPORT_API int __stdcall PB_RegisterMessage(HANDLE PlayHandle,HWND hWnd,UINT MessageID);//注册播放结束消息
/***********************流播放*****************************************/
DLLEXPORT_API int __stdcall PB_OpenStream(HANDLE PlayHandle);
DLLEXPORT_API int __stdcall PB_RegisgerCallBack(HANDLE PlayHandle,CALLBACK_READ_FRAME_DATA pCallPro);
DLLEXPORT_API int __stdcall PB_InputData(HANDLE PlayHandle,PBYTE pBuf,DWORD nSize);
DLLEXPORT_API int __stdcall PB_StopStream(HANDLE PlayHandle);
DLLEXPORT_API int __stdcall PB_CloseStream(HANDLE PlayHandle);
DLLEXPORT_API int __stdcall PB_StartJitterFilter(HANDLE PlayHandle,BOOL bStart);             
DLLEXPORT_API int __stdcall PB_SetupJitterFilterFrameCount(HANDLE PlayHandle,
									DWORD dwMinFrameCount,DWORD dwMaxFrameCount);
DLLEXPORT_API int __stdcall PB_GetStreamFrameSize(HANDLE PlayHandle);
DLLEXPORT_API int __stdcall PB_GetAudioFrameSize(HANDLE PlayHandle);
/**********************************************************************/
DLLEXPORT_API int __stdcall PB_SetAudio(HANDLE PlayHandle,BOOL bEnabled);         //设置音频
DLLEXPORT_API int __stdcall PB_SetLogoBitmap(HANDLE PlayHandle,HBITMAP hBitmap);
DLLEXPORT_API int __stdcall PB_UpDateImage(HANDLE PlayHandle);        //刷新图象
DLLEXPORT_API int __stdcall PB_UpdateBounds(HANDLE PlayHandle);       //刷新显示窗口边界  
DLLEXPORT_API int __stdcall PB_SetDisplayRect(HANDLE PlayHandle,BOOL bLocalDisplay,RECT *Rect);//设置显示的区域(0-352,0-288)
DLLEXPORT_API int __stdcall PB_CapturePicture(HANDLE PlayHandle,HBITMAP hBitmap); //捕捉当前的图象

DLLEXPORT_API int __stdcall PB_OpenFileEx(HANDLE PlayHandle,LPCTSTR strlist[],int filenum,DWORD &nTimeLength);
DLLEXPORT_API int __stdcall PB_FastBackwardPlay(HANDLE PlayHandle,DWORD nValue);
DLLEXPORT_API int __stdcall PB_SeekToSecond(HANDLE PlayHandle,int nSec);

DLLEXPORT_API int __stdcall PB_SetDisplayhWnd(HANDLE PlayHandle,HWND hWnd);

DLLEXPORT_API int __stdcall PB_CapturePictureEx(HANDLE PlayHandle,void **bmpbuf,int &bmpsize); //捕捉当前的图象
DLLEXPORT_API int __stdcall PB_ReleaseDecoder(HANDLE PlayHandle);//释放解码器

DLLEXPORT_API int __stdcall PB_SetVolume(HANDLE PlayHandle,LONG volume);  //设置通道音量 音量范围-10000~0
DLLEXPORT_API int __stdcall PB_GetVolume(HANDLE PlayHandle,LONG *volume); //获取通道音量 音量范围 -10000~0
DLLEXPORT_API int __stdcall PB_SetAudioFormat(HANDLE PlayHandle,AUDIOFORMAT *pAudioFormat,int AudioType);  //设置声音格式 AudioType:1 MP3,2 G722
DLLEXPORT_API int __stdcall PB_InputOneFrameData(HANDLE PlayHandle,PBYTE pBuf,DWORD nSize,BYTE nFrameType,DWORD TimeTick); //输入一帧数据 nFrameType:0x0D音频 0x0E I帧 0x0B P帧
DLLEXPORT_API int __stdcall PB_ReIniDisplay(HANDLE PlayHandle);
DLLEXPORT_API int __stdcall PB_CaptureStream(HANDLE PlayHandle,DWORD dwStartSec,DWORD dwEndSec,LPCTSTR FileName);
DLLEXPORT_API int __stdcall PB_InputOnePack(HANDLE PlayHandle,DATA_PACK *mPack);
DLLEXPORT_API int __stdcall PB_SetTimeTickType(HANDLE PlayHandle,int nTimeTickType);

DLLEXPORT_API int __stdcall PB_RemoteFastPlay(HANDLE PlayHandle,int Level);
DLLEXPORT_API int __stdcall PB_RemotePause(HANDLE PlayHandle);
DLLEXPORT_API int __stdcall PB_RemoteSlowPlay(HANDLE PlayHandle,int Level);
DLLEXPORT_API int __stdcall PB_RemoteNormalPlay(HANDLE PlayHandle);
DLLEXPORT_API int __stdcall PB_RegDecodeDataCallBack(HANDLE PlayHandle,CALLBACK_DECODE_YUV_DATA pCallPro);
DLLEXPORT_API int __stdcall PB_RegWaveDataCallBack(HANDLE PlayHandle,CALLBACK_DECODE_WAVE_DATA pCallPro);
DLLEXPORT_API int __stdcall PB_SetQualityLevel(int nQualityLevel);
DLLEXPORT_API int __stdcall PB_RegDecodeDataCallBackEx(HANDLE PlayHandle,CALLBACK_DECODE_YUV_DATA pCallPro,void *context);

#endif  

/*
                       播放器(文件、流播放)编程说明
A:函数说明:
   3:PB_IniPlayer(HANDLE PlayHandle,HWND hWnd)
      初始化播放器。nPort为通道号在0---5之间,下同;hWnd为显示窗口
   4:PB_Release(HANDLE PlayHandle)
      释放播放器
   5:PB_OpenFile(HANDLE PlayHandle,LPCSTR lpFileName)
      打开文件。lpFileName:文件名
   6:PB_GetFileInfo(HANDLE PlayHandle,DWORD *dwTimeLength,DWORD *dwFileLength,
				DWORD *dwWidth,DWORD *dwHeight)
      得到文件信息,dwTimeLength 文件的时间(毫秒)
                    dwFileLength 文件的长度(字节)
                    dwWidth      图象的宽度
                    dwHeight     图象的高度
   7:PB_Play(HANDLE PlayHandle)
      播放文件
   8:PB_Stop(HANDLE PlayHandle)
      停止
   9:PB_PlayPrev(HANDLE PlayHandle,DWORD dwValue)
      边速播放 dwValue:为每帧的播放的时间(毫秒)。在1---1000之间
   10:PB_StepIn(HANDLE PlayHandle)
       单帧进
   11:PB_StepOut(HANDLE PlayHandle)
       单帧退
   12:PB_FastPlay(HANDLE PlayHandle,DWORD nValue)
       快进。nValue:每帧的播放时间(毫秒)。在1---1000之间
   13:PB_PlayMotion(USHORT nPost,DWORD dwDelayNoMove,DWORD dwDelayMove)
       图象运动播放
       图象有运动时播放速度为每帧dwDelayNoMove毫秒(1-1000)
       图象无运动时播放速度为每帧dwDelayMove 毫秒(1-1000)
   14:PB_Pause(HANDLE PlayHandle)
       暂停
   15:PB_Resume(HANDLE PlayHandle)
       继续
   16:PB_GetPlayInfo(HANDLE PlayHandle,DWORD *dwPlayedTime)
       返回当前播放的时间  dwPlayedTime:返回当前播放的时间
   17:PB_SetPlayPosition(HANDLE PlayHandle,float fOffset)
       从给定的位置播放。fOffset:文件位置在0--1之间:0:文件开头,1:文件末尾
   18:PB_SetLoop(HANDLE PlayHandle,BOOL  bIsLoop)
       循环播放。 bIsLoop:循环播放标志
   19:PB_RegisterMessage(HANDLE PlayHandle,HWND hWnd,UINT MessageID)
       注册文件播放结束消息。hWnd:窗口句柄,MessageID:消息ID
   20:PB_OpenStream(HANDLE PlayHandle)
       打开流
   21:PB_InputData(HANDLE PlayHandle,PBYTE pBuf,DWORD nSize)
       输入数据。pBuf:数据指针;nSize:数据长度,在12--65536之间
   22:PB_StopStream(HANDLE PlayHandle)
       停止流播放
   23:PB_CloseStream(HANDLE PlayHandle)
       关闭流
   24:PB_StartJitterFilter(HANDLE PlayHandle,BOOL bStart)
       启动或停止抖动滤波器。bStart:启动或停止标志
       默认为启动
   25:PB_SetupJitterFilterFrameCount(HANDLE PlayHandle,
			DWORD dwMinFrameCount,DWORD dwMaxFrameCount)
       设置抖动滤波器的参数。
       目的是消除网络阻塞引起的数据到达的时间波动。
         dwMinFrameCount:抖动滤波器的最小帧数,此参数过大时,图象的延时会加大。默认:3
         dwMaxFrameCount:抖动滤波器的最大帧数,次参数过大时,内存开销会加大。  默认:75
   26:PB_GetStreamFrameSize(HANDLE PlayHandle)
       返回当前抖动滤波器中的帧数。
   27:PB_SetAudio(HANDLE PlayHandle,BOOL bEnabled)
       启动或停止音频的播放。bEnabled:启动或停止标志
   28:PB_SetLogoBitmap(HANDLE PlayHandle,HBITMAP hBitmap)
       设置显示窗口的LOGO图象。hBitmap:位图句柄
   29:PB_UpDateImage(HANDLE PlayHandle)
       刷新当前图象
   30:PB_UpdateBounds(HANDLE PlayHandle)
       刷新显示窗口的边界 
   31:PB_SetDisplayRect(HANDLE PlayHandle,BOOL bLocalDisplay,RECT *Rect)
       设置显示区域(用于局部放大)
       bLocalDisplay:是否局部显示为0时,不理采Rect
       Rect         :局部显示的区域,(0-352,0-288)
   32:PB_CapturePicture(HANDLE PlayHandle,HBITMAP hBitmap)
       捕捉当前的图象

B: 函数调用流程说明
       ---------------------初始化-----------------------------------------------
       | PB_IniSelf(HWND hParentHwnd)       	    							|  
       | PB_IniPlayer(HANDLE PlayHandle,HWND hWnd)       							|
       | PB_SetLogoBitmap(HANDLE PlayHandle,HBITMAP hBitmap)							|
       --------------------------------------------------------------------------
       ---------------------文件播放---------------------------------------------
       | PB_RegisterMessage(HANDLE PlayHandle,HWND hWnd,UINT MessageID)				|
       | PB_OpenFile(HANDLE PlayHandle,LPCSTR lpFileName)							|	
       | PB_GetFileInfo(HANDLE PlayHandle,DWORD *dwTimeLength,DWORD *dwFileLength,	|
       |				   DWORD *dwWidth,DWORD *dwHeight)						|
       | PB_Play(HANDLE PlayHandle)													|
       | PB_Stop(HANDLE PlayHandle)													|
       | PB_PlayPrev(HANDLE PlayHandle,DWORD dwValue) 								|
       | PB_StepIn(HANDLE PlayHandle)												|
       | PB_StepOut(HANDLE PlayHandle)												|
       | PB_FastPlay(HANDLE PlayHandle,DWORD nValue)									|
       | PB_PlayMotion(USHORT nPost,DWORD dwDelayNoMove,DWORD dwDelayMove)		|
       | PB_Pause(HANDLE PlayHandle)													|
       | PB_Resume(HANDLE PlayHandle)												|
       | PB_GetPlayInfo(HANDLE PlayHandle,DWORD *dwPlayedTime)						|
       | PB_SetPlayPosition(HANDLE PlayHandle,float fOffset)							|
       | PB_SetLoop(HANDLE PlayHandle,BOOL  bIsLoop)									|
       -------------------------------------------------------------------------- 
       ---------------------流播放-----------------------------------------------
       | PB_OpenStream(HANDLE PlayHandle)											|
       | PB_StartJitterFilter(HANDLE PlayHandle,BOOL bStart)             			|
       | PB_SetupJitterFilterFrameCount(HANDLE PlayHandle,							|
       |               WORD dwMinFrameCount,DWORD dwMaxFrameCount)				|
       | PB_InputData(HANDLE PlayHandle,PBYTE pBuf,DWORD nSize)						|	
       | PB_GetStreamFrameSize(HANDLE PlayHandle)									|
       | PB_StopStream(HANDLE PlayHandle)											|
       | PB_CloseStream(HANDLE PlayHandle)											|
       -------------------------------------------------------------------------- 
       --------------------------------------------------------------------------
       | PB_SetAudio(HANDLE PlayHandle,BOOL bEnabled)								|
       | PB_UpDateImage(HANDLE PlayHandle) 			            					|
       | PB_UpdateBounds(HANDLE PlayHandle)					 						|
       | PB_SetDisplayRect(HANDLE PlayHandle,BOOL bLocalDisplay,RECT *Rect)			|	
       | PB_CapturePicture(HANDLE PlayHandle,HBITMAP hBitmap)						|
       --------------------------------------------------------------------------  
       ---------------------释放-------------------------------------------------
       | PB_Release(HANDLE PlayHandle)												|
       | PB_ReleaseSelf 			            								|
       --------------------------------------------------------------------------  
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -