Posso configurar um dispositivo de áudio de loopback?

15

Se eu puder enviar áudio para os dispositivos de saída, posso gravar o mesmo áudio de 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 um dispositivo.

Minha pergunta é: Posso enviar o sinal de áudio para um (por exemplo) arquivo WAV em vez de meus dispositivos de áudio? Como?

    
por D4RIO 03.05.2011 / 20:13

4 respostas

10

Sim.

Na verdade, existem muitas maneiras. Você pode configurar um dispositivo de placa de som fictício que pode ripar os dados do dispositivo ... no entanto, esse não é um formato muito útil.

Mais útil para você é algo como o utilitário arecord , que permite visualizar o fluxo de saída alsa e salvá-lo em vários formatos conhecidos. Basicamente tudo o que você pode jogar no sistema de som alsa pode ser copiado para um arquivo de som de formato padrão.

Existem ferramentas semelhantes para áudio por pulso .

    
por 03.05.2011 / 20:57
8

Se o seu sistema, ou apenas o aplicativo que você deseja gravar, estiver direcionando sua saída para um servidor de som , procure em possibilidades de gravação para esse servidor de som. Por exemplo, no Ubuntu, o servidor de som oficial é PulseAudio , que vem com o parec command (do pulseaudio-utils package Instale o pulseaudio-utils http://bit.ly/software-small . Você pode precisar converter a saída de parec em algo utilizável com SoX (Ubuntu: sox Instale o sox http://bit.ly/software- pequeno ).

parec -r --rate=44100 | sox --type raw --rate 44100 - --type ogg recording.ogg
    
por 03.05.2011 / 23:21
4

É suposto que seja possível gravar diretamente no Audacity, mas não consegui fazer isso funcionar no meu sistema (Ubuntu 10.10). Assim, seguindo as instruções aqui do wiki do Audacity, eu uso o dispositivo de reprodução ALSA para desviar o áudio para um arquivo.

Isso usa um arquivo .asoundrc (em seu diretório pessoal):

pcm.teeraw {
   type empty
   slave.pcm "tee:default,'/tmp/out.raw',raw"
   # 48000 S16_LE 2ch (aplay -t raw -f dat)
}

Para gravar a partir do flash (no firefox), eu uso

FLASH_ALSA_DEVICE=teeraw firefox

O arquivo resultante, /tmp/out.raw , está no formato bruto, portanto, a conversão precisa saber quais são os parâmetros corretos. Estranhamente, lame parece capaz de resolver isso sozinho, mas sox precisa conhecê-lo explicitamente. Então, o seguinte parece funcionar:

aplay -t raw -f dat -r 44100 /tmp/out.raw # to play
sox -r 44100 -b 16 -e signed -c 2 /tmp/out.raw /tmp/out.wav # to convert to wav
lame /tmp/out.raw # to convert to mp3
    
por 03.05.2011 / 21:06
0

Existe um driver de loopback na árvore do ALSA, aplay / arecord ) ...

    
por 28.03.2012 / 19:01