Как использовать командную строку для изменения громкости?


72

Я пытаюсь контролировать громкость, используя мой программный скрипт. Как я могу сделать следующее в Fedora 15, Ubuntu Linux?

  1. Отключить звук
  2. Увеличение громкости и уменьшение громкости

Примечание. Обратите внимание, что я использую веб-микрофон / динамик USB, а также аналоговый микрофон / динамик. Я хочу обратиться ко всем, чтобы быть уверенным.


1
Если кто-то приезжает сюда из lubuntu, чтобы починить свои кнопки регулировки громкости, <command>amixer -D pulse sset Master 3%+ unmute</command>вставьте соответствующую комбинацию клавиш, ~/.config/openbox/lubuntu-rc.xmlа затем запустите openbox --reconfigureисправление для меня
rhombidodecahedron

Ответы:


80

Вы можете использовать amixer . Это в alsa-utilsпакете на Ubuntu и Debian.

Запустите amixerбез параметров, чтобы получить обзор ваших элементов управления для устройства по умолчанию.

Вы также можете использовать alsamixerбез параметров (из того же пакета), чтобы получить более наглядный обзор. Используйте F6 для просмотра и переключения между устройствами. Обычно у вас может быть PulseAudio и аппаратная звуковая карта на выбор.

Затем используйте amixerс setкомандой , чтобы установить громкость. Например, чтобы установить мастер-канал на 50%:

amixer set Master 50%

Master это имя элемента управления и должно совпадать с тем, которое вы видите при запуске без параметров.

Обратите внимание на %знак, без него он будет воспринимать значение как 0 - 65536 уровень.

Если PulseAudio не ваше устройство по умолчанию, вы можете использовать -Dпереключатель:

amixer -D pulse set Master 50%

Другие полезные команды, указанные в комментариях:

Для увеличения / уменьшения громкости используйте +/-после номера, используйте

amixer set Master 10%+
amixer set Master 10%-

Чтобы приглушить, включить или переключить звук в состояние приглушения / включения звука, используйте

amixer set Master mute
amixer set Master unmute
amixer set Master toggle

Также обратите внимание, что могут быть две разные процентные шкалы, необработанная по умолчанию, а для некоторых устройств более естественная шкала, основанная на децибелах , которая также используется alsamixer. Используйте, -Mчтобы использовать последний.

Наконец, если вы заинтересованы только в PulseAudio, вы можете проверить pactl(см. Один из других ответов).


4
Спасибо! Есть два способа сделать это: 1. В качестве превосходного примера: amixer set Master mute; amixer set Мастер включения звука; 2. yum -y установить xdotool; ключ xdotool XF86AudioRaiseVolume; ключ xdotool XF86AudioLowerVolume;
YumYumYum

15
И, как дополнение, вы можете увеличить или уменьшить громкость на amixer set Master 10%+иamixer set Master 10%-
пользователь

2
Это не работает в Ubuntu.
Cerin

2
Я не согласен @Cerin. Это работает на Ubuntu LTS 12 прямо сейчас. Обратите внимание, что Min master чувствителен к регистру (должен быть в верхнем регистре).
ashes999

5
Серин прав. Это не работает. Что работает:amixer -D pulse sset Master 50%
Шивамс

30

Чтобы отключить звук:

amixer -D pulse sset Master mute

Включить звук:

amixer -D pulse sset Master unmute

Чтобы увеличить громкость на 5%:

amixer -D pulse sset Master 5%+

Чтобы уменьшить громкость на 5%:

amixer -D pulse sset Master 5%-


1
Вы также можете добавить unmute к последним командам, чтобы автоматически включать звук при изменении громкости (для удобства):amixer -D pulse sset Master unmute 5%+
Роман Голышев,

16

pactl / pacmd (в отличие от amixer) позволяет увеличить громкость на 100% :-).

pactl set-sink-mute 0 toggle  # toggle mute
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)

Ручная настройка более 100% возможна в pavucontrol(в отличие от alsamixer).

ПРИМЕЧАНИЕ. Если вы хотите использовать одни и те же команды на разных хостах с разными @DEFAULT_SINK@приемниками , вы можете использовать их вместо номера 0:

pactl set-sink-volume @DEFAULT_SINK@ +5%

Вы устанавливаете приемник по умолчанию с помощью pactl set-default-sink my-sink-name(список имен с помощью pactl list short sinks).

ОБНОВЛЕНИЕ: добавлено toggle mute(спасибо Дону Джо).

Источник: askubuntu.com , wiki.archlinux.org .


5

Более высокий объем:

amixer set Master 3%+

Нижний объем:

amixer set Master 3%-

Отключение звука:

amixer set Master toggle

Примеры сочетаний клавиш для i3/ sway, команды после 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%-

4

если пользователь отключил звук, вы должны включить его. в противном случае настройка процента будет работать, но звук все еще выключен

amixer set 'Master' 100% unmute
/usr/bin/amixer set 'PCM' 100% unmute

3

Ответ Певика почти правильный для PulseAudio, с двумя упоминаниями:

  • команда отрицательного изменения громкости вызовет ошибку, потому что ее часть с минусом будет интерпретирована как отдельная (нераспознанная) опция; вам нужно отключить парсинг опций с двойным минусом где-то перед отрицательным числом, например, "-5%"

  • истинное состояние отключения звука - это то, что должно быть возможно переключать с помощью той же клавиши, что не сработает, если вы просто устанавливаете громкость на фиксированное значение 0, поэтому правильной командой для этого будет:

pactl set-sink-mute @DEFAULT_SINK@ toggle

Л.Е .: Применима ли первая подсказка, может зависеть от версии PulseAudio, которую вы используете, или от чего-то другого в дистрибутиве - я замечаю, что в Ubuntu 16 он работает без «-» и завершается неудачей, если я добавляю «-» перед отрицательным процентом.


очень хорошо, что делает его идеальным, когда мы много меняем оконные менеджеры на лету для лучшего игрового fps, поэтому я использую xbindkeys-configи мне даже не нужно перезагружать X :) (смеется улыбка ... без каламбура, смеется)
Водолей Власть

2

amixer работал для меня, но я не получил хорошую анимацию, которую получаю, когда нажимаю кнопку увеличения громкости на клавиатуре.

Я решил использовать, xteчтобы напрямую нажать эту клавишу из командной строки:

Увеличить громкость: xte 'key 0x1008ff13'

Звук тише: xte 'key 0x1008ff11'

Mute: xte 'key 0x1008ff12'

Я вычислил keyym (это шестнадцатеричное число), используя xev.

sudo apt-get install xbindkeys xautomation
xev

а затем нажмите кнопку увеличения громкости на клавиатуре, чтобы получить KeySym. Ключ sym может варьироваться от системы к системе, поэтому поиск его по xev будет наиболее надежным способом.

Результат выглядит так для меня:

Событие KeyRelease, серийный номер 37, синтетический номер NO, окно 0x2c00001, корень 0xef, subw 0x0, время 6660080, (566 573), корень: (664 651), состояние 0x0, код ключа 123 (keysym 0x1008ff13, XF86AudioRaiseVolume), тот же экран YES, XLookupString дает 0 : XFilterEvent возвращает: False

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.