IMediaControl *m_pMC;
ICaptureGraphBuilder2 *m_pCapture;
————————————
//录像
HRESULT CCaptureClass::CaptureImages(CString inFileName)
{
HRESULT hr=0;
// 先停止视频
m_pMC->Stop();
// 设置文件名
hr = m_pCapture->SetOutputFileName(&MEDIASUBTYPE_Avi, inFileName.AllocSysString(), &pMux, NULL );
// 渲染媒体,连接所有滤波器
hr = m_pCapture->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video, m_pBF, NULL, pMux );
pMux->Release();
// 恢复视频
m_pMC->Run();
return hr;
}
//停止录像
void CCaptureClass::StopFilter()
{
m_pMC->Stop();
m_pCapture->SetFiltergraph(NULL);
m_pMC->Run();
}我把这两个方法放置在两个个按钮里,然后第一次录像后停止得到的文件正常,但是第二次录像再停止后得到的文件会随着程序的关闭而消失。要怎样才可以使directshow重复的使用录像->停止录像->录像->停止录像......。
ICaptureGraphBuilder2 *m_pCapture;
————————————
//录像
HRESULT CCaptureClass::CaptureImages(CString inFileName)
{
HRESULT hr=0;
// 先停止视频
m_pMC->Stop();
// 设置文件名
hr = m_pCapture->SetOutputFileName(&MEDIASUBTYPE_Avi, inFileName.AllocSysString(), &pMux, NULL );
// 渲染媒体,连接所有滤波器
hr = m_pCapture->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video, m_pBF, NULL, pMux );
pMux->Release();
// 恢复视频
m_pMC->Run();
return hr;
}
//停止录像
void CCaptureClass::StopFilter()
{
m_pMC->Stop();
m_pCapture->SetFiltergraph(NULL);
m_pMC->Run();
}我把这两个方法放置在两个个按钮里,然后第一次录像后停止得到的文件正常,但是第二次录像再停止后得到的文件会随着程序的关闭而消失。要怎样才可以使directshow重复的使用录像->停止录像->录像->停止录像......。
解决方案 »
- 请问怎么使用mciSendCommand调节MP3的音量
- 怎么记录鼠标的移动轨迹
- vc2003 如何给自己写的activex控件添加事件?
- 想把一位图贴在一STATIC上!为什么不显示?付代码!
- 调用::InvalidateRect(NULL, CRect(0, 0, 80, 60), TRUE);为什么整个屏幕都闪一下??
- ADO编程:大容量数据库访问的问题
- 用c作图,请各位帮忙
- 刚学ActiveX,小问题请教
- 初学 数据结构 顺序表遇到问题了
- 关于GetPrivateProfileString的问题
- WIN32对话框怎么显示在最顶层,SetWindowPos 解决不了问题
- 请教初学MFC遇到的问题
m_pMC->Stop();
if(m_pVW)
{
m_pVW->put_Visible(OAFALSE);
m_pVW->put_Owner(NULL);
} SAFE_RELEASE(m_pCapture);
SAFE_RELEASE(m_pMC);
SAFE_RELEASE(m_pGB);
SAFE_RELEASE(m_pBF);
SAFE_RELEASE(m_pVW);
//SAFE_RELEASE(m_pGrabber);
m_hWnd = NULL;
m_pVW = NULL;
m_pMC = NULL;
m_pGB = NULL;
m_pCapture = NULL;
return PreviewImages(iDeviceID,hWnd);在网上不记得下了哪一位大侠的代码里头有段这样的代码,把我里头的引脚等东西重新初始化后就可以停止后了新建文件名称录像了。谢谢。