GNU/Linux >> Znalost Linux >  >> Linux

Linux – Jak robustně přepnout výstupní zařízení Pulseaudio z příkazového řádku?

V Ubuntu a pravděpodobně dalších distribucích existuje grafická věc pro přepínání výstupního zvukového zařízení. Zkoušel jsem napsat nástroj příkazového řádku, který dělá to samé, ale ne vždy to funguje.

Co dělám, abych přepnul na, řekněme, umyvadlo 0, je následující:

pacmd set-default-sink 0

Což by podle mě mělo být všechno nové vstupy jdou na sink 0. Poté pro každý existující vstup podle pacmd list-sink-inputs Dělám:

pacmd move-sink-input <input_id> 0

Ale často to nefunguje. Často vyměním umyvadla, pak přehraji zvuk v nějaké aplikaci a stále bude připojen ke starému umyvadlu. co mi tu chybí? Jak to mohu provést robustně?

Přijatá odpověď:

Z tohoto příspěvku na blogu:

Samotné PulseAudio se dodává se dvěma základními nástroji příkazového řádku, nazývanými pacmd a pactl. Former nabízí příkaz set-default-sink, ale ten nedělá to, co od něj očekáváte. Ukázalo se, že alespoň v mém systému uchovává démon PulseAudio trvalá nastavení pro každou aplikaci, která se k němu kdy připojila. To znamená, že výchozí jímka se používá pouze pro aplikace, které démon ještě neviděl.

Jinými slovy, tento blogger narazil na úplně stejný problém jako vy:

  • přepnutí výchozího umyvadla ovlivní pouze programy, které dosud nebyly používány
  • přesunutí stávajícího vstupu ovlivní pouze programy skutečně aktivní se zvukovou kartou
  • budete potřebovat nástroj, který projde trvalá nastavení a přesměruje je na novou kartu.

A tak tento blogger napsal paswitch , nástroj příkazového řádku, který přesně to dělá. Jeho zdrojový kód ve formátu Git najdete zde.

Instalace:

  • Ujistěte se, že máte balíček vývojové knihovny Pulseaudio (libpulse-dev nebo podobné) nainstalováno. Budete také potřebovat gcc kompilátor a make utility.
  • Spusťte git clone https://www.tablix.org/~avian/git/paswitch.git ke stažení zdrojového kódu.
  • cd paswitch pro vstup do adresáře vytvořeného git clone a poté spusťte make .
  • Pokud je hotovo bez chyb, měl by nyní existovat paswitch binární v adresáři. Zkopírujte jej do svého /usr/local/bin/ adresář.
  • Přečtěte si README soubor v adresáři jako příklad, jak jej používat.

Další možností je říci démonu PulseAudio, aby neukládal nastavení umyvadla pro aplikace, přidáním parametru restore_device=false možnost module-stream-restore řádek v /etc/pulse/default.pa :

load-module module-stream-restore restore_device=false

Poté, co to uděláte a restartujete PulseAudio, přepnutí výchozího umyvadla způsobí, že všechny nové zvukové aplikace budou výchozí.

Ale vaše kilometry se mohou lišit v závislosti na desktopovém prostředí, které používáte:na mém Debianu 9 způsobilo vypnutí persistence další nepříjemné chování s KDE a nakonec jsem se vrátil k výchozímu chování. Pokud si dobře vzpomínám, způsobilo to nastavení systému KDE -> Multimédia -> Zvuk a video -> Seznam předvoleb zařízení, aby při každém přihlášení získal novou kopii mých zvukových zařízení.

Související:Jak gcc ví, kde je nainstalován boost?
Linux
  1. Jak nainstalovat software z příkazového řádku Linuxu

  2. Jak zjistit, jakou verzi OS X používám z příkazového řádku?

  3. Jak spustit TeX z rozhraní příkazového řádku v Linuxu

  1. Jak odstranit soubory a adresáře v Linuxu z příkazového řádku

  2. Jak vyvolat makro Openoffice z příkazového řádku Linuxu?

  3. Vynechání prvního řádku z jakéhokoli výstupu příkazu Linuxu

  1. Jak mohu odeslat zprávu na můj socket.io websocket z příkazového řádku v linuxu?

  2. Jak zjistit aktuální čas z internetu z příkazového řádku v Linuxu?

  3. Jak mohu zkopírovat složku z příkazového řádku systému Linux?