Partilhar via


Leitura de áudio multicanal

[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 Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize Source Reader e Sink Writer em vez de Windows Media Format 11 SDK, 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.]

O codec Windows Media Audio 9 Professional pode codificar áudio multicanal (mais de dois canais). Ao ler um arquivo com áudio multicanal, você deve configurar a saída corretamente ou o áudio será entregue em uma qualidade inferior e em estéreo. Para definir uma saída para entrega de áudio multicanal, você deve definir duas configurações de saída: g_wszEnableDiscreteOutput e g_wszSpeakerConfig.

Definir g_wszEnableDiscreteOutput para TRUE define o codec para fornecer saída de áudio de alta definição. O áudio de alta definição é codificado pelo codec Windows Media Audio 9 com amostras de 24 bits em estéreo ou vários canais. Se essa configuração for FALSE, apenas a saída estéreo de 16 bits será entregue.

O número de altifalantes no computador de reprodução é definido com g_wszSpeakerConfig. Essa configuração é um valor de DWORD definido como uma das constantes de alto-falante DirectSound listadas na tabela a seguir. Para resolver esses nomes constantes para seu compilador, você deve incluir dsound.h.

Constante Valor Descrição
DSSPEAKER_DIRECTOUT 0x00000000 O áudio é transmitido diretamente, sem ser configurado para alto-falantes.
DSSPEAKER_HEADPHONE 0x00000001 O computador cliente está equipado com fones de ouvido.
DSSPEAKER_MONO 0x00000002 O computador cliente está equipado com um alto-falante monaural.
DSSPEAKER_QUAD 0x00000003 O computador cliente está equipado com alto-falantes quadrafônicos.
DSSPEAKER_STEREO 0x00000004 O computador cliente está equipado com alto-falantes estéreo.
DSSPEAKER_SURROUND 0x00000005 O computador cliente está equipado com alto-falantes de som surround de quatro canais.
DSSPEAKER_5POINT1 0x00000006 O computador cliente está equipado com cinco altifalantes e um subwoofer.
DSSPEAKER_7POINT1 0x00000007 O computador cliente está equipado com sete altifalantes e um subwoofer.

 

Para definir essas configurações, use IWMReaderAdvanced2::SetOutputSetting.

Finalmente, para que os canais sejam enviados discretamente, sem dobrar para estéreo, você deve definir o tipo de mídia correto na saída, seguindo estas etapas:

  1. Chame IWMReader::GetOutputFormatCount para obter o número de formatos suportados para a saída de áudio relevante. Os índices de formato de saída são baseados em zero.
  2. Para cada formato suportado, chame IWMReader::GetOutputFormat para recuperar a interface IWMOutputMediaProps no objeto de propriedades de mídia de saída.
  3. Utilize IWMMediaProps::GetMediaType para obter o tipo de mídia.
  4. Se o tipo de mídia recuperado for o tipo multicanal desejado, defina-o chamando IWMReader::SetOutputProps.

Depois de definir a saída discreta e a configuração do alto-falante, os formatos de saída enumerados pelo leitor devem incluir formatos multicanal que utilizam a estrutura de WAVEFORMATEXTENSIBLE. Se enumerar os formatos de saída antes de definir as propriedades, apenas serão incluídos formatos com 1 ou 2 canais e um máximo de 16 bits por canal. Tal como acontece com outros formatos de áudio, você deve usar apenas os formatos enumerados pelo leitor; não configure o seu próprio.

Observação

Você pode exportar áudio multicanal somente se seu aplicativo estiver sendo executado no Microsoft Windows XP ou em uma versão posterior do Microsoft Windows.

 

Entradas, Fluxos e Saídas

Lendo arquivos ASF

Configurações de saída

Trabalhando com High-Resolution de áudio PCM