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.
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.slnno 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 é demonstrado no exemplo CaptureSharedTimerDriven .
Tópicos relacionados