다음을 통해 공유


오디오 스트림 구성

오디오 스트림은 일반적으로 구성하기 가장 간단합니다. 코덱에서 스트림 구성 정보 가져오기에 설명된 대로 IWMCodecInfo 의 메서드를 사용하여 코덱에서 스트림 구성을 가져옵니다. 대부분의 경우 검색된 설정에서 설정을 변경해서는 안 됩니다.

열거된 코덱 형식 중에서 선택하는 코덱 형식은 프로필로 만든 ASF 파일의 의도된 사용에 따라 달라집니다. IWMCodecInfo2::GetCodecFormatDesc에서 검색한 코덱 형식 설명은 형식의 특성을 요약합니다. 애플리케이션에서 선택할 설명을 표시하지 않으면 코덱 형식의 IWMStreamConfig 인터페이스에서 QueryInterface를 호출하여 IWMMediaProps 인터페이스를 가져올 수 있습니다. 그런 다음 IWMMediaProps::GetMediaType을 호출하여 WM_MEDIA_TYPE 구조를 검색할 수 있습니다. WM_MEDIA_TYPE 구조체와 해당 구조체가 가리키는 WAVEFORMATEX 구조를 검사하여 코덱 형식의 설정을 확인하고 요구 사항과 비교할 수 있습니다.

A/V 동기화를 위한 오디오 형식 가져오기

Windows Media 오디오 코덱 및 Windows Media Audio Professional 코덱은 모두 오디오 전용 파일과 오디오/비디오 파일에 대한 형식을 지원합니다. 오디오 전용 형식은 오디오 데이터만 포함하는 파일에 최적화된 반면 오디오/비디오 형식은 비디오 스트림이 있는 파일에 있는 오디오에 최적화되어 있습니다. 이러한 코덱에 대한 코덱 형식을 열거할 때 오디오/비디오 형식은 오디오 전용 형식 이후에 제공됩니다. 오디오/비디오 형식 설명에는 모두 "(A/V)" 문자열이 포함됩니다. 초당 패킷 수를 확인하여 프로그래밍 방식으로 오디오/비디오 동기화를 위해 설계된 형식을 식별할 수 있습니다. 동기화 형식은 비트 속도가 초당 32,000비트보다 크거나 같은 경우 초당 5개 이상의 패킷을 가집니다. 초당 32,000비트 미만의 비트 속도를 가진 형식은 초당 3개 이상의 패킷을 사용하는 경우 동기화된 비디오와 함께 사용할 수 있습니다. 오디오 형식 찾기 항목의 코드 예제에는 이 검사 만드는 데 필요한 코드가 포함되어 있습니다.

if((pWave->nAvgBytesPerSec / pWave->nBlockAlign) >= 
       ((pWave->nAvgBytesPerSec >= 4000) ? 5.0 : 3.0))
{
    // Set this stream configuration as the new best match.
}

Low-Delay 오디오 형식 가져오기

Windows Media 9.1 코덱과 Windows Media Audio 9.1 Professional 코덱은 모두 낮은 지연 형식을 지원합니다. 이러한 형식은 다른 오디오 형식보다 작은 버퍼 창을 갖습니다. 낮은 지연 오디오는 파일 또는 스트림이 자주 전환되는 시나리오에서 성능을 향상시키기 위한 것입니다. 예를 들어 사용자 인터페이스에서 스트리밍할 노래 수를 나열하고 사용자가 임의로 전환할 수 있는 애플리케이션입니다.

낮은 지연 형식은 CBR 모드(원패스 또는 2패스)에서만 사용할 수 있습니다. 낮은 지연 형식 설명에는 모두 "낮은 지연" 문자열이 포함됩니다. 형식의 비트 속도 값을 확인하여 프로그래밍 방식으로 형식을 식별할 수 있습니다. 낮은 지연 형식에는 동일한 일반 형식의 비트 속도보다 1K비트 미만인 비트 속도가 할당됩니다. 예를 들어 Windows Media Audio 9.1 코덱은 비트 속도가 192kbps인 단일 패스 CBR 형식을 지원합니다. 해당하는 낮은 지연 형식의 비트 속도는 191kbps입니다. 또한 Windows Media Audio 9.1 코덱에서 지원하는 5kbps mono 형식을 제외하고 지연이 낮은 형식은 홀수 비트 속도 값을 갖는 유일한 형식입니다.

가변 비트 전송률 오디오 구성

Windows Media 오디오 코덱 중 하나에 대한 VBR(가변 비트 전송률) 형식이 필요한 경우 IWMCodecInfo3::SetCodecEnumerationSetting 메서드에서 열거형 설정을 설정하여 가져올 수 있습니다. g_wszVBREnabled True로 설정하고 품질 기반 VBR의 경우 g_wszNumPasses 1로, 2단계 VBR의 경우 2로 설정합니다(제한되거나 제한되지 않음). 제한된 2단계 VBR을 사용하는 경우 VBR 스트림 구성에 설명된 대로 IWMPropertyVault 메서드를 사용하여 스트림의 최대 비트 속도 및 버퍼 창을 수동으로 설정해야 합니다.

품질 기반 VBR 프로필에서 WAVEFORMATEX 구조체의 nAvgBytesPerSec 멤버는 낮은 순서 바이트의 품질 수준(1~100)을 포함하고 세 개의 상위 바이트는 0x7fffff 설정됩니다. 이 값을 수동으로 수정하여 품질 설정을 수정하지 마세요. 코덱에서 검색될 때 형식을 사용해야 합니다. 다른 품질 값을 사용하려면 요구 사항을 충족하는 형식을 찾을 때까지 형식을 열거해야 합니다. 또한 nAvgBytesPerSec 은 ASF 파일에서 유지되지 않습니다. 판독기 개체를 사용하여 열린 파일에 대한 WAVEFORMATEX 구조를 가져올 때 nAvgBytesPerSec 에는 초당 평균 바이트 수를 나타내는 대략적인 값이 포함됩니다.

참고

오디오 스트림을 구성할 때 파일의 비디오 스트림 값보다 큰 오디오 버퍼 창 값이 없어야 합니다. 일반적으로 오디오 버퍼 창 값의 범위는 1.5~3초이고 비디오 값은 3~5초 사이여야 하므로 문제가 되지 않습니다. 오디오 버퍼 창이 비디오 버퍼 창보다 크면 파일이 동기화되지 않은 스트림으로 재생됩니다.

 

모든 스트림에 공통 구성

스트림 구성

오디오 형식을 찾으려면