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řebovatgcc
kompilátor amake
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éhogit clone
a poté spusťtemake
.- 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?