Melhorando a resposta Waschtl deste tópico, para que você possa ouvir e gravar o som do aplicativo:
Primeiro, procuramos nossa saída padrão e colocamos seu nome de coletor em $DEFAULT_OUTPUT
:
$ pacmd list-sinks | grep -A1 "* index"
* index: 1
name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
$ DEFAULT_OUTPUT=$(pacmd list-sinks | grep -A1 "* index" | grep -oP "<\K[^ >]+")
$ echo $DEFAULT_OUTPUT
alsa_output.pci-0000_00_1b.0.analog-stereo
Em seguida, criamos um coletor combinado que possui apenas um escravo: $ DEFAULT_OUTPUT . O som gerado pelo aplicativo (fonte) será encaminhado para o coletor de escravos (ou seja, saída real) e também será gravado. É diferente de um coletor nulo onde o som da fonte não é encaminhado.
$ pactl load-module module-combine-sink \
sink_name=record-n-play slaves=$DEFAULT_OUTPUT \
sink_properties=device.description="Record-and-Play"
sink_properties
é opcional e pode apresentar erros se você usar espaços no nome da descrição.
Em seguida, poderíamos usar o pactl move-sink-input ...
comando Waschtl answer (com record-n-play em vez de steam ), mas a GUI pavucontrol
é mais simples (e ótima para verificar / solucionar problemas):
$ sudo apt-get install pavucontrol
$ pavucontrol &
Em seguida, reproduzimos algum som no aplicativo que queremos gravar. Na pavucontrol
Playbackguia, selecionamos na lista suspensa do aplicativo: "Record-and-Play" .
Por fim, é bom gravar e ouvir ao mesmo tempo! ( exemplo mp3 coxo , executado em primeiro plano)
$ parec --format=s16le -d record-n-play.monitor | \
lame -r --quiet -q 3 --lowpass 17 --abr 192 - "temp.mp3"
Ou podemos gravar em segundo plano e parar a qualquer momento:
$ parec --format=s16le -d record-n-play.monitor | \
lame -r --quiet -q 3 --lowpass 17 --abr 192 - "temp.mp3" \
> /dev/null &1>/dev/null
$ killall -q parec lame
NB:
- Para desfazer tudo ou tentar novamente o procedimento: Exclua ou redefina os coletores usando esta resposta .
pulseaudio -k
funciona muito bem para redefinir tudo para os padrões da sessão.
- Se alterarmos a saída padrão nas Configurações de som do sistema, a configuração de reprodução do aplicativo personalizado será substituída e teremos que voltar no pavucontrol para configurá-la novamente na interface combinada.
- Para poder ouvir o som de várias interfaces "reais" (por exemplo, fones de ouvido, saída HDMI, etc ...), devemos incluir todas as saídas "reais" que podemos usar para ouvir, como slaves de gravação e reprodução , como:
pactl load-module module-combine-sink sink_name=record-n-play slaves=real-output-1,real-output-2
.
EDIT: Cuidado, desde o Ubuntu 18 (talvez 17 também), o coletor combinado tende a se tornar o dispositivo de saída do sistema padrão, em vez do dispositivo de saída real. Portanto, quando você altera o volume usando o ícone de som na bandeja do sistema, afeta o som da gravação. Solução alternativa: após criar o coletor combinado, abra pavucontrol
na guia Saída. Selecione "Exibir: dispositivos de saída virtual" e redefina o volume do som do coletor combinado para 100%. Em seguida, selecione "Visualizar: dispositivos de saída de hardware" e pressione o ícone verde "Definir como alternativa" no dispositivo de saída real.