Как переключить звук с помощью amixer?

Включая Natty, я всегда мог переключать (отключать / отключать) громкость звука «Master» с помощью команды

amixer sset Master toggle

, которую я связал с привязкой к краю в CompizConfig-Manager.

Теперь после установки Oneiric команда только отключает звук, но не отключает его. Я даже пробовал его в Терминале, но он тоже не работает. Он изменяет « Моно: Воспроизведение 68 [78%] [-14.25dB] [off] » на «... [on]», но звук остается приглушенным, поэтому мне нужно включить его через «sound-indicator» на панели.

Как я могу снова заставить эту работу работать? Что изменилось с Натти? Кто-нибудь знает команду, которую использует «звуковой индикатор» для переключения громкости звука?

46
задан 15 February 2012 в 21:28

14 ответов

Это работает для меня в 13.04, как отключать звук, так и отключать:

amixer -D pulse set Master 1+ toggle

Указывает импульсный звук, чтобы обеспечить включение звука, отключать все.

40
ответ дан 25 May 2018 в 18:17
  • 1
    Работал на lubuntu 13.10. Ищите это для НЕДЕЛЕЙ! – luisgonzalez 10 December 2013 в 07:31
  • 2
    EDIT: он работал только при выполнении команды в терминале. Но когда я пытаюсь настроить как ключевое связывание, я получаю: Домашний каталог недоступен: Permission denied ALSA lib pulse.c: 243: (pulse_connect) PulseAudio: невозможно подключиться: соединение отклонено amixer: ошибка при подключении микшера: соединение отклонено – luisgonzalez 10 December 2013 в 07:44
  • 3
    Он работает еще лучше без параметра 1+. – J. Katzwinkel 13 October 2014 в 07:05
  • 4
    Все еще работает в 17.10 (хитрый). Я использую это для привязок медиа i3: bindsym XF86AudioMute exec --no-startup-id amixer -D pulse set Master 1+ toggle – Joel 16 November 2017 в 00:25
  • 5
    В чем причина 1+? – reversiblean 24 December 2017 в 14:30

Это работает для меня в 13.04, как отключен, так и отключен:

amixer -D pulse set Master 1+ toggle

Он задает импульсный звук, чтобы обеспечить включение звука, отключать все.

42
ответ дан 25 July 2018 в 21:12

Я использую этот скрипт в качестве обходного пути:

#!/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 set Master mute, я сделал разницу amixer scontents, и после его вызова и отключения звука с помощью графического интерфейса, чтобы выяснить, что

Со звуком по типу amixer scontents > ~/before (вы получите файл со статусом всех звуковых каналов). Затем переключите громкость с помощью amixer set Master toggle. Создайте второй файл статуса chanel с amixer scontents > ~/after снова переключите звук с помощью amixer set Master toggle, который должен вернуть громкость на уровень до первой команды переключения. Создайте третий файл с amixer scontents > ~/afterafter

Теперь у вас есть три файлы, сообщающие вам, которые сообщают вам о состоянии звуковых каналов, используемых для нормального звука, которые отключены amixer set Master toggle и которые не включаются снова, снова отключаясь с помощью той же команды.

Чтобы легко сравнить файлы и увидеть различия (приемы, которые будут отключены и не будут отключены впоследствии), вы можете использовать meld в Центре программного обеспечения. Запустите его, откройте три файла и на полосе прокрутки вы увидите, где существуют различия между файлами. Используйте найденные имена chanel, чтобы добавить их к описанному выше сценарию.

15
ответ дан 25 May 2018 в 18:17
  • 1
    К сожалению, скрипт только отключает звук, но не отключает его – joschi 24 October 2011 в 22:35
  • 2
    Вероятно, это потому, что ваши вещи, которые нужно отключить, не называются «Front " и "Наушники" как в моей системе. – Jim Hunziker 24 October 2011 в 23:07
  • 3
    Я также сделал diff и выяснил, чего не хватало, чтобы скрипт работал на моем компьютере, теперь он работает. Большое спасибо. – joschi 25 October 2011 в 01:11

Я не мог заставить звук отключать, чтобы правильно переключаться. Я использовал CLI и набирал в Amixer sset Master переключился или нажал клавишу переключения мультимедиа HP pavillion, я получаю тот же результат: если звук включен и работает, он автоматически отключит канал Master Channel AND 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, нажав на эту клавишу. Теперь он правильно переключается - Удивительно. Надеюсь, это поможет кому-то еще.

Мир

5
ответ дан 25 May 2018 в 18:17

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

amixer set Master 0;

Чтобы включить звук, попробуйте

amixer set Master 1% +; набор amixer Master 7dB +;

2
ответ дан 25 May 2018 в 18:17
  • 1
    Эти команды работают, но они не позволяют мне переключать том с помощью одной команды, которую я могу комбинировать с привязкой к краю. – joschi 24 October 2011 в 14:22
  • 2
    Если кто-то заинтересован в соответствующем отчете об ошибке, см. здесь . – joschi 24 October 2011 в 14:28

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

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

2
ответ дан 25 May 2018 в 18:17
  • 1
    Я подтверждаю, что это работает в моей настройке. Можете ли вы написать шаги по ее реализации, в текущей форме это не очень полезно для других пользователей. – Mateo 1 May 2012 в 09:50

Если вы хотите заменить amixer на .lircrc для вашего remotecontrol, работающего с 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
1
ответ дан 25 May 2018 в 18:17

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

0
ответ дан 25 May 2018 в 18:17

Принудительная сила unmute:

for i in $(amixer |grep -o \'.*\'); do amixer set $i unmute; done
-1
ответ дан 25 May 2018 в 18:17
  • 1
    Я не думаю, что использование 80 и более устройств - хорошая идея. Это включает в себя микрофоны, которые могут привести к нежелательным петлям обратной связи. сделайте for i in $(amixer |grep -o \'.*\'); do echo amixer set $i unmute; done раньше, чтобы посмотреть, что будет сделано. – user unknown 15 April 2012 в 03:29

Если вы хотите заменить amixer на .lircrc для вашего remotecontrol, работающего с 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
1
ответ дан 31 July 2018 в 10:29

Если вы хотите заменить amixer на .lircrc для вашего remotecontrol, работающего с 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
1
ответ дан 2 August 2018 в 02:52

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

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

2
ответ дан 2 August 2018 в 02:52

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

amixer Master 0;

Включить попытку

установить amixer Master 1% +; набор amixer Master 7dB +;

2
ответ дан 4 August 2018 в 18:40

Принудительная сила unmute:

for i in $(amixer |grep -o \'.*\'); do amixer set $i unmute; done
-1
ответ дан 13 August 2018 в 12:32

Другие вопросы по тегам:

Похожие вопросы: