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 참조하세요.
관련 항목