다음을 통해 공유


비동기 판독기를 사용하여 압축된 샘플을 제공하려면

[이 페이지와 연결된 기능인 Windows Media Format 11 SDK는 레거시 기능입니다. 원본 판독기 및 싱크 작성기에 의해 대체되었습니다. 원본 판독기 및 싱크 작성기는 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 Windows Media Format 11 SDK 대신 소스 판독기 및 싱크 기록기를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

비동기 판독기는 ASF 파일의 스트림에서 압축된 샘플을 제공할 수 있습니다. 애플리케이션은 일반적으로 한 파일에서 다른 파일로 스트림을 복사할 때 압축된 샘플을 제공합니다. 인코딩 프로세스에서 데이터가 손실되므로 압축된 스트림에서 재구성된 데이터를 다시 압축하는 것은 바람직하지 않습니다. 두 번 이상 압축된 디지털 미디어는 품질이 눈에 띄게 감소합니다.

Windows Media Format SDK는 ASF 파일에서 추출된 후 데이터를 디코딩하는 메서드를 제공하지 않습니다. 압축된 샘플을 받고 나중에 압축을 풀려면 고유한 코드를 제공해야 합니다. 이 제한을 해결하는 한 가지 방법은 압축된 샘플을 새 ASF 파일에 쓴 다음 압축되지 않은 일반 샘플로 다시 읽는 것입니다.

비동기 판독기를 사용하여 압축된 샘플을 받으려면 다음 단계를 수행합니다.

  1. IWMReaderCallbackAdvanced::OnStreamSample 콜백을 구현합니다. 이 콜백은 기본적으로 IWMReaderCallback::OnSample 과 함수에서 동일합니다. 단, 스트림 번호로 샘플을 제공하고 샘플은 여전히 압축됩니다.
  2. 재생을 시작하기 전에 IWMReader::QueryInterface를 호출하여 판독기 개체의 IWMReaderAdvanced 인터페이스에 대한 포인터를 가져옵니다.
  3. IWMReaderAdvanced::SetReceiveStreamSamples를 호출하여 원하는 스트림에 대해 압축된 샘플을 제공하도록 판독기를 구성합니다.
  4. 압축된 샘플 배달이 필요한 각 스트림에 대해 3단계를 반복합니다.

참고

이미지 스트림은 압축 스트림 배달에 유효하지 않습니다. 한 파일에서 다른 파일로 이미지 스트림을 복사하는 경우 새 파일에서 작동하지 않습니다. 파일에서 파일로 이미지 스트림을 복사하려면 출력 번호별로 이미지 스트림 샘플을 검색하고 새 이미지 스트림을 포함하는 것처럼 새 파일에 포함합니다.

 

IWMReaderCallbackAdvanced 인터페이스

비동기 판독기를 사용하여 파일 읽기