1.playM4 下载地址
2.里面有文档说明,可以参考细节
3.实际应用实例
unsigned int CALLBACK thread(LPVOID lpVoid) {
auto dlg = (CmfcDlg*)lpVoid;
auto pic = dlg->GetDlgItem(IDC_STATIC);
PlayFile(pic->GetSafeHwnd());
return 1;
}
_beginthreadex(NULL, 0, thread, (LPVOID)this, 0, NULL); //开启线程
//模拟流信息 播放视频
void PlayFile(HWND hwnd) {
CStdioFile file;
file.Open("d:\\tmp\\test_rec.hikvision",
CFile::modeNoTruncate |
CFile::modeReadWrite |
CFile::typeBinary);
const int rLen = 5128;
BYTE *resendBuf = new BYTE[rLen];
memset(resendBuf, 0, rLen);
int start = 1;
auto ret = PlayM4_GetPort(&nPort);
auto err = PlayM4_GetLastError(nPort);
ret = PlayM4_SetStreamOpenMode(nPort, STREAME_REALTIME); //设置模式
err = PlayM4_GetLastError(nPort);
while (true)
{
auto tLen = file.Read(resendBuf, rLen);
if (start == 1) { //初始化设置
PlayM4_OpenStream(nPort, resendBuf, tLen, 2 * 1024 * 1024);
auto ret = PlayM4_Play(nPort, hwnd);
auto err = PlayM4_GetLastError(nPort);
}
else {
PlayM4_InputData(nPort, resendBuf, tLen);
}
if (tLen != rLen)
{
break;
}
if (start != 0)
{
start = 0;
}
}
delete[] resendBuf;
resendBuf = NULL;
file.Close();
}
这篇博客详细介绍了如何在C++中利用PlayM4库进行视频播放。首先,通过_threadex开启线程,然后在回调函数中设置播放窗口及模式。通过CStdioFile读取文件,调用PlayM4的相关函数如OpenStream、Play、InputData等进行流信息模拟播放。代码示例展示了实时播放视频的具体步骤。
2392

被折叠的 条评论
为什么被折叠?



