Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 gravá-los em um arquivo .wav com nome exclusivo no diretório atual. Este exemplo demonstra o buffer controlado por temporizador.
Este tópico contém as seguintes seções.
- Descrição
- Requisitos
- Download do de exemplo
- Construindo a amostra
- Executando o exemplo
- Tópicos relacionados
Descrição
Este exemplo demonstra os seguintes recursos.
- da API MMDevice para enumeração e seleção de dispositivos multimídia.
- WASAPI para operações de gestão de fluxos.
Requerimentos
| Produto | Versão |
|---|---|
| SDK do Windows | Janelas 7 |
| Estúdio Visual | 2008 |
Download do 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\CaptureSharedTimerDriven\... |
Construindo a amostra
Para criar o exemplo CaptureSharedTimerDrived, use as seguintes etapas:
- Abra o shell CMD para o SDK do Windows e mude para o diretório de exemplo CaptureSharedTimerDrived.
- Execute o comando
start WASAPICaptureSharedTimerDriven.slnno diretório CaptureSharedTimerDriven para abrir o projeto WASAPICaptureSharedTimerDriven na janela do Visual Studio. - Na janela, selecione a configuração Debug ou Release solution, selecione o menu Build na barra de menus e selecione a opção Build. Se você não abrir o Visual Studio a partir do shell CMD para o SDK, o Visual Studio não terá acesso ao ambiente de compilação 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, WASAPICaptureSharedTimerDriven.vcproj.
Executando o exemplo
Se você compilar o aplicativo de demonstração com êxito, um arquivo executável, WASAPICaptureSharedTimerDriven.exe, será gerado. Para executá-lo, digite WASAPICaptureSharedTimerDriven 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.
WASAPICaptureSharedTimerDriven.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. |
| -consola | 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. |
| -parâmetro de avaliação final | Use o identificador de ponto de extremidade especificado no valor do switch. |
Se o aplicativo for executado sem argumentos, ele enumerará os dispositivos disponíveis e solicitará que o usuário selecione um dispositivo para a sessão de captura. O console padrão, a comunicação e os dispositivos multimídia são listados seguidos por dispositivos e identificadores de ponto final. 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 .wav com nome exclusivo.
CaptureSharedTimerDriven demonstra o buffer controlado por temporizador. Neste modo, o cliente deve aguardar um período de tempo (metade da latência, especificada pelo valor do comutador -d, em milissegundos). Quando o cliente acorda, a meio do período de processamento, retira o próximo conjunto de amostras do motor. Antes de cada passagem de processamento no loop de buffer, o cliente deve descobrir a quantidade de dados de captura disponíveis para que os dados não excedam o buffer de captura. Os dados de áudio capturados do dispositivo especificado podem ser processados habilitando o buffer controlado por eventos. Esse modo é demonstrado no CaptureSharedEventDriven exemplo.
Tópicos relacionados