Faça uma cópia da saída de áudio em um arquivo

4

Como obter o som que posso ouvir em meus fones de ouvido em um arquivo ou em uma variável no meu programa C / C ++? Eu gostaria de algo como o framebuffer de imagens. Meu objetivo principal é enviar o som para outro computador, então eu preciso de permissões de leitura e gravação também. Alguém sabe como lidar com isso?

    
por linuser 06.12.2014 / 16:42

1 resposta

5

Eu fiz uma gravação de teste assim:

arecord -d 4 out.wav

Você pode usar dd da seguinte forma:

dd bs=1 if=out.wav | aplay

Ou use um fluxo sem buffer realmente agitado com um loop while:

while read -n 2048 bytes; do
   printf "$bytes" | aplay
done < out.wav

Você poderia então usar netcat para redirecioná-lo para um soquete ou porta.

O som que está sendo reproduzido pelos alto-falantes pode estar armazenado em buffer em um arquivo. Não tenho certeza de onde esse arquivo estaria localizado, mas também pode ser possível tail -f ou cat ou canalizá-lo para um local diferente com netcat ou algo semelhante.

Por exemplo, usando ALSA pcm:

Considere também dar uma olhada no código-fonte do PulseAudio ou usar o protocolo de transferência em tempo real (rtp):

por 06.12.2014 / 21:49

Tags