In Ubuntu und wahrscheinlich anderen Distributionen gibt es eine grafische Sache, um das Audioausgabegerät umzuschalten. Ich habe versucht, ein Befehlszeilentool zu schreiben, das dasselbe tut, aber es funktioniert nicht immer.
Was ich tue, um beispielsweise zu Senke 0 zu wechseln, ist Folgendes:
pacmd set-default-sink 0
Was meiner Meinung nach alles neu machen sollte Eingaben gehen zur Senke 0. Dann für jede vorhandene Eingabe gemäß pacmd list-sink-inputs
Ich mache:
pacmd move-sink-input <input_id> 0
Aber es funktioniert oft nicht. Oft wechsle ich die Senke, spiele dann etwas Audio in einer App ab und es wird immer noch an die alte Senke angehängt. Was fehlt mir hier? Wie kann ich dies robust tun?
Akzeptierte Antwort:
Aus diesem Blogbeitrag:
PulseAudio selbst wird mit zwei grundlegenden Befehlszeilentools geliefert, die pacmd und pactl genannt werden. Former bietet einen set-default-sink-Befehl, aber das macht nicht das, was Sie davon erwarten. Es stellt sich heraus, dass der PulseAudio-Daemon zumindest auf meinem System dauerhafte Einstellungen für jede Anwendung speichert, die sich jemals mit ihm verbunden hat. Das bedeutet, dass die Standardsenke nur für Anwendungen verwendet wird, die der Daemon noch nicht gesehen hat.
Mit anderen Worten, dieser Blogger hatte genau das gleiche Problem wie Sie:
- Das Wechseln der Standardsenke wirkt sich nur auf Programme aus, die zuvor noch nicht verwendet wurden
- das Verschieben vorhandener Eingänge wirkt sich nur auf Programme aus, die tatsächlich mit der Soundkarte aktiv sind
- Sie benötigen ein Tool, um durch die permanenten Einstellungen zu gehen und sie auf die neue Karte zu verweisen.
Und so hatte dieser Blogger paswitch
geschrieben , ein Befehlszeilentool, um genau das zu tun. Den Quellcode im Git-Format finden Sie hier.
Zum Installieren:
- Stellen Sie sicher, dass Sie ein Pulsaudio-Entwicklungsbibliothekspaket haben (
libpulse-dev
o.ä.) installiert. Außerdem benötigen Sie dengcc
Compiler und dasmake
Dienstprogramm. - Führen Sie
git clone https://www.tablix.org/~avian/git/paswitch.git
aus um den Quellcode herunterzuladen. cd paswitch
um das vomgit clone
erstellte Verzeichnis zu betreten Befehl, und führen Sie dannmake
aus .- Bei fehlerfreier Ausführung sollte jetzt ein
paswitch
vorhanden sein binär im Verzeichnis. Kopieren Sie es nach/usr/local/bin/
Verzeichnis. - Lesen Sie die
README
Datei im Verzeichnis für ein Beispiel zur Verwendung.
Eine weitere Option besteht darin, den PulseAudio-Daemon anzuweisen, die Senkeneinstellungen für Anwendungen nicht beizubehalten, indem Sie restore_device=false
hinzufügen Option zum module-stream-restore
Zeile in /etc/pulse/default.pa
:
load-module module-stream-restore restore_device=false
Nachdem Sie dies getan und PulseAudio neu gestartet haben, wird das Wechseln der Standardsenke dazu führen, dass alle neuen Soundanwendungen standardmäßig darauf zurückgreifen.
Aber Ihr Kilometerstand kann je nach verwendeter Desktop-Umgebung variieren:Auf meinem Debian 9 verursachte das Deaktivieren der Persistenz ein anderes lästiges Verhalten mit KDE, und ich kehrte schließlich zum Standardverhalten zurück. Wenn ich mich richtig erinnere, hat dies dazu geführt, dass die KDE-Systemeinstellungen -> Multimedia -> Audio und Video -> Gerätepräferenzliste bei jeder Anmeldung eine neue Kopie meiner Audiogeräte erstellt hat.
Verwandte:Woher weiß gcc, wo Boost installiert ist?