다음을 통해 공유


오디오 스트림 구성

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

오디오 스트림은 일반적으로 구성하기 가장 간단합니다. 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패스)에서만 사용할 수 있습니다. 지연이 낮은 형식 설명에는 모두 "낮은 지연" 문자열이 포함됩니다. 형식의 비트 전송률 값을 확인하여 프로그래밍 방식으로 형식을 식별할 수 있습니다. 지연이 낮은 형식은 동일한 일반 형식의 비트 속도보다 1킬로비트 미만인 비트 전송률이 할당됩니다. 예를 들어 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초 사이여야 하므로 문제가 되지 않습니다. 오디오 버퍼 창이 비디오 버퍼 창보다 크면 파일이 동기화되지 않은 스트림과 함께 재생됩니다.

 

모든 스트림에 공통된 구성

스트림 구성

오디오 형식을 찾으려면