다음을 통해 공유


캡처 그래프 작성기 정보

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

비디오 또는 오디오 캡처를 수행하는 필터 그래프를 캡처 그래프라고 합니다. 캡처 그래프는 파일 재생 그래프보다 더 복잡한 경우가 많습니다. 애플리케이션이 캡처 그래프를 쉽게 빌드할 수 있도록 DirectShow는 캡처 그래프 작성기라는 도우미 개체를 제공합니다. 캡처 그래프 작성기는 캡처 그래프를 빌드하고 제어하는 메서드를 포함하는 ICaptureGraphBuilder2 인터페이스를 노출합니다. 다음 다이어그램에서는 캡처 그래프 작성기 및 ICaptureGraphBuilder2 인터페이스를 보여 줍니다.

캡처 그래프 작성기 사용

먼저 CoCreateInstance를 호출하여 캡처 그래프 작성기 및 필터 그래프 관리자의 새 인스턴스를 만듭니다. 그런 다음 필터 그래프 관리자의 IGraphBuilder 인터페이스에 대한 포인터를 사용하여 ICaptureGraphBuilder2::SetFiltergraph 를 호출하여 캡처 그래프 작성기를 초기화합니다. 다음 다이어그램에서는 이 프로세스를 보여 줍니다.

캡처 그래프 작성기 초기화

다음 코드에서는 이러한 단계를 수행하는 도우미 함수를 보여 주었습니다.

HRESULT InitCaptureGraphBuilder(
  IGraphBuilder **ppGraph,  // Receives the pointer.
  ICaptureGraphBuilder2 **ppBuild  // Receives the pointer.
)
{
    if (!ppGraph || !ppBuild)
    {
        return E_POINTER;
    }
    IGraphBuilder *pGraph = NULL;
    ICaptureGraphBuilder2 *pBuild = NULL;

    // Create the Capture Graph Builder.
    HRESULT hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, 
        CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void**)&pBuild );
    if (SUCCEEDED(hr))
    {
        // Create the Filter Graph Manager.
        hr = CoCreateInstance(CLSID_FilterGraph, 0, CLSCTX_INPROC_SERVER,
            IID_IGraphBuilder, (void**)&pGraph);
        if (SUCCEEDED(hr))
        {
            // Initialize the Capture Graph Builder.
            pBuild->SetFiltergraph(pGraph);

            // Return both interface pointers to the caller.
            *ppBuild = pBuild;
            *ppGraph = pGraph; // The caller must release both interfaces.
            return S_OK;
        }
        else
        {
            pBuild->Release();
        }
    }
    return hr; // Failed
}

비디오 캡처에 대한 이 섹션에서는 캡처 그래프 작성기를 사용하여 캡처 그래프를 만드는 것으로 가정합니다. 그러나 IGraphBuilder 메서드를 사용하여 캡처 그래프를 완전히 빌드할 수 있습니다. 그러나 고급 항목으로 간주되며 캡처 그래프 작성기 메서드가 선호됩니다. 자세한 내용은 고급 캡처 항목을 참조하세요.

DirectShow의 비디오 캡처 정보