📄 avplayer.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 + -