Partilhar via


Configurando fluxos de áudio

[A funcionalidade associada a esta página, Windows Media Format 11 SDK, é uma funcionalidade herdada. Foi substituído por Source Reader e Sink Writer. Source Reader e Sink Writer foram otimizados para o Windows 10 e o Windows 11. A Microsoft recomenda vivamente que o novo código utilize Source Reader e Sink Writer em vez do SDK do Windows Media Format 11, sempre que possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Os fluxos de áudio são geralmente os mais simples de configurar. Obtenha uma configuração de fluxo do codec usando os métodos de IWMCodecInfo conforme descrito em Obter informações de configuração de fluxo de Codecs. Na maioria das circunstâncias, não deve alterar as configurações recuperadas.

O formato de codec que você seleciona entre os enumerados depende do uso pretendido dos arquivos ASF feitos com o perfil. A descrição do formato do codec recuperada pelo IWMCodecInfo2::GetCodecFormatDesc resume as características do formato. Se seu aplicativo não exibir as descrições para escolher entre eles, você pode chamar QueryInterface na interfaceIWMStreamConfig do formato codec para obter a interfaceIWMMediaProps. Em seguida, você pode recuperar a estrutura WM_MEDIA_TYPE chamando IWMMediaProps::GetMediaType. Ao examinar a estrutura WM_MEDIA_TYPE e a estruturaWAVEFORMATEX para a qual ela aponta, você pode determinar as configurações do formato de codec e compará-las com seus requisitos.

Obtendo formatos de áudio para sincronização A/V

O codec Windows Media Audio e o codec Windows Media Audio Professional suportam formatos apenas para ficheiros de áudio e para ficheiros de áudio/vídeo. Os formatos somente de áudio são otimizados para arquivos que contêm apenas dados de áudio, enquanto os formatos de áudio/vídeo são otimizados para áudio que está em um arquivo com um fluxo de vídeo. Ao enumerar formatos de codec para esses codecs, os formatos de áudio/vídeo vêm depois dos formatos somente de áudio. Todas as descrições do formato áudio/vídeo contêm a string "(A/V)". Você pode identificar os formatos projetados para sincronização de áudio/vídeo programaticamente verificando o número de pacotes por segundo. Os formatos para sincronização têm 5 ou mais pacotes por segundo se a taxa de bits for maior ou igual a 32.000 bits por segundo. Formatos com taxas de bits inferiores a 32.000 bits por segundo podem ser usados com vídeo sincronizado se usarem 3 ou mais pacotes por segundo. O exemplo de código no tópico To Find Audio Formats contém o código necessário para fazer essa verificação:

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

Obter Low-Delay formatos de áudio

O codec Windows Media 9.1 e o codec Windows Media Audio 9.1 Professional suportam formatos de baixo atraso. Esses formatos têm uma janela de buffer menor do que outros formatos de áudio. O áudio de baixo atraso destina-se a melhorar o desempenho em cenários em que os ficheiros ou fluxos serão trocados frequentemente; por exemplo, um aplicativo que lista várias músicas para streaming na interface do usuário e permite que os usuários alternem arbitrariamente entre elas.

Os formatos de baixo atraso estão disponíveis apenas no modo CBR (uma ou duas passagens). Todas as descrições de formato de baixo atraso contêm a string "Low Delay". Você pode identificar os formatos programaticamente verificando o valor da taxa de bits do formato. Os formatos de baixo atraso recebem taxas de bits que são 1 kilobit a menos do que as do formato normal equivalente. Por exemplo, o codec Windows Media Audio 9.1 suporta um formato CBR de passagem única com uma taxa de bits de 192 kbps. O formato equivalente de baixo atraso tem uma taxa de bits de 191 kbps. Além disso, com exceção do formato mono de 5 kbps suportado pelo codec Windows Media Audio 9.1, os formatos de baixo atraso são os únicos formatos que têm um valor ímpar de taxa de bits.

Configurando o áudio de taxa de bits variável

Quando você precisa de um formato de taxa de bits variável (VBR) para um dos codecs de áudio do Windows Media, você pode obtê-lo definindo as configurações de enumeração no IWMCodecInfo3::SetCodecEnumerationSetting método. Defina g_wszVBREnabled como True e g_wszNumPasses como 1 para VBR baseada na qualidade ou 2 para VBR de dois passes (restrito ou sem restrições). Se você estiver usando VBR restrito de duas passagens, deverá definir manualmente a taxa de bits máxima e a janela de buffer para o fluxo usando os métodos de IWMPropertyVault, conforme descrito em Configurando fluxos VBR.

Em perfis VBR baseados em qualidade, o nAvgBytesPerSec membro da estrutura WAVEFORMATEX contém o nível de qualidade (1 a 100) no byte de ordem baixa e os três bytes de ordem alta são definidos como 0x7fffff. Não tente modificar a configuração de qualidade modificando esse valor manualmente; Você deve usar o formato como ele é recuperado do codec. Para usar um valor de qualidade diferente, você deve enumerar formatos até encontrar um que atenda às suas necessidades. Além disso, nAvgBytesPerSec não serão preservados no ficheiro ASF; quando se obtém a estrutura WAVEFORMATEX para um ficheiro que foi aberto com o objeto reader, nAvgBytesPerSec contém um valor aproximado que representa o número médio de bytes por segundo.

Observação

Ao configurar fluxos de áudio, você nunca deve ter um valor de janela de buffer de áudio maior do que o valor de qualquer fluxo de vídeo no arquivo. Normalmente, isso não é um problema, pois os valores da janela do buffer de áudio devem variar entre 1,5 e 3 segundos e os valores de vídeo devem variar entre 3 e 5 segundos. Se uma janela de buffer de áudio for maior do que uma janela de buffer de vídeo, o arquivo será reproduzido com os fluxos ligeiramente fora de sincronização.

 

configuração comum a todos os fluxos

Configurando fluxos

Para encontrar formatos de áudio