Via emulação de ALSA
Eu não tenho uma caixa Debian 6.0.x para testar, mas acho que desta forma provavelmente funcionará. Cortesia de um exemplo no wiki do Arch .
Primeiro, use pacmd list-sources
para encontrar o nome do fluxo do monitor da sua placa de som. Grep para .monitor
funciona muito bem:
$ pacmd list-sources | grep '\.monitor'
name: <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
name: <alsa_output.usb-stereo-link_stereo-link_1200_USB_DAC-00-DAC.analog-stereo.monitor>
Eu tenho dois cartões, daí dois monitores. Em seguida, edite seu ~/.asoundrc
para configurar um dispositivo ALSA para ele, adicionando linhas como (mas, é claro, use o nome do dispositivo do monitor, não o meu):
pcm.pulse_monitor {
type pulse
device alsa_output.usb-stereo-link_stereo-link_1200_USB_DAC-00-DAC.analog-stereo.monitor
}
ctl.pulse_monitor {
type pulse
device alsa_output.usb-stereo-link_stereo-link_1200_USB_DAC-00-DAC.analog-stereo.monitor
}
Em seguida, use arecord -f s16_le -t wav -r 44100 -D pulse_monitor /tmp/outfile.wav
para gravar.
Utilitários PulseAudio mais antigos
Em vez de usar a emulação de ALSA, você pode usar parecord
no monitor que você encontrou acima. Faça assim: parecord -d alsa_output.usb-stereo-link_stereo-link_1200_USB_DAC-00-DAC.analog-stereo.monitor outfile.wav
. Isso deve funcionar com parec
também (no exemplo LAME abaixo)
Novos Utilitários PulseAudio
O PulseAudio é fornecido com um utilitário de linha de comando parecord
que pode gravar o som passando por ele.
Para usá-lo, primeiro encontre o índice do fluxo que você deseja capturar. O caminho fácil a partir da linha de comando é pacmd list-sink-inputs
, o que deve dar algo assim:
1 sink input(s) available.
index: 10720
driver: <protocol-native.c>
⋮
client: 87 <Chromium>
⋮
Eu omiti um monte de linhas; mas você pode ver que é o Chromium (onde eu tenho um music player rodando). O index: 10720
bit é importante.
Para gravar, é tão simples quanto parecord --monitor-stream 10720 outfile.wav
. Você também pode gravar a saída no stdout e usá-la como parte de um pipe com parec
; por exemplo, se você está com pouco espaço em disco você poderia codificar diretamente para MP3:
parec --monitor-stream 10720 --format s16le --channels 2 --rate 44100 \
| lame -r -s 44.1 -b 16 --signed --little-endian --preset medium /dev/stdin outfile.mp3