다음을 통해 공유


비디오 미리 보기(DirectShow)

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

비디오 미리 보기 그래프를 빌드하려면 다음과 같이 ICaptureGraphBuilder2::RenderStream 메서드를 호출합니다.

ICaptureGraphBuilder2 *pBuild; // Capture Graph Builder
// Initialize pBuild (not shown).

IBaseFilter *pCap; // Video capture filter.

/* Initialize pCap and add it to the filter graph (not shown). */

hr = pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, 
    pCap, NULL, NULL);

이 예제에서는 다음을 가정합니다.

ICaptureGraphBuilder2::RenderStream 메서드의 첫 번째 매개 변수는 핀 범주를 지정합니다. 미리 보기 그래프의 경우 PIN_CATEGORY_PREVIEW 사용합니다. 두 번째 매개 변수는 미디어 형식을 주 형식 GUID로 지정합니다. 비디오의 경우 MEDIATYPE_Video 사용합니다. DV 장치는 미디어 유형이 MEDIATYPE_Interleaved 인터리브된 오디오 및 비디오를 제공합니다. DV 캡처에 대한 자세한 내용은 DirectShow의 디지털 비디오를 참조하세요.

세 번째 매개 변수는 캡처 필터의 IBaseFilter 인터페이스에 대한 포인터입니다. 다음 두 매개 변수는 이 예제에서 필요하지 않습니다. 스트림을 렌더링하는 데 필요할 수 있는 추가 필터를 지정하는 데 사용됩니다. 마지막 매개 변수를 NULL 로 설정하면 캡처 그래프 작성기가 미디어 유형에 따라 스트림의 기본 렌더러를 선택합니다. 비디오의 경우 캡처 그래프 작성 기는 항상 Video Renderer 필터를 기본 렌더러로 사용합니다.

참고

Windows XP 이상에서는 VMR(Video Mixing Renderer)이 IGraphBuilder 메서드의 기본 비디오 렌더러이지만 RenderStream 메서드의 기본 렌더러는 아닙니다. 모든 플랫폼에서 캡처 그래프 작성기는 달리 지정하지 않는 한 항상 이전 Video Renderer 필터를 사용합니다.

 

핀 범주는 PIN_CATEGORY_PREVIEW 지정되지만 필터에 실제로 미리 보기 핀이 있는지 여부는 중요하지 않습니다. 비디오 포트 핀 또는 캡처 핀만 있을 수 있습니다. 두 경우 모두 캡처 그래프 작성기가 올바른 그래프를 자동으로 빌드합니다.

다음 다이어그램은 비디오를 미리 볼 수 있는 가장 간단한 그래프를 보여줍니다.

비디오 미리 보기 그래프

이 다이어그램에서 캡처 필터에는 비디오 렌더러에 직접 연결하는 미리 보기 핀이 있습니다.

캡처 필터에 캡처 핀만 있는 경우 캡처 그래프 작성기에서 스마트 티 필터를 삽입하여 스트림을 캡처 스트림 및 미리 보기 스트림으로 분할합니다. 이 내용은 비디오 캡처 및 미리 보기 결합에 자세히 설명되어 있습니다.

경우에 따라 비디오 스트림이 오버레이 믹서 필터를 통과해야 합니다. 이 경우 RenderStream 메서드는 그래프에 자동으로 추가합니다.

비디오 캡처 및 미리 보기 결합

비디오 캡처