Как включить звук с помощью 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 и после вызова и включения звука все с помощью графического интерфейса, чтобы выяснить, что нужно включить звук.


  1. Со звуком по типу amixer scontents > ~/before (вы получите файл со статусом всех звуковых каналов)
  2. Затем переключите громкость с amixer set Master toggle
  3. Создайте второй файл состояния канала с amixer scontents > ~/after
  4. Переключить звук снова с amixer set Master toggle который должен вернуть громкость обратно на уровень до первой команды переключения
  5. Создайте третий файл с 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дБ +;

Попробуйте этот фрагмент скрипта... он работает

https://wiki.archlinux.org/index.php/PulseAudio

Если вы хотите заменить 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
Другие вопросы по тегам