Migliorare la risposta Waschtl di questo thread in modo che SIA POSSIBILE ASCOLTARE E REGISTRARE il suono dell'app:
Innanzitutto, cerchiamo il nostro output predefinito e inseriamo il nome del sink in $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
Quindi, creiamo un sink combinato che ha un solo slave: $ DEFAULT_OUTPUT . Il suono generato dall'app (sorgente) verrà inoltrato al sink slave (ad es. Output reale) e lo registreremo anche. È diverso da un sink null in cui il suono della sorgente non viene inoltrato.
$ pactl load-module module-combine-sink \
sink_name=record-n-play slaves=$DEFAULT_OUTPUT \
sink_properties=device.description="Record-and-Play"
sink_properties
è facoltativo e può presentare bug se si utilizzano spazi nel nome della descrizione.
Quindi, potremmo usare il pactl move-sink-input ...
comando della risposta Waschtl (con record-n-play invece di steam ) ma la GUI pavucontrol
è più semplice (e ottima per il controllo / risoluzione dei problemi):
$ sudo apt-get install pavucontrol
$ pavucontrol &
Quindi, riproduciamo un po 'di suono nell'app che vogliamo registrare. Nella pavucontrol
Playbackscheda, selezioniamo nell'elenco a discesa dell'app: "Registra e riproduci" .
Finalmente, siamo bravi a registrare e ascoltare allo stesso tempo! ( esempio lame mp3, esegui in primo piano)
$ parec --format=s16le -d record-n-play.monitor | \
lame -r --quiet -q 3 --lowpass 17 --abr 192 - "temp.mp3"
Oppure possiamo registrare in background e fermarci in qualsiasi 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:
- Per annullare tutto o ripetere la procedura: eliminare o ripristinare i lavandini utilizzando questa risposta .
pulseaudio -k
funziona benissimo per ripristinare tutto ai valori predefiniti della sessione.
- Se cambiamo l'output predefinito nelle Impostazioni audio del sistema, l'impostazione di riproduzione dell'app personalizzata verrà sovrascritta e dovremo tornare indietro in Pavucontrol per ripristinarla all'interfaccia combinata.
- Per poter ascoltare il suono da diverse interfacce "reali" (ad es. Cuffie, uscita HDMI, ecc ...), dovremmo includere tutte le uscite "reali" che potremmo usare per ascoltare, come schiavi slink record-n-play , come:
pactl load-module module-combine-sink sink_name=record-n-play slaves=real-output-1,real-output-2
.
EDIT: Attenzione, dal momento che Ubuntu 18 (forse anche 17), il sink combinato tende a diventare il dispositivo di output di sistema predefinito, anziché il dispositivo di output reale. Pertanto, quando si modifica il volume utilizzando l'icona del suono nella barra delle applicazioni, questo influisce sul suono registrato. Soluzione alternativa: dopo aver creato il sink combinato, aprire pavucontrol
nella scheda Output. Seleziona "Visualizza: Dispositivi di output virtuali" e reimposta il volume audio del sink combinato al 100%. Quindi selezionare "Visualizza: Dispositivi di output hardware" e premere l'icona verde "Definisci come alternativa" sul dispositivo di output reale.