Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
No modo loopback, um cliente da WASAPI pode capturar o fluxo de áudio que está sendo reproduzido por um dispositivo de ponto de extremidade de renderização. Para abrir um fluxo no modo de loopback, o cliente deve:
- Obtenha uma interface IMMDevice para o dispositivo de ponto de extremidade de renderização.
- Inicialize um fluxo de captura no modo loopback no dispositivo de ponto de extremidade de renderização.
Depois de seguir essas etapas, o cliente pode chamar o método IAudioClient::GetService para obter uma interface IAudioCaptureClient no dispositivo endpoint de renderização.
O WASAPI fornece o modo de loopback principalmente para dar suporte ao cancelamento de eco acústico (AEC). No entanto, outros tipos de aplicativos de áudio podem considerar o modo de loopback útil para capturar a mixagem do sistema que está sendo reproduzida pelo mecanismo de áudio.
No exemplo de código em Capturando um fluxo, a função RecordAudioStream pode ser facilmente modificada para configurar um fluxo de captura no modo de loopback. As modificações necessárias são:
- Na chamada para o método IMMDeviceEnumerator::GetDefaultAudioEndpoint , altere o primeiro parâmetro (dataFlow) de eCapture para eRender.
- Na chamada para o método IAudioClient::Initialize , altere o valor do segundo parâmetro (StreamFlags) de 0 para AUDCLNT_STREAMFLAGS_LOOPBACK.
Em versões do Windows anteriores ao Windows 10 1703, o cliente de captura do modo pull não recebe nenhum evento quando um fluxo é inicializado com buffer controlado por eventos e é habilitado para loopback. Para contornar isso, inicialize um fluxo de renderização no modo controlado por eventos. Cada vez que o cliente recebe um evento para o fluxo de renderização, ele deve sinalizar ao cliente de captura para executar o thread de captura que lê o próximo conjunto de amostras do buffer do ponto de extremidade de captura. No Windows 10 versões 1703 e superiores, há suporte para clientes de loopback controlados por eventos e não precisam mais da solução alternativa que envolve o fluxo de renderização.
Um cliente pode habilitar o modo de loopback apenas para um fluxo de modo compartilhado (AUDCLNT_SHAREMODE_SHARED). Os fluxos de modo exclusivo não podem operar no modo de loopback.
A implementação do loopback pelo WASAPI depende dos recursos do hardware. Se o hardware for compatível com um pino de loopback no ponto de extremidade de renderização, a WASAPI usará o áudio fornecido nesse pino para o fluxo de loopback. Quando o hardware não é compatível com um pino de loopback, o WASAPI copia o fluxo de saída do mecanismo de áudio para o buffer de captura do aplicativo de loopback, além de copiar os dados de áudio para o pino de renderização do hardware.
Alguns fornecedores de hardware implementam dispositivos de loopback (em oposição a instâncias de pinos em dispositivos de renderização) em seus adaptadores de áudio. Embora os dispositivos de loopback de hardware sejam semelhantes em operação ao modo de loopback WASAPI, eles podem ser mais difíceis de usar.
Os dispositivos de loopback de hardware têm as seguintes desvantagens para aplicativos de áudio:
- Nem todos os adaptadores de áudio têm dispositivos de loopback. Assim, os aplicativos que dependem deles não funcionarão em todos os sistemas.
- Antes que um aplicativo possa gravar de um dispositivo de loopback, o usuário deve identificar o dispositivo de loopback e habilitá-lo para uso.
Diferentes fornecedores atribuem nomes diferentes aos seus dispositivos de loopback de hardware. Os nomes a seguir são exemplos:
- Mixagem estéreo
- Mistura de Waveout
- Saída mista
- O que você ouve
A falta de nomes padronizados pode fazer com que os usuários tenham dificuldade em identificar um dispositivo de loopback em uma lista de nomes de dispositivos.
Um dispositivo de loopback de hardware é um dispositivo de captura. Assim, se um adaptador der suporte a um dispositivo de loopback, um aplicativo de áudio poderá gravar do dispositivo da mesma forma que grava de qualquer outro dispositivo de captura.
Por exemplo, se você selecionar um dispositivo de loopback de hardware para ser o dispositivo de captura padrão, poderá usar a função RecordAudioStream (sem modificação) no exemplo de código em Capturando um fluxo para capturar o fluxo do dispositivo. (Você também pode usar uma API de áudio herdada, como as funções de multimídia waveInXxx do Windows, para capturar o fluxo do dispositivo.)
Se o adaptador de áudio contiver um dispositivo de loopback de hardware, você poderá usar o painel de controle multimídia do Windows, Mmsys.cpl, para designar o dispositivo como o dispositivo de captura padrão. As etapas são as seguintes:
Para executar Mmsys.cpl, abra uma janela do Prompt de Comando e digite o seguinte comando:
control mmsys.cpl
Como alternativa, você pode executar Mmsys.cpl clicando com o botão direito do mouse no ícone do alto-falante na área de notificação, localizada no lado direito da barra de tarefas, e selecionando Dispositivos de gravação.
Depois que a janela Mmsys.cpl for aberta, clique com o botão direito do mouse em qualquer lugar da lista de dispositivos de gravação e verifique se a opção Mostrar dispositivos desativados está marcada. (Caso contrário, se o dispositivo de loopback estiver desabilitado, ele não aparecerá na lista.)
Navegue pela lista de dispositivos de gravação para localizar o dispositivo de loopback (se existir). Se o dispositivo de loopback estiver desabilitado, habilite-o clicando com o botão direito do mouse no dispositivo e clicando em Habilitar.
Por fim, para selecionar o dispositivo de loopback para ser o dispositivo de captura padrão, clique com o botão direito do mouse no dispositivo e clique em Definir como Dispositivo Padrão.
O WASAPI dá suporte à gravação de loopback, independentemente de o hardware de áudio conter um dispositivo de loopback ou se o usuário habilitou o dispositivo.
O Windows Vista fornece DRM (gerenciamento de direitos digitais). Os provedores de conteúdo contam com o DRM para proteger sua música proprietária ou outro conteúdo contra cópias não autorizadas e outros usos ilegais. Da mesma forma, um driver de áudio confiável não permite que um dispositivo de loopback capture fluxos digitais que contenham conteúdo protegido. O Windows Vista permite que apenas drivers confiáveis reproduzam conteúdo protegido. Para obter mais informações sobre drivers confiáveis e DRM, consulte a documentação do DDK do Windows.
Por padrão, o loopback WASAPI contém a combinação de todo o áudio que está sendo reproduzido, independentemente da sessão dos Serviços de Terminal da qual o áudio se originou. Por exemplo, você pode executar um cliente de loopback em um serviço em execução na sessão 0 e capturar áudio de todas as sessões do usuário, bem como o áudio que está sendo reproduzido da sessão 0.
A Área de Trabalho Remota permite redirecionar o áudio para o cliente. Isso é implementado criando novos dispositivos de áudio que aparecem apenas para essa sessão.
Tópicos relacionados