다음을 통해 공유


Windows Media 인코딩을 Two-Pass 토폴로지를 만드는 방법

2단계 인코딩 모드는 파이프라인 계층의 특정 Windows Media 인코더 및 Media Foundation에서 지원됩니다. 애플리케이션은 단일 패스 인코딩에서와 유사한 인코딩 토폴로지를 구성하고 설정해야 하지만 2-pass 인코딩 모드에서는 애플리케이션이 인코딩 세션을 두 번 실행해야 합니다. 첫 번째 패스에서 인코더는 스트림의 콘텐츠에 대한 정보를 수집합니다. 두 번째 패스에서는 첫 번째 패스에서 수집된 정보를 사용하여 최종 출력 파일이 생성됩니다. 스트림에 대한 샘플을 두 번 처리하면 2단계 인코딩이 인코딩 프로세스를 최적화하고 더 높은 품질의 인코딩된 파일을 생성합니다. 2단계 인코딩 모드는 라이브 스트림에서 사용할 수 없습니다.

Media Foundation은 다음과 같은 2단계 인코딩 모드를 지원합니다.

2단계 인코딩을 위한 인코딩 토폴로지를 빌드하는 것은 단일 패스 모드와 유사합니다. 다음 목록에서는 주요 차이점을 보여 줍니다.

  • 인코더 구성에는 2로 설정된 MFPKEY_PASSESUSED 속성과 VARIANT_TRUE MFPKEY_VBRENABLED 속성이 포함되어야 합니다. 이렇게 하면 인코더의 기능이 2단계 모드로 필터링됩니다. 활성화 개체를 사용하는 경우 이러한 속성을 MFCreateWMAEncoderActivate 또는 MFCreateWMVEncoderActivate에 전달합니다.
  • 첫 번째 패스의 경우 이 패스에서 생성된 샘플이 최종 파일에 추가되지 않으므로 출력 노드에서 더미 미디어 싱크를 사용합니다.
  • 두 번째 패스의 경우 필수 인코딩 후 속성에 대한 인코더를 쿼리하고 더미 미디어 싱크 노드를 ASF 미디어 싱크로 이러한 속성 집합으로 바꿉니다.

인코딩 토폴로지 설정에 대한 자세한 내용은 자습서: 단일 패스 Windows 미디어 인코딩을 참조하세요.

다음 절차에서는 2단계 인코딩 모드를 사용하여 ASF 컨테이너에서 Windows Media 콘텐츠를 인코딩하는 단계를 요약합니다.

  1. 원본 확인자를 사용하여 지정된 에 대한 미디어 원본을 만듭니다.

  2. 미디어 원본에서 스트림을 열거합니다.

  3. ASF 미디어 싱크를 만들고 인코딩해야 하는 미디어 원본의 스트림에 따라 스트림 싱크를 추가합니다.

  4. 미디어 싱크를 만듭니다.

  5. 출력 파일의 스트림에 대한 Windows Media 인코더를 만듭니다.

  6. 2-pass 인코딩 속성을 사용하여 인코더를 구성합니다.

  7. 원본, 인코더 및 미디어 싱크를 연결하여 부분 인코딩 토폴로지를 빌드합니다.

  8. 미디어 세션을 인스턴스화하고 미디어 세션에서 토폴로지를 설정합니다.

  9. 미디어 세션을 제어하고 미디어 세션에서 모든 관련 이벤트를 가져오면 첫 번째 인코딩 패스를 실행합니다.

  10. 인코딩 세션을 닫고 종료합니다.

  11. 인코딩 유형에 따라 인코더에서 다음 속성을 쿼리합니다.

    인코딩 형식 속성 이름
    제한되지 않는 가변 비트 전송률 인코딩 MFPKEY_PASSESUSED
    MFPKEY_VBRENABLED
    MFPKEY_BAVG
    MFPKEY_RAVG
    피크 제한 가변 비트 전송률 인코딩 MFPKEY_PASSESUSED
    MFPKEY_VBRENABLED
    MFPKEY_BAVG
    MFPKEY_RAVG
    MFPKEY_BMAX
    MFPKEY_RMAX

     

  12. ASF 파일 싱크를 만들고 최종 출력 파일에 포함하려는 스트림에 따라 필요한 스트림 싱크를 추가합니다.

  13. 파일 싱크의 11단계에서 검색된 인코더 속성을 설정합니다.

  14. 출력 노드의 미디어 싱크를 새로 만든 파일 싱크로 바꿉 있습니다.

  15. 미디어 세션을 인스턴스화하고 미디어 세션에서 업데이트된 토폴로지를 설정합니다.

  16. 미디어 세션을 제어하고 미디어 세션에서 모든 관련 이벤트를 가져오면 두 번째 인코딩 패스를 실행합니다.

  17. 미디어 세션 및 이벤트 처리기에서 MEEndOfPresentation 이벤트를 기다린 후 인코더에서 인코딩 속성 값을 가져와서 파일 싱크에 설정합니다. 자세한 내용은 자습서: 단일 패스 Windows 미디어 인코딩의 "파일 싱크에서 인코딩 속성 업데이트"를 참조하세요.

  18. 인코딩 세션을 닫고 종료합니다.

파이프라인 계층 ASF 구성 요소