Snažím se ovládat hlasitost pomocí mého programovacího skriptu. Jak mohu dělat následující ve Fedora 15, Ubuntu linux?
Poznámka: Upozorňujeme, že používám webový mikrofon/reproduktor USB a také analogový mikrofon/reproduktor. Chci se ujistit o všech.
Můžete použít amixer . Je součástí balíčku alsa-utils
Na Ubuntu a Debianu.
Spusťte amixer
bez parametrů, abyste získali přehled o svých ovládacích prvcích pro výchozí zařízení.
Můžete také použít alsamixer
bez parametrů (ze stejného balíčku) a získat tak vizuální přehled. Pomocí klávesy F6 můžete vidět a přepínat mezi zařízeními. Obvykle můžete mít PulseAudio a hardwarovou zvukovou kartu, ze které můžete vybírat.
Poté pomocí příkazu amixer
pomocí příkazu set
nastavte svazek. Například pro nastavení hlavního kanálu na 50%:
amixer set Master 50%
Master
je jméno ovládacího prvku a mělo by odpovídat jménu, které vidíte při běhu bez parametrů.
Všimněte si znaménka %
, Bez něj bude považovat hodnotu za úroveň 0 - 65536.
Pokud PulseAudio není vaše výchozí zařízení, můžete použít přepínač -D
:
amixer -D Pulse set Master 50%
Další užitečné příkazy zdůrazněné v komentářích:
Pro zvýšení/snížení hlasitosti použijte +/-
Za číslem, použijte
amixer set Master 10%+
amixer set Master 10%-
Chcete-li ztlumit, zrušit nebo přepnout mezi ztlumeným/neztlumeným stavem, použijte
amixer set Master mute
amixer set Master unmute
amixer set Master toggle
Také si všimněte, že mohou existovat dvě různá procentuální měřítka, výchozí surová a pro některá zařízení přirozenější měřítko založené na decibel , které také používá alsamixer
. Použijte -M
Pro použití posledního.
A konečně, pokud vás zajímá pouze PulseAudio, možná byste se měli podívat na pactl
(viz jedna z dalších odpovědí).
Ztlumit:
amixer -D Pulse sset Master mute
Zrušení ignorování:
amixer -D Pulse sset Master unmute
Postup zvýšení hlasitosti o 5%:
amixer -D Pulse sset Master 5%+
Chcete-li snížit hlasitost o 5%:
amixer -D Pulse sset Master 5%-
pactl
/ pacmd
(na rozdíl od amixer
) umožňuje zvýšit objem o 100% :-).
pactl set-sink-mute 0 toggle # toggle mute, also you have true/false
pactl set-sink-volume 0 0 # mute (force)
pactl set-sink-volume 0 100% # max
pactl set-sink-volume 0 +5% # +5% (up)
pactl set-sink-volume 0 -5% # -5% (down)
Ruční nastavení přes 100% je možné v pavucontrol
(na rozdíl od alsamixer
).
Poznámka : Pokud chcete sdílet stejné příkazy na různých hostitelích s různými dřezy, můžete použít @[email protected]
jako dřez místo čísla 0
:
pactl set-sink-volume @[email protected] +5%
Výchozí dřez nastavíte pomocí pactl set-default-sink my-sink-name
(seznam jmen s pactl list short sinks
).
Zdroj : askubuntu.com , wiki.archlinux.org .
Vyšší objem:
amixer set Master 3%+
Nižší objem:
amixer set Master 3%-
Ztlumit přepínač:
amixer set Master toggle
Příklad keybindings pro i3
/ sway
, příkazy jsou za exec
:
bindsym XF86AudioRaiseVolume exec amixer set Master 3%+
bindsym XF86AudioLowerVolume exec amixer set Master 3%-
bindsym XF86AudioMute exec amixer set Master toggle
bindsym Ctrl+$alt+Up exec amixer set Master 3%+
bindsym Ctrl+$alt+Down exec amixer set Master 3%-
Odpověď pevik je pro PulseAudio téměř správná, je třeba zmínit dvě věci:
příkaz negativní změny objemu vygeneruje chybu, protože jeho část mínus-něco bude interpretována jako samostatná (nerozpoznaná) volba; je třeba vypnout analýzu možností s dvojitým znaménkem někde před záporným číslem, např. "- -5%"
skutečný stav ztlumení je něco, co by mělo být možné přepínat se stejným klíčem, což nebude fungovat, pokud nastavíte hlasitost na pevnou hodnotu 0, takže správným příkazem by bylo:
pactl set-sink-mute @[email protected] toggle
LE: Zda je použitelná první nápověda, může záviset na verzi PulseAudio, kterou používáte, nebo na něčem jiném v distro - všiml jsem si, že na Ubuntu 16 to funguje bez "-" a selže, pokud přidám "-" před záporným procentem.
pokud uživatel ztlumil zařízení, musíte jej „zrušit“. jinak nastavení procenta bude fungovat, ale zvuk je stále vypnutý
amixer set 'Master' 100% unmute
/usr/bin/amixer set 'PCM' 100% unmute
amixer pracoval pro mě, ale nedostal jsem Nice animaci, kterou dostanu, když stisknu tlačítko pro zvýšení hlasitosti na klávesnici.
Rozhodl jsem se použít xte
k přímému stisknutí této klávesy z příkazového řádku:
Zvýšit hlasitost: xte 'key 0x1008ff13'
Snížit hlasitost: xte 'key 0x1008ff11'
Ztlumit: xte 'key 0x1008ff12'
Přišel jsem na keyym (hexadecimální číslo) pomocí xev
.
Sudo apt-get install xbindkeys xautomation
xev
a poté stisknutím tlačítka pro zvýšení hlasitosti na klávesnici získáte klávesnici. Klíčový symbol se může v jednotlivých systémech lišit, takže nalezení od xev bude nejspolehlivějším způsobem.
Výsledek pro mě vypadá takto:
Událost KeyRelease, sériový 37, syntetický NE, okno 0x2c00001, root 0xef, subw 0x0, čas 6660080, (566,573), root: (664,651), stav 0x0, keycode 123 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES, XLookupString dává 0 bajtů : XFilterEvent se vrací: False