Share via


Media Foundation의 인코딩 개요

이 항목에서는 Microsoft Media Foundation에서 제공하는 파일 인코딩 API에 대한 개요입니다.

용어

인코딩 은 다음과 같은 몇 가지 개별 프로세스를 다루는 일반적인 용어입니다.

  1. 오디오 또는 비디오 스트림을 압축된 형식으로 인코딩합니다. 예를 들어 비디오 스트림을 H.264 비디오로 인코딩합니다.
  2. 하나 이상의 스트림을 단일 바이트 스트림으로 멀티플렉싱("muxing")합니다. 일반적으로 들어오는 스트림은 먼저 인코딩됩니다. 이 단계에는 인코딩된 스트림 패킷화가 포함될 수 있습니다.
  3. MP4 또는 ASF(Advanced Systems Format) 파일과 같은 파일에 멀티플렉싱된 바이트 스트림을 작성합니다. 또는 네트워크를 통해 멀티플렉싱된 스트림을 보낼 수 있습니다.

다음 다이어그램은 다음 세 가지 프로세스를 보여줍니다.

인코딩 및 멀티플렉싱 프로세스를 보여 주는 다이어그램

이 프로세스의 변형에는 코드 변환 및 리믹싱이 포함됩니다.

  • 코드 변환 은 기존 파일을 디코딩하고, 스트림을 다시 인코딩하고, 인코딩된 스트림을 다시 멀티플렉싱하는 것을 의미합니다. 한 인코딩 형식에서 다른 인코딩 형식으로 파일을 변환하기 위해 코드 변환을 수행할 수 있습니다. 예를 들어 H.264 비디오를 WMV(Windows Media Video)로 변환합니다. 인코딩된 비트 속도를 변경하기 위해 수행할 수도 있습니다. 비디오 프레임 크기; 프레임 속도; 또는 다른 형식 매개 변수입니다.
  • Remultiplexing 또는 remuxing 은 디코딩/인코딩 단계 없이 파일을 삭제하고 스트림을 다시 멀티플렉싱하는 것을 의미합니다. 오디오/비디오 패킷이 멀티플렉싱되는 방식을 변경하거나, 스트림을 제거하거나, 서로 다른 두 소스 파일의 스트림을 결합하기 위해 이 작업을 수행할 수 있습니다.
  • Transrating 은 코드 변환의 특별한 경우이며, 압축 형식을 변경하지 않고 비트 전송률이 변경됩니다. 예를 들어 고비트 속도 파일을 더 낮은 비트 전송률로 변환할 수 있습니다. 변환을 사용할 수 있는 일반적인 시나리오는 PC에서 휴대용 디바이스로 미디어 콘텐츠를 동기화하는 경우입니다. 이식 가능한 디바이스가 높은 비트 속도를 지원하지 않는 경우 파일이 이식 가능한 디바이스에 복사되기 전에 변환될 수 있습니다.

다음 블록 다이어그램은 코드 변환 프로세스를 보여줍니다.

코드 변환 프로세스를 보여 주는 다이어그램

다음 블록 다이어그램은 remuxing 프로세스를 보여줍니다.

remuxing 프로세스를 보여 주는 다이어그램

이 설명서에서는 경우에 따라 인코딩 이라는 용어를 사용하여 코드 변환과 리믹싱을 모두 포함합니다. 둘을 구분하는 것이 중요한 경우 설명서에서 차이점을 확인합니다.

미디어 파운데이션: 필수 개념을 참조하세요.

Media Foundation 인코딩 아키텍처

Media Foundation 아키텍처의 가장 낮은 계층에서 인코딩에 사용되는 구성 요소 유형은 다음과 같습니다.

  • 코드 변환의 경우 미디어 원본은 원본 파일을 삭제하는 데 사용됩니다.
  • 인코딩 프로세스의 경우 Media Foundation 변환을 사용하여 스트림을 디코딩하고 인코딩합니다.
  • 멀티플렉싱 프로세스의 경우 미디어 싱크를 사용하여 스트림을 멀티플렉싱하고 멀티플렉싱된 스트림을 파일 또는 네트워크에 씁니다.

다음 다이어그램은 코드 변환 시나리오에서 이러한 구성 요소 간의 데이터 흐름을 보여 줍니다.

코드 변환에 사용되는 구성 요소를 보여 주는 다이어그램

대부분의 애플리케이션은 이러한 구성 요소를 직접 사용하지 않습니다. 대신 애플리케이션은 이러한 하위 수준 구성 요소를 관리하는 상위 수준 API를 사용합니다. Media Foundation은 인코딩을 위한 두 가지 상위 수준 API를 제공합니다.

미디어 세션

미디어 세션은 미디어 원본에서 코덱을 통해 마지막으로 미디어 싱크로 데이터를 이동하는 엔드 투 엔드 파이프라인을 제공합니다. 애플리케이션은 미디어 세션을 제어하고 미디어 세션에서 상태 이벤트를 받습니다.

원본 판독기싱크 기록기

원본 판독기는 미디어 원본과 선택적으로 디코더를 래핑합니다. 인코딩되거나 디코딩된 샘플 애플리케이션을 제공합니다. 싱크 작성기는 미디어 싱크와 선택적으로 인코더를 래핑합니다. 애플리케이션은 싱크 작성기에 샘플을 전달합니다.

다음 다이어그램은 미디어 세션을 보여줍니다.

미디어 세션이 코드 변환을 수행하는 방법을 보여 주는 다이어그램

코드 변환 API(파란색 음영 상자)는 인코딩을 위해 미디어 세션을 더 쉽게 구성할 수 있도록 Windows 7에 도입된 API 집합입니다.

다음 다이어그램은 원본 판독기 및 싱크 작성기를 보여줍니다.

원본 판독기 및 싱크 기록기를 사용하여 코드 변환을 보여 주는 다이어그램

인코딩 및 파일 작성

Media Foundation 프로그래밍: 필수 개념