인코더의 활성화 개체 사용

미디어 파일을 ASF 형식으로 변환하려면 Windows Media 인코더를 사용할 수 있습니다. 이러한 인코더를 사용하려면 시스템에 등록해야 합니다.

인코더 등록에 대한 자세한 내용은 인코더 MFT 인스턴스화를 참조하세요.

인코더의 활성화 개체 사용

인코더의 IMFTransform 인터페이스를 사용하는 대신(CoCreateInstance를 사용하여 인코더 만들기에 설명됨) 인코더에 대한 활성화 개체의 instance 만들 수 있습니다. 활성화 개체는 인코더 생성을 용이하게 하며 Media Foundation은 이 접근 방식에 대해 다음과 같은 두 가지 함수를 제공합니다.

두 함수 모두 이러한 함수를 호출하기 전에 대상 미디어 형식을 만들고 인코딩 속성을 설정해야 합니다. 애플리케이션이 파이프라인 계층 ASF 구성 요소를 사용하여 파일을 ASF 형식으로 인코딩하고 ASF 미디어 싱크를 이미 만들고 구성한 경우 ASF 미디어 싱크에서 이 정보 집합을 가져올 수 있습니다.

MFCreateWMAEncoderActivateMFCreateWMVEncoderActivate 는 인코더의 출력 형식을 애플리케이션에서 지정한 미디어 형식으로 설정합니다.

참고MFCreateWMAEncoderActivateMFCreateWMVEncoderActivate 를 사용하는 경우 IMFActivate::ActivateObject 를 호출하여 인코더를 활성화할 수 있지만 인코더의 입력 및 출력 미디어 형식을 변경할 수 없으며 인코딩 속성을 변경할 수도 없습니다.

활성화 개체를 사용하여 Media Foundation 개체를 만드는 방법에 대한 자세한 내용은 활성화 개체를 참조하세요.

ASF 미디어 싱크에서 대상 미디어 형식을 얻으려면

  1. ASF 미디어 싱크에서 IMFMediaSink::QueryInterface를 호출하고 인터페이스 식별자로 IID_IMFASFContentInfo 전달하여 ASF 미디어 싱크의 IMFASFContentInfo 포인터에 대한 포인터를 가져옵니다.
  2. ContentInfo 개체와 연결된 ASF 프로필 개체를 가져옵니다.
  3. 프로필의 스트림을 열거하여 스트림의 미디어 형식을 가져옵니다.

ASF 미디어 싱크에서 인코딩 속성을 얻으려면

  1. 미디어 싱크에서 인코딩 속성을 구성한 경우( 파일 싱크의 속성 설정에 설명됨) ASF 미디어 싱크에서 IMFMediaSink::QueryInterface 를 호출하고 인터페이스 식별자로 IID_IPropertyStore 전달하여 싱크의 속성 저장소에 대한 참조를 사용할 수 있습니다.

  2. 싱크의 ContentInfo 개체에 대한 포인터가 있는 경우 IMFASFContentInfo::GetEncodingConfigurationPropertyStore 를 호출하여 미디어 싱크의 속성 저장소에 대한 참조를 가져올 수 있습니다.

    ASF 미디어 싱크에 설정된 모든 인코딩 속성이 MFCreateWMAEncoderActivateMFCreateWMVEncoderActivate에 전달된 속성 저장소에 반영되는지 확인합니다. 인코더는 애플리케이션에서 지정한 설정에 따라 자동으로 구성됩니다.

인코딩 토폴로지에서 변환 노드를 만드는 동안 개체 형식을 이러한 두 호출에서 받은 IMFActivate 포인터로 설정할 수 있습니다. 토폴로지를 확인하면 미디어 세션에서 활성화 개체를 사용하여 인코더 MFT의 instance 만듭니다.

Windows 7 이상에서 인코더 열거형

Windows 7에서 실행되는 애플리케이션의 경우 MFTEnum 외에도 MFTEnumEx를 호출하여 인코더 MFT를 열거할 수 있습니다. 이 함수는 인코더 MFT의 활성화 개체에 대한 포인터를 반환합니다. 함수의 구조는 MFTEnumEx가 검색 조건과 일치하는 인코더 MFT에 대한 IMFActivate 포인터 배열을 반환한다는 점을 제외하고 위에서 설명한 MFTEnum과 매우 유사합니다.

인코더 MFT 인스턴스화

Windows Media 인코더

활성화 개체