这几天要使用opencv处理视频,需要做一个MFC界面。就整理了关于MFC播放视频的代码。
首先在界面上一个打开文件的button,若还没有选择视频位置,则播放键为灰。用户选择后可以得到视频的位置,相应的播放键从灰色变成可选。
void CShowVideoDlg::OnBnClickedOpenVideo()
{
CFileDialog mcfiledialog(TRUE,NULL,NULL,0,"Video File (*.avi)||",this);//文件打开窗口
if (IDOK == mcfiledialog.DoModal())//点击确定后,将路径记录至strVideopath中。
{
strVideoPath = mcfiledialog.GetPathName();
}
if (strVideoPath!="")//若path为空,则将两个播放按钮变灰
{
GetDlgItem(IDC_BUTTON2)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON4)->EnableWindow(TRUE);
}
// TODO: 在此添加控件通知处理程序代码
}
然后就可以写播放视频的代码了,之前写的代码视频播放功能倒是可以实现,但是存在两个问题:
1.视频播放的过程中界面不能响应操作。
2.视频播放速度过快
为解决第一个问题,需要引入多线程,以下是关于多线程实现视频播放的代码
//按下播放键后,生成线程所需信息,创建新线程。
void CShowVideoDlg::OnBnClickedButton2()<