Posso configurar um dispositivo de áudio de loopback?

16

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?

D4RIO
fonte
O vídeo apresentou quatro modos de loopback da placa de som. youtu.be/pqV3P9zRyYc

Respostas:

11

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 arecordutilitá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 .

Caleb
fonte
8

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 pareccomando (do pulseaudio-utilspacote Install pulseaudio-utils http://bit.ly/software-small ). Pode ser necessário converter a saída parecem algo utilizável com o SoX (Ubuntu: Install sox http://bit.ly/software-small ).sox

parec -r --rate=44100 | sox --type raw --rate 44100 - --type ogg recording.ogg
Gilles 'SO- parar de ser mau'
fonte
que não funcionou para mim, mas essa variação sobre o tema funcionou: askubuntu.com/questions/60837/…
ixtmixilix
4

É 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 ALSAdispositivo de reprodução para desviar o áudio para um arquivo.

Isso usa um .asoundrcarquivo (no seu diretório inicial):

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.rawestá no formato bruto e, portanto, é necessário converter quais são os parâmetros corretos. Estranhamente, lameparece capaz de resolver isso sozinho, mas soxprecisa conhecê-lo explicitamente. Portanto, todos os seguintes parecem 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
Espaço em loop
fonte
O link do wiki do Audacity está morto.
Suzana
0

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) ...

sdaau
fonte