Ich möchte die Lautstärke auslesen, mit der ich einstellen kann
pactl set-sink-volume $SINK $VOLUME
Gibt es einen einfachen Weg, das zu tun? So einfach wie die Hypothese
pactl get-sink-volume $SINK
?
(Was ich versuche zu tun? Ich verwende pactl, um die Lautstärke einzustellen, und es lässt mich die Lautstärke höher als 100% einstellen, was eine schlechte Idee ist (die Klangqualität sinkt), also denke ich darüber nach, ein kleines Skript zu schreiben, das dies tut Nicht über 100% hinausgehen. Ablesen. Über einen bestimmten Schwellenwert hinausgehen. Auf 100% setzen. Unter 1% hinzufügen. Wenn es eine andere Möglichkeit gibt, großartig, sag es mir! Die sauberste Lösung wäre wahrscheinlich, Puls zu veranlassen, einfach anzuhalten bei 100%. Aber die ursprüngliche Frage bleibt, es muss einen Weg geben ..)
Ich bin auf Debian, wenn das einen Unterschied macht.
quelle
pactl list sinks
gibt Ihnen die Lautstärke, aber nicht in einem schönen einfachen Format wie Set-Sink-Volume.Antworten:
Das habe ich. Es ist nicht ordentlich, aber es war genug für meinen Gebrauch. Ich konnte den Weg dazu nicht finden . Sie
pactl
scheinen keine Möglichkeit zu haben, eine Auflistung nur für eine Spüle zu erhalten, aber sie werden in aufsteigender Reihenfolge gedruckt. Damit wird die n-te Zeile mittail
und ausgewählthead
. Beachten Sie, dass die Lautstärkelinie möglicherweise separate Lautstärken für den rechten und den linken Kanal hat und dass dersed
Ersatz nur den ersten auswählt, weil ich genau das brauchte.Für die Aufzeichnung benutze ich die
pactl list sinks short
, um meine aktive Sink-Nummer zu erhalten:EDIT 2017-10-05: Ich musste diese aufgrund von Änderungen in pulseaudio etwas anpassen. Folgendes habe ich jetzt:
Ich habe
MOD
auf +10 oder -10 gesetzt und mache einige Grenzprüfungen und schließlich:quelle
pactl list sinks short | grep RUNNING | sed -e 's,^\([0-9][0-9]*\)[^0-9].*,\1,'
- Addedsinks
betweenpactl list
andshort
LC_ALL=C pactl list sinks | grep
da der Text "Volume:" möglicherweise in der Sprache des Benutzers lokalisiert ist.volume=$(pactl list sinks | grep Volume | head -n1 | awk '{print $5}')
Wenn Sie keine Einschränkung haben, ein anderes Programm zu verwenden, gibt es das
pamixer
.Sie erhalten die Lautstärke mit:
quelle
pulsemixer
Paket verwenden. Es sieht ungefähr genauso aus.Beachten Sie, dass die Antwort von Tommi Kyntola davon abhängt, dass die Spüle verwendet wird, damit Sie die Spülen-Nummer tatsächlich erhalten.
Beachten Sie auch, dass benannte Senkenindizes mit dem gezählten Index identisch sind . Nehmen wir zum Beispiel an, wir haben 3 Waschbecken 1, 2 und 3 und dieses 3 ist unser ausgewähltes Waschbecken. Dann trennen wir die Verbindung zu Nummer 2 und hinterlassen 1 und 3. Jetzt können Sie nicht zählen, dass Sie mit Tommi Kyntolas Lösung 3 sinken, weil
pactl list sinks | grep "^[[:space:]]Volume:"
Es werden nur 2 Volume-Felder ausgegeben, daher$SINK + 1
funktioniert das Weiterleiten an den Kopf / Schwanz, um die 'th-Zeile zu erhalten, nicht.Meine Lösung basiert auf der Annahme, dass pacmd Senken immer in einer bestimmten Reihenfolge auflistet. Wenn Sie eine zuverlässigere Lösung wünschen, müssen Sie die Ausgabe analysieren.
Hinweis: Ich weiß nicht, ob sich die Volume-Felder unterscheiden. Meine sehen wie folgt aus
pacmd list-sinks
:Außerdem erhalte ich nur die Lautstärke des ersten Kanals (vorne links) im Prozentformat (dh Feld 5). Ihre Kanäle können sich auf verschiedenen Ebenen befinden.
BEARBEITEN:
Auf den zweiten Blick möchten Sie wahrscheinlich den Standardnamen der Senke
pacmd stat
für eine weniger komplizierte Lösung erhalten:quelle
pactl set-sink-volume $(getdefaultsinkname) "$1"
Um ein Volume zu bekommen, versuche ich folgendes:
quelle
Mehrsprachige Variante:
Getestet auf Pakt 5.0
quelle
Da ich noch keinen Kommentar abgeben kann (speziell angemeldet, um die Antwort von @ jgr zu verbessern), gibt Ihre Bearbeitungslösung für den Fall, dass es sich bei Ihrem Standard-Sink um ein Plugin handelt (wie bei einer beliebigen Anzahl von Ladspa-Plugins), XX% zurück (beachten Sie das nachstehende Komma) ), das funktioniert also ein bisschen besser. Tut mir leid, mein awk-fu ist sehr einfach. Ich bin mir sicher, dass es einen besseren Weg gibt, dies zu tun.
In der geänderten Lösung wird auch das '%' weggelassen, da ich den Sinn nicht sehe, es beizubehalten, und wenn wir nur die Zahl zurückgeben, können wir es in Mathematik verwenden. Außerdem wurde der Fall setvol behoben, der in meinem Fall spezielle Anweisungen benötigt.
quelle
amixer
Mit dieser Mixer-Option können Sie die pulseaudio-Lautstärke ablesen.Jetzt können wir es mit
grep
odersed
oder analysierenperl
.quelle