Как включить звук с помощью amixer?
Включая Natty, я всегда мог переключать (отключать / включать) громкость звука "Master" с помощью
amixer sset Master toggle
команда, которую я связал с привязкой ребра в CompizConfig-Manager.
Теперь после установки Oneiric команда только отключает звук, но не включает его. Я даже попробовал это в Терминале, но это также не работает. Он изменяет "Mono: Playback 68 [78%] [-14.25dB] [off]" на "...[on]", но звук остается приглушенным, поэтому мне нужно включить его с помощью "звукового индикатора" в панель.
Как я могу заставить это работать снова? Что изменилось с Нетти? Кто-нибудь знает команду, которую звуковой индикатор использует для переключения громкости звука?
9 ответов
Это работает для меня 13.04, как без звука, так и без звука:
amixer -D pulse set Master 1+ toggle
Он определяет импульсный звук, чтобы обеспечить включение звука, включение звука.
Я использую этот скрипт в качестве обходного пути:
#!/bin/bash
CURRENT_STATE=`amixer get Master | egrep 'Playback.*?\[o' | egrep -o '\[o.+\]'`
if [[ $CURRENT_STATE == '[on]' ]]; then
amixer set Master mute
else
amixer set Master unmute
amixer set Front unmute
amixer set Headphone unmute
fi
Я сделал различие amixer scontents
перед звонком amixer set Master mute
и после вызова и включения звука все с помощью графического интерфейса, чтобы выяснить, что нужно включить звук.
- Со звуком по типу
amixer scontents > ~/before
(вы получите файл со статусом всех звуковых каналов) - Затем переключите громкость с
amixer set Master toggle
- Создайте второй файл состояния канала с
amixer scontents > ~/after
- Переключить звук снова с
amixer set Master toggle
который должен вернуть громкость обратно на уровень до первой команды переключения - Создайте третий файл с
amixer scontents > ~/afterafter
Теперь у вас есть три файла, которые сообщают вам о состоянии звуковых каналов, используемых для нормального звука, которые отключаются amixer set Master toggle
и которые не включаются снова, снова включая звук с той же командой.
Чтобы легко сравнивать файлы и видеть различия (каналы, которые отключаются и не включаются впоследствии), вы можете использовать meld
из Центра программного обеспечения. Запустите его, откройте три файла и на полосе прокрутки вы увидите, где существуют различия между файлами. Используйте найденные имена каналов, чтобы добавить их в вышеописанный скрипт.
Я не мог заставить звук отключаться, чтобы правильно переключаться. Независимо от того, использовал ли я CLI и набрал в мастере Amixer sset Master или нажал клавишу переключения носителя HP pavillion, я получу тот же результат: если звук включен и работает, он автоматически отключит мастер-канал и канал PCM. Затем, когда я снова нажимаю на тумблер (cli или key), он ВСЕГДА включает Master, но отключает PCM. Для моей установки (HP Pavilion DV6 под управлением Xubuntu Oneric) это означает, что звук выключен даже при включенном мастере. При запуске из CLI - те же результаты. Если с помощью cli я переключаю PCM, он также отключает основной канал и снова не включает его, хотя он правильно переключает PCM.
Сценарий, который работал, был:
#!/bin/bash
if amixer -c 0 get Master | grep -q off
then
amixer set Master unmute
amixer set PCM unmute
else
amixer set Master mute
fi
Затем я использовал сочетания клавиш Xubuntu (настройки> менеджер настроек> клавиатура> ярлыки приложений), чтобы перейти к сценарию (я назвал его sndfx.sh и установил его на исполняемый файл, щелкнув правой кнопкой мыши в thunar и в разделе разрешений поставил галочку сделать исполняемым). Затем я назначил ему быструю клавишу HP Pavilion, нажав эту клавишу. Теперь он переключается правильно - потрясающе. Надеюсь, это поможет кому-то еще.
мир
Если я не ошибаюсь, это ошибка, которая заставляет другие каналы микшера отключать и включать звук. Чтобы отключить звук, попробуйте
набор микшеров Master 0;
Включить звук попробовать
набор амиксеров Мастер 1%+; набор микшеров Master 7дБ +;
Попробуйте этот фрагмент скрипта... он работает
Если вы хотите заменить amixer в.lircrc для вашего удаленного управления, работающего с lirc, вы можете попробовать следующие строки. Убедитесь, что установлен xmacro. Регулятор громкости теперь работает снова.
begin
prog = irexec
button = KEY_VOLUMEUP
repeat = 1
delay = 2
config = echo KeyStrPress XF86AudioRaiseVolume KeyStrRelease XF86AudioRaiseVolume | xmacroplay $DISPLAY
end
begin
prog = irexec
button = KEY_VOLUMEDOWN
repeat = 1
delay = 2
config = echo KeyStrPress XF86AudioLowerVolume KeyStrRelease XF86AudioLowerVolume | xmacroplay $DISPLAY
end
begin
prog = irexec
button = KEY_MUTE
config = echo KeyStrPress XF86AudioMute KeyStrRelease XF86AudioMute | xmacroplay $DISPLAY
end
Хитрость заключается в том, чтобы заставить состояние динамика или наушников следовать состоянию основного канала в зависимости от того, подключены наушники или нет. Этот скрипт делает это для меня на моем древнем ноутбуке Dell Latitude:
#!/bin/bash
amixer -q sset Master toggle
MASTER_STATE=`amixer get Master | awk -F"dB] " 'NR == 5 {print $2;}'`
HEADPHONES_PLUGGED=`amixer contents | grep -A 2 Headphone\ Jack | awk -F"=" 'NR == 3 {print $2;}'`
if [[ $HEADPHONES_PLUGGED == 'on' ]]; then
SLAVE="Headphone"
else
SLAVE="Speaker+LO"
fi
if [[ $MASTER_STATE == '[on]' ]]; then
amixer -q sset $SLAVE unmute
else
amixer -q sset $SLAVE mute
fi
Возможно, вам придется проверить свои каналы с помощью amixer на вашем компьютере и соответственно изменить определения SLAVE. Кроме того, строка grep "Headphone\ Jack" в определении HEADPHONES_PLUGGED может потребовать чего-то другого.
Если кто-то ищет другое решение. я использовал
pactl
команды.
Для увеличения/уменьшения громкости используйте
pactl -- set-sink-volume 0 +10%
И переключить использование звука
pactl -- set-sink-mute 0 toggle
читать больше Команды и способы использования PACTL установить громкость звука из командной строки
Грубая сила включения звука:
for i in $(amixer |grep -o \'.*\'); do amixer set $i unmute; done