In Ubuntu e probabilmente in altre distribuzioni c'è una cosa grafica per cambiare il dispositivo di uscita audio. Ho provato a scrivere uno strumento da riga di comando che faccia la stessa cosa, ma non sempre funziona.
Quello che sto facendo per passare, diciamo, a sink 0 è il seguente:
pacmd set-default-sink 0
Che penso dovrebbe rendere tutto nuovo gli input vanno a sink 0. Quindi, per ogni input esistente, in base a pacmd list-sink-inputs
Sto facendo:
pacmd move-sink-input <input_id> 0
Ma spesso non funziona. Spesso cambierò i sink, quindi riprodurrò dell'audio in alcune app e sarà ancora collegato al vecchio sink. Cosa mi sto perdendo qui? Come posso farlo in modo robusto?
Risposta accettata:
Da questo post del blog:
PulseAudio stesso viene fornito con due strumenti da riga di comando di base, chiamati pacmd e pactl. Ex offre un comando set-default-sink, ma non fa quello che ti aspetti da esso. Si scopre che, almeno sul mio sistema, il demone PulseAudio mantiene le impostazioni persistenti per ogni applicazione che si sia mai connessa ad esso. Ciò significa che il sink di default viene utilizzato solo per le applicazioni che il demone non ha ancora visto.
In altre parole, questo blogger ha riscontrato il tuo stesso identico problema:
- il cambio del sink di default ha effetto solo sui programmi che non sono stati utilizzati prima
- lo spostamento dell'input esistente ha effetto solo sui programmi effettivamente attivi con la scheda audio
- avrai bisogno di uno strumento per scorrere le impostazioni persistenti e reindirizzarle alla nuova scheda.
E così questo blogger aveva scritto paswitch
, uno strumento da riga di comando per fare esattamente questo. Puoi trovare il suo codice sorgente in formato Git qui.
Per installare:
- Assicurati di avere un pacchetto della libreria di sviluppo Pulseaudio (
libpulse-dev
o simili) installati. Avrai anche bisogno delgcc
compilatore e ilmake
utilità. - Esegui
git clone https://www.tablix.org/~avian/git/paswitch.git
per scaricare il codice sorgente. cd paswitch
per entrare nella directory creata dagit clone
comando, quindi eseguimake
.- Se completato senza errori, ora dovrebbe esserci un
paswitch
binario nella directory. Copialo nel tuo/usr/local/bin/
directory. - Leggi il
README
file nella directory per un esempio su come usarlo.
Un'altra opzione è dire al demone PulseAudio di non rendere persistenti le impostazioni del sink per le applicazioni, aggiungendo il restore_device=false
opzione per il module-stream-restore
riga in /etc/pulse/default.pa
:
load-module module-stream-restore restore_device=false
Dopo averlo fatto e riavviato PulseAudio, il cambio del sink predefinito farà sì che tutte le nuove applicazioni audio vengano impostate come predefinite.
Ma il tuo chilometraggio può variare, a seconda dell'ambiente desktop che usi:sulla mia Debian 9, disabilitare la persistenza ha causato altri comportamenti fastidiosi con KDE e ho finito per tornare al comportamento predefinito. Se ricordo bene, l'elenco Impostazioni di sistema di KDE -> Multimedia -> Audio e video -> Preferenze dispositivo riceveva una nuova copia dei miei dispositivi audio ad ogni accesso.
Correlati:come fa gcc a sapere dove è installato boost?