Mejorando la respuesta de Waschtl de este hilo para que pueda AMBOS ESCUCHAR Y GRABAR el sonido de la aplicación:
Primero, buscamos nuestra salida predeterminada y ponemos su nombre de sumidero en $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
Luego, creamos un sumidero combinado que solo tiene un esclavo: $ DEFAULT_OUTPUT . El sonido generado por la aplicación (fuente) se reenviará al receptor esclavo (es decir, salida real), y también lo grabaremos. Es diferente a un sumidero nulo donde el sonido de origen no se reenvía.
$ pactl load-module module-combine-sink \
sink_name=record-n-play slaves=$DEFAULT_OUTPUT \
sink_properties=device.description="Record-and-Play"
sink_properties
es opcional y puede generar errores si usa espacios en el nombre de la descripción.
Entonces, podríamos usar el pactl move-sink-input ...
comando de respuesta Waschtl (con record-n-play en lugar de steam ) pero la GUI pavucontrol
es más simple (y excelente para verificar / solucionar problemas):
$ sudo apt-get install pavucontrol
$ pavucontrol &
Luego, reproducimos algo de sonido en la aplicación que queremos grabar. En la pavucontrol
Playbackpestaña, seleccionamos en la lista desplegable de la aplicación: "Grabar y reproducir" .
Finalmente, ¡estamos bien para grabar y escuchar al mismo tiempo! ( ejemplo mp3 cojo , ejecuta en primer plano)
$ parec --format=s16le -d record-n-play.monitor | \
lame -r --quiet -q 3 --lowpass 17 --abr 192 - "temp.mp3"
O podemos grabar en segundo plano y detenernos en cualquier 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
NÓTESE BIEN:
- Para deshacer todo o volver a intentar el procedimiento: elimine o restablezca los sumideros con esta respuesta .
pulseaudio -k
funciona muy bien para restablecer todo a los valores predeterminados de la sesión.
- Si cambiamos la salida predeterminada en la Configuración de sonido del sistema, se sobrescribirá la configuración de reproducción de la aplicación personalizada y tendremos que volver a pavucontrol para volver a configurar la interfaz combinada.
- Para poder escuchar el sonido desde varias interfaces "reales" (por ejemplo, auriculares, salida HDMI, etc.), debemos incluir todas las salidas "reales" que podamos usar para escuchar, como esclavos slink de grabación y reproducción , tales como:
pactl load-module module-combine-sink sink_name=record-n-play slaves=real-output-1,real-output-2
.
EDITAR: Cuidado, ya que Ubuntu 18 (quizás también 17), el sumidero combinado tiende a convertirse en el dispositivo de salida del sistema predeterminado, en lugar del dispositivo de salida real. Entonces, cuando cambia el volumen usando el icono de sonido en la bandeja del sistema, afecta el sonido de su grabación. Solución alternativa: después de crear el sumidero combinado, ábralo pavucontrol
en la pestaña Salida. Seleccione "Ver: dispositivos de salida virtual" y restablezca el volumen de sonido del receptor combinado al 100%. Luego seleccione "Ver: Dispositivos de salida de hardware" y presione el icono verde "Definir como alternativa" en el dispositivo de salida real.