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重复的使用录像->停止录像->录像->停止录像......。

解决方案 »

  1.   

    本人初用directshow,还望各位大侠指教指教。
      

  2.   

    if(m_pMC)
    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);在网上不记得下了哪一位大侠的代码里头有段这样的代码,把我里头的引脚等东西重新初始化后就可以停止后了新建文件名称录像了。谢谢。