비디오 인코딩 구성(Microsoft Media Foundation)

비디오 인코더를 구성하려면 다음 단계를 수행합니다.

  1. IPropertyBag::Write를 사용하여 인코더 DMO에서 속성을 설정합니다. 다음 목록에는 CBR 비디오 스트림을 인코딩하는 데 필요한 최소 속성 집합이 요약되어 있습니다(이러한 모든 값에는 사용할 수 있는 기본값이 있음).

    • MFPKEY_VIDEOWINDOW 속성은 스트림에 사용할 버퍼 창을 지정합니다. 버퍼 창 설정 및 콘텐츠에 미치는 영향에 대한 자세한 내용은 인코딩 메서드를 참조하세요. 기본 버퍼 창은 3초이며 많은 시나리오에 적합합니다.
    • 비디오 복잡성은 인코딩된 콘텐츠의 품질과 인코딩하는 데 필요한 시간 간의 절충을 결정하도록 설정됩니다. 값을 설정하지 않으면 기본값이 사용됩니다. 그러나 IWMCodecProps::GetCodecProp 를 호출하여 g_wszWMVCComplexityExLive, g_wszWMVCComplexityExOffline 및 g_wszWMVCComplexityExMax 검색하여 특정 코덱에 권장되는 모드를 찾을 수 있습니다. 그런 다음 MFPKEY_COMPLEXITYEX 0에서 보고된 최대 복잡성 사이의 값으로 설정할 수 있습니다.
    • MFPKEY_CRISP 인코딩된 프레임의 이미지 품질과 비디오 부드러움의 상대적 중요도를 지정합니다. 대부분의 경우 기본값은 정상적으로 작동합니다.
    • ASF 이외의 컨테이너에 저장된 비디오 콘텐츠의 경우 MFPKEY_ASFOVERHEADPERFRAME 속성을 0으로 설정해야 합니다. 이 값은 기본값이 아닙니다.

    VBR 스트림을 구성하는 방법에 대한 자세한 내용은 VBR 인코딩 사용을 참조하세요.

  2. 입력 형식에 대한 DMO_MEDIA_TYPE 구조를 구성하거나 Media Foundation SDK를 사용하는 경우 MFInitMediaTypeFromVideoInfoHeader 함수를 사용합니다. 압축되지 않은 입력 콘텐츠를 설명하는 VIDEOINFOHEADER 구조를 사용합니다. 코덱은 비디오의 크기를 조정하거나 색 공간을 변환하지 않습니다.

  3. IMediaObject::SetInputType 또는 IMFTransform::SetInputType을 사용하여 입력 형식을 설정합니다.

  4. 인코더에 대한 출력 형식을 구성합니다. 입력 형식이 설정되면 인코더는 VIDEOINFOHEADER 구조체의 dwBitrate 멤버 또는 IMFMediaType 인터페이스의 MF_MT_AVG_BITRATE 특성을 제외하고 완료된 출력 형식을 열거합니다. 입력 형식을 설정하기 전에 출력 형식을 검색하면 전달된 DMO_MEDIA_TYPE 구조체에 연결된 VIDEOINFOHEADER가 없습니다.

  5. 코덱 프라이빗 데이터를 검색하고 DMO_MEDIA_TYPE 구조 또는 IMFMediaType에 전달하는 VIDEOINFOHEADER 구조에 추가합니다. 자세한 내용은 비디오 코덱 프라이빗 데이터 사용을 참조하세요.

  6. IMediaObject::SetOutputType 또는 IMFTransform::SetOutputType 메서드를 호출하여 출력 형식을 설정합니다. pbFormat 멤버에서 참조된 완성된 VIDEOINFOHEADER 구조체(추가된 프라이빗 데이터 포함)를 사용하여 DMO_MEDIA_TYPE 구조를 전달하거나 MFInitMediaTypeFromVideoInfoHeader를 호출하여 IMFMediaType을 생성합니다.

참고

비디오 인코더 개체는 두 개의 출력을 지원합니다. 두 번째 출력은 인코더 "post view"에 대한 것입니다. 디코더에서 전달될 때 압축되지 않은 샘플을 전달합니다. 이렇게 하면 전체 스트림이 처리될 때까지 기다리지 않고도 인코딩 품질을 모니터링할 수 있습니다. 이 출력은 선택 사항입니다. 사용하려는 경우 인코더 입력 형식을 설정하는 데 사용되는 것과 동일한 프로세스에 따라 해당 형식을 구성합니다.

 

비디오 작업