Se posso enviar áudio para os dispositivos de saída, posso gravar o mesmo áudio que uma onda. Com os sistemas de arquivos, você pode simplesmente configurar um sistema de arquivos de loopback e gravar dados binários em um arquivo em vez de em um dispositivo.
Minha pergunta é: Posso enviar o sinal de áudio para um arquivo WAV (por exemplo) em vez dos meus dispositivos de áudio? Quão?
Respostas:
Sim.
Na verdade, existem muitas maneiras. Você pode configurar um dispositivo de placa de som fictícia que pode apenas extrair os dados do dispositivo ... no entanto, este não é um formato muito útil.
Mais útil para você é algo como o
arecord
utilitário que permite que você evapore no fluxo de saída do alsa e salve-o em vários formatos conhecidos. Basicamente, qualquer coisa que você possa reproduzir no sistema de som alsa pode ser copiada para um arquivo de som em formato padrão.Existem ferramentas semelhantes para áudio de pulso .
fonte
Se o seu sistema, ou apenas o aplicativo que você deseja gravar, estiver direcionando sua saída para um servidor de som , verifique as possibilidades de gravação desse servidor de som. Por exemplo, no Ubuntu, o servidor de som oficial é o PulseAudio , que acompanha o
parec
comando (dopulseaudio-utils
pacote Install pulseaudio-utils http://bit.ly/software-small ). Pode ser necessário converter a saídaparec
em algo utilizável com o SoX (Ubuntu: Install sox http://bit.ly/software-small ).sox
fonte
É suposto ser possível gravar diretamente no Audacity, mas eu não podia chegar a esse trabalho no meu sistema (Ubuntu 10.10). Então, seguindo as instruções aqui do wiki do Audacity, eu uso o
ALSA
dispositivo de reprodução para desviar o áudio para um arquivo.Isso usa um
.asoundrc
arquivo (no seu diretório inicial):Para gravar a partir do flash (no firefox), eu uso
O arquivo resultante
/tmp/out.raw
está no formato bruto e, portanto, é necessário converter quais são os parâmetros corretos. Estranhamente,lame
parece capaz de resolver isso sozinho, massox
precisa conhecê-lo explicitamente. Portanto, todos os seguintes parecem funcionar:fonte
Existe um driver de loopback na árvore ALSA, aloop-kernel.c (por aqui ); que você teria que construir (e descobrir sua utilização como um dispositivo através de aplicativos de áudio como
aplay
/arecord
) ...fonte