GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:come cambiare in modo affidabile il dispositivo di uscita Pulseaudio dalla riga di comando?

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 del gcc compilatore e il make utilità.
  • Esegui git clone https://www.tablix.org/~avian/git/paswitch.git per scaricare il codice sorgente.
  • cd paswitch per entrare nella directory creata da git clone comando, quindi esegui make .
  • 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?
Linux
  1. Come installare il software dalla riga di comando di Linux

  2. Come eliminare file e directory in Linux dalla riga di comando

  3. Come dividere e combinare file dalla riga di comando in Linux

  4. Come dire a quale versione di Os X mi trovo dalla riga di comando?

  5. Come richiamare una macro di Openoffice dalla riga di comando di Linux?

Come acquisire schermate dalla riga di comando utilizzando "Scrot" in Linux

Come scoprire l'indirizzo IP pubblico dalla riga di comando su Linux

Come regolare la luminosità del monitor dalla riga di comando in Linux

Come cercare file dalla riga di comando di Linux

Rimuovi directory in Linux - Come eliminare una cartella dalla riga di comando

Come controllare le statistiche di rete Linux dalla riga di comando