Ich habe ein paar schöne kabellose Kopfhörer, die ich von Zeit zu Zeit benutze, zusätzlich zu meinen Lautsprechern und meinem normalen Mikrofon.
Ich möchte ein Skript schreiben, um zwischen einer Eingabe- und Ausgabequelle und einer anderen umzuschalten, im Wesentlichen zwischen meinen Kopfhörern und meinen Lautsprechern + Mikrofon.
Ich möchte zwischen diesen wechseln:
...und das:
Gibt es für mich eine Möglichkeit ein Skript zwischen den beiden Ein- und Ausgängen zu übertragen? Im Wesentlichen suche ich so etwas:
CURRENT_INPUT="$(get-current-input-name)"
CURRENT_OUTPUT="$(get-current-output-name)"
if [ "$CURRENT_INPUT" == "Vengeance 2000" ]; then
set-current-input "HD Pro Webcam C920"
else
set-current-input "Vengeance 2000"
fi
if ["$CURRENT_OUTPUT" == "Vengeance 2000" ]; then
set-current-output "Built-in Audio"
else
set-current-output "Vengeance 2000"
fi
Gibt es eine Möglichkeit, dies zu skripten?
audio
alsa
pulseaudio
Naftuli Kay
quelle
quelle
man pactl
Befehlszeilenoptionen von PulseAudio ansehen .Antworten:
Wie @ Teresa-e-Junior hervorhob,
pactl
ist das Werkzeug zu verwenden:Zunächst möchten wir möglicherweise die IDs unserer PA-Senken abrufen. Auf meinem System bekomme ich Folgendes:
Waschbecken 1 ist derzeit mein Standard Waschbecken.
Aber jetzt möchte ich, dass alle meine aktuellen und zukünftigen Streams über HDMI abgespielt werden (dh Senke 0).
Es gibt einen Befehl zum Festlegen der Standardsenke für PulseAudio, der jedoch keine Auswirkungen auf meinen PC zu haben scheint:
Stattdessen scheinen neue Streams mit der Senke verbunden zu sein, auf die zuletzt ein Stream verschoben wurde.
Lassen Sie uns also pactl anweisen, alle aktuell wiedergegebenen Streams zum Sinken zu bringen
0
. Wir müssen sie zuerst auflisten:Ok, wir haben zwei Streams (IDs 290 und 295), die beide an sink angeschlossen sind
1
.Verschieben wir sie zum Sinken
0
:Das sollte es also sein. Jetzt müssen wir nur noch ein Skript erstellen, das die Arbeit für uns erledigt:
Sie können es entweder mit einer Senken-ID oder einem Senkennamen als Parameter aufrufen (dh entweder
0
oder so ähnlichalsa_output.pci-0000_01_00.1.hdmi-surround
).Jetzt können Sie dieses Skript an ein udev-Ereignis oder eine Tastenkombination anhängen.
quelle
0 sink input(s) available.
? Aber dieser beschissene Flash-Player spielt immer noch Audio ab? Und ich sehe Flash-Player in derclient(s) logged in
Sektionpacmd list
$ pacmd set-default-sink INDEX
wird für mein Skript noch benötigt, ansonsten verwenden Tastaturbefehle zum Ändern der Lautstärke weiterhin die alte Senkenquelle.Die folgenden Befehle werden zum Bearbeiten des PulseAudio-Soundservers verwendet:
Hier sind einige Beispiele, wie sie funktionieren.
pacmd list-sinks
:: Listenname oder Indexnummer möglicher Senkenpacmd set-default-sink [sinkname]
:: die eingestellte Standardausgabe sinkpacmd set-default-source [sourcename]
:: Setzt die Standardeingabepacmd set-sink-volume [index] [volume]
:: die Senke eingestellt Volumenpacmd set-source-volume index volume
:: Lautstärkeregler 0 - 65536 (je niedriger die Zahl, desto niedriger die Lautstärke)Dies sind nur einige, die ich aus der Wiki & Manpage entfernt habe. Referenz dieses für weitere Informationen. Oder Sie können entweder Befehle
--help
oder eineman
Seite anzeigen .Zu diesem Zweck gibt es bereits ein Befehlszeilentool. Es heißt ponymix . Es ist ein Befehlszeilenmixer für PulseAudio. Der angegebene Link führt zum Projekt github. Es wurde von einem Freund und Mitstreiter von Arch Linux Trusted User / Developer entwickelt. Wenn Sie Arch nicht ausführen, können Sie es einfach mit
make
und aus dem Quellcode kompilierensudo make install
.quelle
Auf meinem Laptop mit Fedora 20 wird die HDMI-Ausgabe im Standardprofil nicht als Senke aufgeführt , sondern als ein anderes Profil .
Ich habe nur 1 Waschbecken wie dieses, schöne Musik, die auf meinen Laptop-Lautsprechern abgespielt wird:
Wenn ich laufe, läuft
pactl set-card-profile 0 output:hdmi-stereo
gute Musik über HDMI. Ich bekomme:Um zum Standard zurückzukehren, renne ich einfach
pactl set-card-profile 0 output:analog-stereo+input:analog-stereo
. In beiden Fällen ist die Standardeinstellung wieder vorhanden, wenn ich einen Neustart durchführe.Die Liste der Profile für meine Karte wird irgendwo
pactl list cards
ausgegeben.quelle
set-card-profile
wurde zuvor nicht erwähnt, und das ist die wichtigste Information zu dieser Antwort.