Share via


DirectShow 애플리케이션 프로그래밍 소개

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

이 문서에서는 DirectShow에서 사용되는 기본 용어 및 개념을 소개합니다. 이 섹션을 읽은 후 첫 번째 DirectShow 애플리케이션을 작성할 준비가 됩니다.

필터 및 그래프 필터링

DirectShow의 구성 요소는 필터라는 소프트웨어 구성 요소입니다. 필터는 멀티미디어 스트림에서 일부 작업을 수행하는 소프트웨어 구성 요소입니다. 예를 들어 DirectShow 필터는

  • 파일 읽기
  • 비디오 캡처 디바이스에서 비디오 가져오기
  • MPEG-1 비디오와 같은 다양한 스트림 형식 디코딩
  • 그래픽 또는 사운드 카드 데이터 전달

필터는 입력을 수신하고 출력을 생성합니다. 예를 들어 필터가 MPEG-1 비디오를 디코딩하는 경우 입력은 MPEG로 인코딩된 스트림이고 출력은 일련의 압축되지 않은 비디오 프레임입니다.

DirectShow에서 애플리케이션은 필터 체인을 함께 연결하여 작업을 수행하므로 한 필터의 출력이 다른 필터의 입력이 됩니다. 연결된 필터 집합을 필터 그래프라고 합니다. 예를 들어 다음 다이어그램은 AVI 파일을 재생하기 위한 필터 그래프를 보여줍니다.

avi 파일을 재생하도록 그래프 필터링

파일 원본 필터는 하드 디스크에서 AVI 파일을 읽습니다. AVI 분할기 필터는 파일을 압축된 비디오 스트림과 오디오 스트림의 두 스트림으로 구문 분석합니다. AVI 압축 해제기 필터는 비디오 프레임을 디코딩합니다. Video Renderer 필터는 DirectDraw 또는 GDI를 사용하여 프레임을 디스플레이에 그립니다. 기본 DirectSound 디바이스 필터는 DirectSound를 사용하여 오디오 스트림을 재생합니다.

애플리케이션이 이 데이터 흐름을 모두 관리할 필요는 없습니다. 대신 필터는 Filter Graph Manager라는 상위 수준 구성 요소에 의해 제어됩니다. 애플리케이션은 "실행"(그래프를 통해 데이터를 이동하기 위해) 또는 "중지"(데이터 흐름을 중지하기 위해)와 같은 상위 수준 API 호출을 수행합니다. 스트림 작업을 더 자세히 제어해야 하는 경우 COM 인터페이스를 통해 직접 필터에 액세스할 수 있습니다. 또한 Filter Graph Manager는 애플리케이션에 이벤트 알림을 전달합니다.

필터 그래프 관리자도 다른 용도로 사용됩니다. 필터를 함께 연결하여 애플리케이션이 필터 그래프를 빌드하는 메서드를 제공합니다. 또한 DirectShow는 이 프로세스를 간소화하는 다양한 도우미 개체를 제공합니다. 설명서에 자세히 설명되어 있습니다.)

DirectShow 애플리케이션 작성

일반적으로 DirectShow 애플리케이션에서 수행해야 하는 세 가지 작업이 있습니다. 다음은 다음 다이어그램에 나와 있습니다.

일반적인 directshow 애플리케이션

  1. 애플리케이션은 Filter Graph Manager의 instance 만듭니다.
  2. 애플리케이션은 필터 그래프 관리자를 사용하여 필터 그래프를 빌드합니다. 그래프의 정확한 필터 집합은 애플리케이션에 따라 달라집니다.
  3. 애플리케이션은 필터 그래프 관리자를 사용하여 필터 그래프를 제어하고 필터를 통해 데이터를 스트리밍합니다. 이 프로세스 전체에서 애플리케이션은 Filter Graph Manager의 이벤트에도 응답합니다.

처리가 완료되면 애플리케이션은 Filter Graph Manager 및 모든 필터를 해제합니다.

DirectShow는 COM을 기반으로 합니다. 필터 그래프 관리자와 필터는 모두 COM 개체입니다. DirectShow 프로그래밍을 시작하기 전에 COM 클라이언트 프로그래밍에 대한 일반적인 이해가 있어야 합니다. COM 프로그래밍에 대한 많은 책을 사용할 수 있습니다.

DirectShow를 시작하려면 비디오 파일을 재생하는 간단한 콘솔 애플리케이션 을 제공하는 파일 재생 방법 문서를 참조하세요. DirectShow 정보 섹션에서는 DirectShow 아키텍처에 대해 자세히 설명하고 DirectShow 사용 섹션에서는 캡처, 비디오 편집, DVD 재생 및 TV와 같이 DirectShow에서 지원하는 주요 시나리오를 살펴봅니다.