ASF 작성기 구성

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

WM ASF 기록기 필터가 만들어지면 WMProfile_V80_256Video 프로필로 자동으로 구성됩니다. 이 프로필은 Windows Media 오디오 및 Windows Media Video 버전 8 코덱을 사용합니다. 이 코덱은 Windows Media 9 시리즈 코덱만큼 최신이 아닙니다. Windows Media 9 시리즈 코덱을 사용하는 사용자 지정 프로필을 만들고 프로필 및 기타 ASF 파일 속성 구성에 설명된 대로 사용자 지정 프로필로 WM ASF 기록기를 구성하는 것이 좋습니다. 필터를 구성하기 전에 필터 그래프에 WM ASF 기록기 필터를 추가하고 필터를 다른 필터에 연결하기 전에 구성해야 합니다.

모든 입력 데이터는 타임스탬프를 찍어야 하며 필터를 실행하거나 일시 중지하기 전에 모든 입력 핀을 연결해야 합니다. 따라서 오디오 스트림과 비디오 스트림이 있는 프로필을 사용하여 필터를 구성하는 경우 필터는 오디오 및 비디오 입력 핀을 만들고 필터를 실행하기 전에 두 핀을 모두 연결해야 합니다. Windows Media Format SDK를 사용하려면 오디오 스트림이 작동해야 하므로 WM ASF 기록기에는 더미 스트림(즉, 음소거된 저비트 속도 오디오 스트림)의 경우에도 항상 입력 오디오 핀이 있어야 합니다.

데이터 단위 확장 추가

이 작업 순서를 따르는 한 필터가 연결되기 전이나 후에 SMPTE 시간 코드와 같은 데이터 단위 확장에 대한 프로필 스트림을 구성할 수 있습니다.

  1. IWMStreamConfig2::AddDataUnitExtension을 사용하여 하나 이상의 데이터 단위 확장을 스트림에 추가합니다.
  2. IWMProfile::ReconfigStream을 호출하여 프로필을 업데이트합니다.
  3. 업데이트된 프로필 개체를 사용하여 IConfigAsfWriter::ConfigureFilterUsingProfile 을 호출합니다.
  4. 비디오 입력 핀을 찾고 IAMWMBufferPass::SetNotify 메서드를 호출하여 애플리케이션 정의 IAMWMBufferPassCallback 인터페이스를 등록합니다.

그래프가 실행되면 각 프레임에 대해 IAMWMBufferPassCallback::Notify 메서드가 호출되며, INSSBuffer3 인터페이스 메서드를 사용하여 샘플에서 속성을 가져와 설정할 수 있습니다.

참고

역 텔레신과 같은 일부 프로세서 집약적 시나리오에서는 WM ASF 기록기에 일부 다운스트림 필터가 지원할 수 있는 것보다 더 많은 출력 버퍼가 필요할 수 있습니다. 예를 들어 DV 디코더는 출력 핀에 대해 둘 이상의 버퍼를 허용하지 않으며 특정 조건에서 AVI 압축 해제기에서도 마찬가지입니다. 이러한 필터에 연결하려고 할 때 또는 그래프를 실행할 때 문제가 발생하는 경우 출력 핀에 버퍼 수를 허용하는 중간 필터를 작성해야 할 수 있습니다.

 

DirectShow에서 ASF 파일 만들기