다음을 통해 공유


DirectShow 비디오 캡처 필터

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

DirectShow의 캡처 필터에는 다른 종류의 필터와 구별되는 몇 가지 기능이 있습니다. 캡처 그래프 작성기는 많은 세부 정보를 숨기지만 DirectShow 캡처 그래프를 일반적으로 이해하기 위해 이 섹션을 읽는 것이 좋습니다.

고정 범주

캡처 필터에는 동일한 종류의 데이터(예: 미리 보기 핀 및 캡처 핀)를 제공하는 출력 핀이 두 개 이상 있는 경우가 많습니다. 따라서 미디어 유형은 핀을 구분하는 좋은 방법이 아닙니다. 대신 핀은 PIN 범주라는 GUID를 사용하여 식별되는 기능으로 구분됩니다.

해당 범주에 대한 핀을 쿼리하는 방법에 대한 자세한 내용은 핀 범주 작업을 참조하세요. 그러나 대부분의 애플리케이션에서는 핀을 직접 쿼리할 필요가 없습니다. 대신 다양한 ICaptureGraphBuilder2 메서드는 작동할 핀 범주를 지정하는 매개 변수를 사용합니다. 캡처 그래프 작성기가 올바른 핀을 자동으로 찾습니다.

핀 미리 보기 및 핀 캡처

일부 비디오 캡처 디바이스에는 미리 보기 및 캡처를 위한 별도의 출력 핀이 있습니다. 미리 보기 핀은 비디오를 화면에 렌더링하는 데 사용되고 캡처 핀은 파일에 비디오를 쓰는 데 사용됩니다.

미리 보기 핀과 캡처 핀에는 다음과 같은 차이점이 있습니다.

  • 미리 보기 핀은 캡처 핀의 처리량을 유지하기 위해 필요에 따라 프레임을 삭제합니다.
  • 캡처 핀의 각 프레임은 프레임이 캡처된 스트림 시간으로 타임스탬프를 지정합니다. 미리 보기 핀은 제공하는 샘플에 타임스탬프를 지정하지 않습니다.

미리 보기 프레임에 타임스탬프가 없는 이유는 필터 그래프가 스트림에 약간의 대기 시간을 도입하기 때문입니다. 캡처 시간을 프레젠테이션 시간으로 사용하는 경우 비디오 렌더러는 모든 샘플을 약간 늦은 것으로 처리합니다. 이로 인해 비디오 렌더러가 따라 잡는 동안 프레임을 삭제할 수 있습니다. 타임스탬프를 제거하면 렌더러가 프레임을 놓지 않고 도착할 때 각 샘플을 표시합니다.

미리 보기 핀의 핀 범주는 PIN_CATEGORY_PREVIEW. 캡처 핀 범주는 PIN_CATEGORY_CAPTURE.

비디오 포트 핀

비디오 포트는 비디오 장치(예: 아날로그 TV 튜너)와 비디오 카드 간의 하드웨어 연결입니다. 비디오 포트를 사용하면 디바이스가 그래픽 카드 직접 비디오 데이터를 보낼 수 있습니다. 비디오는 하드웨어 오버레이를 사용하여 화면에 표시됩니다. 비디오 포트는 별도의 카드에 있는 두 디바이스를 연결하는 실제 케이블일 수 있습니다. 또는 동일한 카드 하드 유선 연결일 수 있습니다.

비디오 포트의 장점은 CPU에서 아무 작업도 하지 않고 비디오가 비디오 메모리로 직접 전환된다는 것입니다. 그러나 비디오 포트에는 다음과 같은 몇 가지 단점이 있습니다.

  • 비디오 포트는 비디오를 미리 볼지 여부에 관계없이 캡처 중에 항상 오버레이 표면을 사용합니다.
  • 프레임 간 대칭 이동은 자동으로 발생하므로 대칭 이동 작업을 다른 비디오 작업과 동기화하기가 어렵습니다.

캡처 디바이스에서 비디오 포트를 사용하는 경우 캡처 필터에는 미리 보기 핀 대신 비디오 포트 핀이 있습니다. 비디오 포트 핀의 핀 범주는 PIN_CATEGORY_VIDEOPORT.

모든 캡처 필터에는 하나 이상의 캡처 핀이 있습니다. 또한 미리 보기 핀 또는 비디오 포트 핀이 있을 수 있지만 둘 다 가질 수는 없습니다. 필터에는 각각 별도의 미디어 형식을 제공하는 여러 캡처 핀과 미리 보기 핀이 있을 수 있습니다. 따라서 단일 필터에는 비디오 캡처 핀, 비디오 미리 보기 핀, 오디오 캡처 핀 및 오디오 미리 보기 핀이 있을 수 있습니다. (그러나 오디오용 비디오 포트에 해당하는 것은 없습니다.)

업스트림 WDM 필터

WDM(Windows 드라이버 모델) 디바이스에는 캡처 필터에서 업스트림 몇 가지 추가 필터가 필요할 수 있습니다. 이러한 필터에는 다음이 포함됩니다.

  • TV 튜너 필터. 아날로그 TV 튜너에 대한 조정을 제어합니다.
  • TV 오디오 필터. 아날로그 TV 튜너의 오디오 설정을 제어합니다.
  • 아날로그 비디오 크로스바 필터. 하드웨어 디바이스를 통해 비디오 및 오디오 신호를 라우팅합니다. 예를 들어 디바이스에는 S-Video 및 복합 비디오와 같은 여러 입력이 있을 수 있습니다. 크로스바 필터를 사용하면 애플리케이션에서 입력을 선택할 수 있습니다.

DirectShow에서 별도의 필터이지만 일반적으로 동일한 하드웨어 디바이스를 나타냅니다. 각 필터는 디바이스의 다른 기능을 제어합니다. 필터는 핀으로 연결되지만 핀 연결을 통해 이동하는 미디어 데이터는 없습니다. 따라서 이러한 필터의 핀은 미디어 형식을 설정하여 연결되지 않습니다. 대신 mediums라는 GUID 값을 사용합니다. 중간 GUID는 지정된 디바이스 미니 드라이버에 대해 고유하게 정의됩니다. 예를 들어 동일한 TV 카드 대한 TV 튜너 필터 및 비디오 캡처 필터는 모두 동일한 매체를 지원하므로 애플리케이션이 그래프를 올바르게 빌드할 수 있습니다.

실제로 ICaptureGraphBuilder2 를 사용하여 캡처 그래프를 빌드하는 한 이러한 필터가 그래프에 자동으로 추가됩니다. 자세한 내용은 WDM 클래스 드라이버 필터를 참조하세요.

DirectShow의 비디오 캡처 정보