CoInitialize( NULL ); 
////////////////////////////////////////////////
    HRESULT hr;
    // Create the filter graph
    hr = CoCreateInstance (CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
                           IID_IGraphBuilder, (void **) &g_pGraph);
AddToRot(g_pGraph,&dw);    // Create the capture graph builder
hr = CoCreateInstance(CLSID_SMARTTEE,0,CLSCTX_ALL,IID_IBaseFilter,(void**)&smart_tee);
    hr = CoCreateInstance (CLSID_CaptureGraphBuilder2 , NULL, CLSCTX_ALL,IID_ICaptureGraphBuilder2, (void **) &g_pCapture);  
  hr = CoCreateInstance(CLSID_VIDEO_RENDERER2,0,CLSCTX_ALL,IID_IBaseFilter,(void**)&pPreview);
  hr = CoCreateInstance(CLSID_VIDEO_AVI_MUX,0,CLSCTX_ALL,IID_IBaseFilter,(void**)&pMux);
  hr = CoCreateInstance(CLSID_VIDEO_FILE_WRITE,0,CLSCTX_ALL,IID_IBaseFilter,(void**)&pFilewrite);
  hr = CoCreateInstance(CLSID_VIDEO_Decompressor,0,CLSCTX_ALL,IID_IBaseFilter,(void**)&pcompresspr);
hr = g_pGraph->QueryInterface(IID_IMediaControl,(LPVOID *) &g_pMC);
hr = g_pGraph->QueryInterface(IID_IVideoWindow, (LPVOID *) &g_pVW);
//////////////////////////////////////////////////
hr = g_pCapture->SetFiltergraph(g_pGraph);
////////////////////////////////////////////////
//找寻设备
hr = FindCaptureDevice(&pSrcFilter);
hr = g_pGraph->AddFilter(pSrcFilter, L"Video Capture");
hr = g_pGraph->AddFilter(smart_tee,L"smart_tee");
hr = g_pGraph->AddFilter(pPreview,L"render");
hr = g_pGraph->AddFilter(pMux,L"MUX");
hr = g_pGraph->AddFilter(pFilewrite,L"FileWrite");
hr = g_pGraph->AddFilter(pcompresspr,L"Compressor");
//连接
  IPin *ppPin_IN=NULL;
  IPin  *ppPin_OUT=NULL;
// 
GetUnconnectedPin(smart_tee,PINDIR_INPUT,&ppPin_IN);
GetUnconnectedPin(pSrcFilter,PINDIR_OUTPUT,&ppPin_OUT);
hr = g_pGraph->ConnectDirect(ppPin_OUT,ppPin_IN,NULL);
ppPin_IN->Release();
ppPin_OUT->Release();

//  ////////////////////////////////////////////////////////
GetUnconnectedPin(smart_tee,PINDIR_OUTPUT,&ppPin_OUT);
GetUnconnectedPin(pMux,PINDIR_INPUT,&ppPin_IN);
hr = g_pGraph->ConnectDirect(ppPin_OUT,ppPin_IN,NULL);

ppPin_IN->Release();
ppPin_OUT->Release();

GetUnconnectedPin(pFilewrite,PINDIR_INPUT,&ppPin_IN);
GetUnconnectedPin(pMux,PINDIR_OUTPUT,&ppPin_OUT);
hr = g_pGraph->ConnectDirect(ppPin_OUT,ppPin_IN,NULL);
ppPin_IN->Release();
ppPin_OUT->Release();// /////////////////////////////////////////////////////////
GetUnconnectedPin(smart_tee,PINDIR_OUTPUT,&ppPin_OUT);
GetUnconnectedPin(smart_tee,PINDIR_OUTPUT,&ppPin_OUT);
GetUnconnectedPin(pcompresspr,PINDIR_INPUT,&ppPin_IN);
hr = g_pGraph->ConnectDirect(ppPin_OUT,ppPin_IN,NULL);
ppPin_IN->Release();
ppPin_OUT->Release();
GetUnconnectedPin(pcompresspr,PINDIR_OUTPUT,&ppPin_OUT);
GetUnconnectedPin(pPreview,PINDIR_INPUT,&ppPin_IN);
hr = g_pGraph->ConnectDirect(ppPin_OUT,ppPin_IN,NULL);
ppPin_IN->Release();
ppPin_OUT->Release();////////////pFilewrite->QueryInterface(IID_IFileSinkFilter, (LPVOID *) &g_filesink);
pmt->majortype=MEDIATYPE_Video;
pmt->subtype=MEDIASUBTYPE_Avi;
g_filesink->SetFileName(L"E:\\en.avi",pmt);
HWND Hhapp = 0;
GetDlgItem(IDC_PEOPLEFACE_PIC,&Hhapp);
CRect rect;
GetDlgItem(IDC_PEOPLEFACE_PIC)->GetClientRect(&rect);
//  hr = g_pVW->put_Owner((OAHWND)Hhapp); if (g_pVW)
{
//设置预览窗口的拥有者 g_pVW->put_Owner((DWORD)Hhapp);
g_pVW->put_Left(1);
g_pVW->put_Top(1);
//获取预览窗口风格
long style;
g_pVW->get_WindowStyle(&style);
style = style & ~WS_CAPTION;
style = style & ~WS_DLGFRAME;
style = style & WS_CHILD;
g_pVW->put_WindowStyle(style);
//设置预览窗口宽度和高度
g_pVW->put_Height(rect.Height());
g_pVW->put_Width(rect.Width());
}
   hr = g_pMC->Run();
我在editgraph下观看filter的连接,都是对可是为啥没有在设置的地址处录制视频,也不能显示摄像采集的画面了。在editgraph手动天街这几个filter 是可以采集也可以录制的代码中还差什么?