Chcę odczytać poziom głośności, który mogę ustawić
pactl set-sink-volume $SINK $VOLUME
Czy jest na to łatwy sposób? Tak proste, jak hipotetyczne
pactl get-sink-volume $SINK
?
(Co próbuję zrobić? Używam pactl, aby ustawić głośność i pozwala mi to ustawić głośność powyżej 100%, co jest złym pomysłem (jakość dźwięku spada), więc myślę o napisaniu małego skryptu, który będzie nie przekraczaj 100%. Przeczytaj to. Przekroczono pewien próg? Ustawiono na 100%. Poniżej? dodaj 1%. Jeśli istnieje inny sposób, świetnie, powiedz mi! Najczystsze rozwiązanie prawdopodobnie powiedziałoby, żeby puls przestał na 100%. Ale pierwotne pytanie pozostaje, musi być jakiś sposób ..)
Jestem na Debianie, jeśli to robi jakąkolwiek różnicę.
command-line
pulseaudio
Higemaru
źródło
źródło
pactl list sinks
daje ci objętość, ale nie w przyjemnym, łatwym formacie, takim jak set-sink-volume.Odpowiedzi:
Właśnie to mam. Nie jest fajnie, ale wystarczyło na mój użytek. Nie mogłem znaleźć sposobu, aby to zrobić.
pactl
Po prostu nie wydają się mieć żadnych środków na uzyskanie wymieniając tylko na jeden zlew, ale są drukowane w kolejności rosnącej. Tak więc wybiera n-tą linię za pomocątail
ihead
. Zauważ, że linia głośności może mieć osobne głośności dla prawego i lewego kanału i żesed
substytut wybiera tylko pierwszy, ponieważ właśnie tego potrzebowałem.Dla przypomnienia używam,
pactl list sinks short
aby uzyskać mój aktywny numer zlewu:EDYCJA 2017-10-05: Musiałem je trochę ulepszyć ze względu na zmiany w pulseaudio. Oto co mam teraz:
Mam
MOD
ustawiony na +10 lub -10 i robię jakieś kontrole graniczne i wreszcie:źródło
pactl list sinks short | grep RUNNING | sed -e 's,^\([0-9][0-9]*\)[^0-9].*,\1,'
- Dodanosinks
pomiędzypactl list
ishort
LC_ALL=C pactl list sinks | grep
ponieważ tekst „Volume:” może być zlokalizowany w języku użytkownika.volume=$(pactl list sinks | grep Volume | head -n1 | awk '{print $5}')
Jeśli nie masz ograniczeń korzystania z innego programu, istnieje
pamixer
.Możesz uzyskać objętość za pomocą:
źródło
pulsemixer
pakietu. Wygląda mniej więcej tak samo.Zauważ, że odpowiedź Tommiego Kyntoli zależy od tego, czy zlew będzie używany, abyś mógł uzyskać numer zlewu.
Należy również pamiętać, że opiera się na nazwanych indeksach ujścia, aby były takie same jak indeks zliczany . Załóżmy na przykład, że mamy 3 zlewy 1, 2 i 3 i że 3 jest naszym wybranym zlewem, następnie odłączamy numer 2, pozostawiając nam 1 i 3. Teraz nie możesz liczyć na zatopienie 3 z rozwiązaniem Tommi Kyntola, ponieważ
pactl list sinks | grep "^[[:space:]]Volume:"
wypisze tylko 2 pola objętości, więc potokowanie do głowy / ogona w celu uzyskania$SINK + 1
linii nie będzie działać.Moje rozwiązanie działa w oparciu o założenie, że pacmd zawsze będzie wyświetlał zlewy w określonej kolejności. Jeśli potrzebujesz bardziej niezawodnego rozwiązania, musisz przeanalizować dane wyjściowe.
Uwaga: nie wiem, czy pola objętości różnią się, moje wygląda następująco (od
pacmd list-sinks
):Dostaję też tylko głośność pierwszego kanału (lewy przedni) w formacie procentowym (tj. Pole 5), twoje kanały mogą być na różnych poziomach.
EDYTOWAĆ:
Po drugie, prawdopodobnie faktycznie chcesz uzyskać domyślną nazwę zlewu
pacmd stat
dla mniej skomplikowanego rozwiązania:źródło
pactl set-sink-volume $(getdefaultsinkname) "$1"
dla uzyskania woluminu próbuję tego:
źródło
Wariant wielojęzyczny:
Testowane na pactl 5.0
źródło
Ponieważ nie mogę jeszcze komentować (zarejestrowałem się specjalnie w celu ulepszenia odpowiedzi @ jgr), w przypadku, gdy domyślnym zlewem jest wtyczka (jak dowolna liczba wtyczek ladspa), jego rozwiązanie edycyjne zwróci XX%, (zwróć uwagę na przecinek końcowy ), więc działa to trochę lepiej. Niestety, moje awk-fu jest bardzo proste, jestem pewien, że jest lepszy sposób, aby to zrobić.
Zmodyfikowane rozwiązanie pomija także „%”, ponieważ nie widzę sensu w utrzymywaniu go, a jeśli zwrócimy tylko liczbę, możemy go użyć w matematyce. Naprawiono również przypadek setvol, który w moim przypadku wymaga szczegółowych instrukcji.
źródło
Możesz użyć
amixer
do odczytu głośności pulseaudio, używając opcji miksera w ten sposób.Teraz możemy go przeanalizować za pomocą
grep
lubsed
lubperl
.źródło