如何在对话框中同时播放3个avi视频?

chenyuntian 2013-01-21 10:18:14
在对话框中如何播放3个avi文件?(3个文件播放时间一致)
采用CDigitalvideo进行播放,发现很奇怪,对于有的avi文件可以播放,有的则打开失败(JPEG转AVI)!
请有经验的朋友指点下,如何实现,及控制,多谢!



BOOL CDigitalvideo::Open (CString Filename, CWnd *pWnd, int left, int top,int width,int height)
{
if (!m_Open){//如果m_Open=false,没有打开设备
// 初始化成员变量
m_Open = m_Pause = m_Playing = FALSE;
m_DeviceID = 0;
// 文件是否存在
CFileStatus Status;
if (!CFile::GetStatus (Filename, Status))
return FALSE;
// 打开设备
MCI_DGV_OPEN_PARMS MCIOpen;
MCIOpen.lpstrDeviceType = "avivideo";//设置播放设备为视频播放设备
MCIOpen.lpstrElementName = (LPSTR) Filename.GetBuffer (0);//文件名
MCIOpen.wDeviceID = NULL;
MCIOpen.hWndParent = pWnd->m_hWnd;//可播放视频文件窗口指针
MCIOpen.dwStyle = WS_CHILD | WS_VISIBLE;
if (mciSendCommand (NULL, MCI_OPEN, MCI_WAIT | MCI_OPEN_TYPE |
MCI_OPEN_ELEMENT | MCI_DGV_OPEN_PARENT | MCI_DGV_OPEN_WS, (DWORD)(LPVOID) &MCIOpen))
return FALSE;
m_DeviceID = MCIOpen.wDeviceID;
m_Open = TRUE;
// 将文件长度设置为帧
MCI_DGV_SET_PARMS MCISet;
MCISet.dwTimeFormat = MCI_FORMAT_FRAMES;
if (mciSendCommand (m_DeviceID, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD)(LPVOID) &MCISet)){
Close ();
return FALSE;
}
// 找到视频文件的开始位置
mciSendCommand (m_DeviceID, MCI_SEEK, MCI_SEEK_TO_START, NULL);
//将播放画面置于主窗口之中
MCI_DGV_PUT_PARMS MCIPut;
MCIPut.rc.left = left;
MCIPut.rc.top = top;
MCIPut.rc.right = width;
MCIPut.rc.bottom = height;
if (mciSendCommand (m_DeviceID, MCI_PUT, MCI_WAIT | MCI_DGV_PUT_CLIENT |
MCI_DGV_PUT_WINDOW | MCI_DGV_RECT, (DWORD)(LPVOID) &MCIPut)){
Close ();
return FALSE;
}
}
return TRUE;
}
...全文
121 4 点赞 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
快乐鹦鹉 2013-01-22
CDigitalvideo是什么东东?
  • 打赏
  • 举报
回复
schlafenhamster 2013-01-22
“有什么可以播放任意格式AVI视频文件的控件吗?” 还没有,商业 软件 比较 全
  • 打赏
  • 举报
回复
chenyuntian 2013-01-22
是的,不支持avi解码,使用CAnimationCtrl也无法播放。 有什么可以播放任意格式AVI视频文件的控件吗??
  • 打赏
  • 举报
回复
zzz_zou 2013-01-22
直接对话框中搞3个窗口进行播放不就可以了吗? 你的意思是有的avi解码失败?那肯定是解码器不支持啦
  • 打赏
  • 举报
回复
相关推荐
发帖
界面
加入

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2013-01-21 10:18
社区公告
暂无公告