ASF 파일 싱크 만들기

ASF 파일 싱크는 애플리케이션이 ASF 미디어 데이터를 파일에 보관하는 데 사용할 수 있는 Media Foundation에서 제공하는 IMFMediaSink 의 구현입니다. ASF Media Sinks의 개체 모델 및 일반 사용에 대한 자세한 내용은 ASF 미디어 싱크를 참조하세요.

ASF 파일 싱크의 instance 만드는 방법에는 두 가지가 있습니다. MFCreateASFMediaSink 또는 MFCreateASFMediaSinkActivate를 호출할 수 있습니다.

MFCreateASFMediaSink를 호출하는 경우 출력 파일에 대해 바이트 스트림을 지정해야 합니다. 이 스트림은 싱크가 인코딩 세션 중에 ASF 콘텐츠를 작성합니다. 지정된 바이트 스트림에는 검색 가능하고 쓰기 가능한 기능이 있어야 합니다. 그렇지 않으면 MFCreateASFMediaSink 호출이 E_FAIL 오류 코드와 함께 실패합니다. 이 호출은 in-process 파일 싱크 개체를 만들고 파일 싱크의 IMFMediaSink 인터페이스에 대한 포인터를 반환합니다.

MFCreateASFMediaSinkActivate를 호출하는 경우 파일 싱크에서 미디어 데이터를 쓸 출력 파일의 URL을 지정해야 합니다. 이 경우 파일 싱크는 내부적으로 바이트 스트림을 만듭니다. 함수는 파일 싱크의 IMFActivate 인터페이스에 대한 포인터를 반환합니다. 대상

인코딩 토폴로지를 다음과 같이 디자인할 때 MFCreateASFMediaSink 대신 MFCreateASFMediaSinkActivate를 고려합니다.

  • 인코딩 토폴로지는 PMP(보호된 미디어 경로)를 위한 것이며 파일 싱크는 out-of-process로 사용됩니다.

  • 토폴로지의 출력 노드는 파일 싱크의 활성화 개체에 대해 반환된 포인터를 사용하여 만들어지고 애플리케이션은 스트림 번호별로 파일 싱크의 스트림을 추적합니다.

    참고

    IMFActivate::ActivateObject를 호출하여 파일 싱크를 활성화할 수 있습니다. 그러나 개체를 명시적으로 활성화할 필요는 없습니다. 미디어 세션은 활성화 개체를 추적하고 인코딩 세션 중에 파일 싱크를 자동으로 활성화합니다.

     

  • 스트림 정보는 ContentInfo 개체에 구성됩니다. 다음 하위 섹션에서 구조화됩니다.

ASF 파일 싱크를 만든 후에는 토폴로지를 빌드하기 전에 구성해야 합니다. 출력 파일을 생성하려면 파일 싱크에서 다음 정보를 알고 있어야 합니다.

  • 기본 스트림 정보
  • 인코딩 모드 정보
  • 메타데이터

파일 싱크는 ASF ContentInfo 개체 를 구현하고 애플리케이션이 스트림 및 인코딩과 관련된 정보를 설정하는 데 사용할 수 있도록 IMFASFContentInfo 인터페이스를 노출합니다. 파일 싱크를 만들기 위해 호출한 함수에 따라 IMFASFContentInfo 인터페이스에 대한 참조를 가져오는 두 가지 방법이 있습니다.

  • MFCreateASFMediaSink 함수를 호출하는 경우 애플리케이션은 반환된 파일 싱크에서 IMFMediaSink::QueryInterface를 호출하여 IMFASFContentInfo 인터페이스를 쿼리해야 합니다.
  • MFCreateASFMediaSinkActivate를 호출하도록 선택하는 경우 이 함수는 호출 전에 완전히 구성된 ContentInfo 개체가 있어야 합니다. 이렇게 하려면 MFCreateASFContentInfo 를 호출하여 빈 ContentInfo 개체를 만든 다음 필요한 모든 정보로 구성해야 합니다. 구성된 ContentInfo 개체를 MFCreateASFMediaSinkActivate 에 전달하여 싱크 활성화 개체에 대한 포인터를 받습니다. 반환된 활성화 개체를 사용하여 파일 싱크를 활성화한 다음 스트림 또는 인코딩 정보를 변경할 수 없습니다.

싱크 스트림 및 특정 속성을 구성하는 방법에 대한 자세한 내용은 다음 topics 참조하세요.

ASF 미디어 싱크

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

Media Foundation의 ASF 지원