CaptureSharedEventDriven
Este aplicativo de exemplo usa as APIs de Áudio Principal para capturar dados de áudio de um dispositivo de entrada especificado pelo usuário e os grava em um arquivo de .wav nomeado exclusivamente no diretório atual. Este exemplo demonstra o buffer controlado por eventos.
Este tópico contém as seções a seguir.
- descrição
- requisitos de
- baixar o de exemplo
- compilar o de exemplo
- executando o de exemplo
- tópicos relacionados
Descrição
Este exemplo demonstra os seguintes recursos.
- da API MMDevice para enumeração e seleção de dispositivo multimídia.
- WASAPI para operações de gerenciamento de fluxo, como iniciar e parar o fluxo e alternar de fluxo.
Requisitos
Produto | Versão |
---|---|
do SDK do Windows | Windows 7 |
Visual Studio | 2008 |
Baixando o exemplo
Este exemplo está disponível nos seguintes locais.
Localização | Caminho/URL |
---|---|
Windows SDK | \Arquivos de Programas\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\CaptureSharedEventDriven\... |
Compilando o exemplo
Para criar o exemplo CaptureSharedEventDriven, use as seguintes etapas:
- Abra o shell do CMD para o SDK do Windows e altere para o diretório de exemplo CaptureSharedEventDriven.
- Execute o comando
start WASAPICaptureSharedEventDriven.sln
no diretório CaptureSharedEventDriven para abrir o projeto WASAPICaptureSharedEventDriven na janela do Visual Studio. - Na janela, selecione o de Depuração ou a configuração da solução de Versão, selecione o menu Criar na barra de menus e selecione a opção Criar. Se você não abrir o Visual Studio do shell do CMD para o SDK, o Visual Studio não terá acesso ao ambiente de build do SDK. Nesse caso, o exemplo não será compilado a menos que você defina explicitamente a variável de ambiente MSSdk, que é usada no arquivo de projeto, WASAPICaptureSharedEventDriven.vcproj.
Executando o exemplo
Se você criar o aplicativo de demonstração com êxito, um arquivo executável, WASAPICaptureSharedEventDriven.exe, será gerado. Para executá-lo, digite WASAPICaptureSharedEventDriven
em uma janela de comando seguida por argumentos obrigatórios ou opcionais. O exemplo a seguir mostra como executar o exemplo especificando a duração da captura no dispositivo multimídia padrão.
WASAPICaptureSharedEventDriven.exe -d 20 -multimedia
A tabela a seguir mostra os argumentos.
Argumento | Descrição |
---|---|
-? | Mostra ajuda. |
-h | Mostra ajuda. |
-l | Latência de captura de áudio em milissegundos. |
-d | Duração da captura de áudio em segundos. |
-m | Desabilita o uso do MMCSS. |
-consolar | Use o dispositivo de console padrão. |
-Comunicações | Use o dispositivo de comunicação padrão. |
-multimédia | Use o dispositivo multimídia padrão. |
-Extremidade | Use o identificador de ponto de extremidade especificado no valor da opção. |
Se o aplicativo for executado sem argumentos, ele enumera os dispositivos disponíveis e solicita que o usuário selecione um dispositivo para a sessão de captura. Os dispositivos padrão de console, comunicação e multimídia são listados seguidos por dispositivos e identificadores de ponto de extremidade. Se nenhuma duração for especificada, o fluxo de áudio do dispositivo especificado será capturado por 10 segundos. O aplicativo grava os dados capturados em um arquivo de .wav nomeado exclusivamente.
CaptureSharedEventDriven demonstra o buffer controlado por eventos. O cliente de áudio instanciado para este exemplo é configurado para ser executado no modo compartilhado e o processamento do cliente do buffer de áudio é feito com base na configuração do sinalizador AUDCLNT_STREAMFLAGS_EVENTCALLBACK na chamada para IAudioClient::Initialize. O exemplo mostra como o cliente deve fornecer um identificador de evento para o sistema chamando o método IAudioClient::SetEventHandle. Depois que a sessão de captura começa e o fluxo é iniciado, o mecanismo de áudio sinaliza o identificador de evento fornecido para notificar o cliente sempre que um buffer estiver pronto para o cliente processar. Os dados de áudio também podem ser processados em um loop controlado por temporizador. Esse modo é demostratado no exemplo de CaptureSharedTimerDriven.
Tópicos relacionados