Клавиша отключения звука отключает звук Alsa и PulseAudio, но включает только Alsa


20

Когда я нажимаю клавишу отключения звука на клавиатуре, мастер-канал Alsa и мастер-канал PulseAudio приглушаются, повторное нажатие на него приводит только к включению мастер-канала alsa, мастер-канал pulseaudio остается приглушенным. Результат: нет звука. Как мне это исправить?

Ответы:


11

Запустите эту команду:

amixer -D pulse set Master 1+ unmute

12
Можете ли вы объяснить, что эта команда делает, чтобы другие пользователи знали?
Восстановить Монику - ζ--

1
Для чего это 1+? Я не смог найти объяснения в справочной странице amixer.
Ярно

использование переключения вместо включения звука полезно, если вы привязываете команду к аппаратному ключуamixer -D pulse set Master 1+ toggle
Pol Alvarez

20

это намного проще, хотя.

amixer -D pulse set Master Playback Switch toggle

установите это как горячую клавишу "Mute \ Unmute". регуляторы громкости можно оставить как есть.

Mint 15 Mate - разобрался сам, у меня отлично работает.


Что бы это ни было - хорошо работало на arch linux. Приглушенный и беззвучный звук успешно. Теперь я связал эту команду с командой mute на моем ноутбуке, потому что по умолчанию она не включает все каналы. СПАСИБО
Эрикас

Это работало для меня с Ubuntu 14.04 + i3, принятый ответ не работал.
Инго Бюрк

1
amixer -D pulse set Master toggleСделаю. Amixer ожидает простое имя элемента управления микшера для команды set или sset, и даже если он принял полное имя элемента управления микшера, вам придется заключать в кавычки такое имя из нескольких слов. Вы можете использовать необязательный модификатор playbackв команде, например так:, amixer -D pulse set Master playback toggleно он не нужен, если Masterтакже не имеет возможности захвата. Используя дополнительные модификаторы, вы также можете контролировать, к каким каналам применяется команда, если ваша система поддерживает объемный звук.
Ярно

5

У меня была такая же проблема при запуске рабочего стола MATE на Linux Mint Debian Edition (201204).

Действие «Увеличение громкости» не смогло включить звук. Я понял, что проблема была с Pulseaudio, но пакет mate-media-gstreamerи mate-settings-daemon-gstreamerгде установлен по умолчанию. Установив mate-media-pulseи mate-settings-daemon-pulse(что удалило mate-media-gstreamerи mate-settings-daemon-gstreamer) и тадам ... Действие "Увеличение громкости" смогло снова включить звук!

Я надеюсь, что это также будет работать для вас!


Я работал (на Debian Jessie), и это решение является постоянным, в то время как решения AFAIU, включающие amixer -D pulse set Master xxxодин выстрел, или должны быть сопоставлены вручную с ярлыком. Предлагаемое здесь решение выглядит так, как оно должно быть.
Жером

2

Это проблема с pulseaudio, команды для alsa или amixer не будут правильно отправлять звук в импульсный режим. Когда команды alsa посылают сигнал отключения звука, это команда переключения (отправьте ту же команду для отключения / включения звука).

Теперь в pulseaudio у них есть отдельный код отключения звука и включения звука! Многие сообщают, что удаление pulseaudio решит проблему, но для некоторых это не совсем приемлемый ответ (как я, потому что pulse полезен для многих приложений).

Таким образом, чтобы решить это, нам нужно сделать сценарий,

1- Создайте новый пустой документ в текстовом редакторе, таком как gedit или коврик для мыши,

2- Вставьте этот код в документ, Soruce of code: 2

#!/bin/bash
#### Create ~/.pulse/mute if not exists
ls ~/.pulse/mute &> /dev/null
if [[ $? != 0 ]]
then
    echo "false" > ~/.pulse/mute
fi

####Create ~/.pulse/volume if not exists
ls ~/.pulse/volume &> /dev/null
if [[ $? != 0 ]]
then
    echo "65536" > ~/.pulse/volume
fi

CURVOL=`cat ~/.pulse/volume`     #Reads in the current volume
MUTE=`cat ~/.pulse/mute`          #Reads mute state

if [[ $1 == "increase" ]]
then
    CURVOL=$(($CURVOL + 3277)) #3277 is 5% of the total volume, you can change this to suit your needs.
    if [[ $CURVOL -ge 65536 ]]
    then
        CURVOL=65536        
    fi
elif [[ $1 == "decrease" ]]
then
    CURVOL=$(($CURVOL - 3277))
    if [[ $CURVOL -le 0 ]]
    then
        CURVOL=0        
    fi
elif [[ $1 == "mute" ]]
then
    if [[ $MUTE == "false" ]]
    then
        pactl set-sink-mute 0 1
        echo "true" > ~/.pulse/mute
    exit    
    else
        pactl set-sink-mute 0 0
        echo "false" > ~/.pulse/mute    
    exit
    fi
fi

pactl set-sink-volume 0 $CURVOL
echo $CURVOL > ~/.pulse/volume # Write the new volume to disk to be read the next time the script is run.

3- Назовите файл «том» (расширение не требуется), поместите его туда, где сможете найти, и не удаляйте его, как домашнюю папку.

4. Сделайте файл исполняемым, щелкнув его правой кнопкой мыши, перейдите в «Свойства», затем на вкладку «Разрешения» и установите флажок, чтобы пометить его как исполняемый. Это позволит запустить скрипт. наценка файл-как-executible-гуй

5. Далее нам нужно связать команды с клавиатурой, команды для кода увеличиваются, уменьшаются и отключаются.

Итак, перейдите к настройкам клавиатуры - как-делай-меня-меня-клавиатура-ярлыки-в-xubuntu , в области сочетаний клавиш нажмите кнопку Добавить, затем откройте, откройте созданный нами файл «Volume», затем добавьте команду для кода после громкости, увеличения громкости чтения или отключения звука . но с местоположением файла кода перед ним, как "/ home / username / volume mute"

Затем назначьте его клавиатуре, нажав клавишу или, если она уже используется,
~ Скорее всего, ~ найдите их и замените команду.

Сочетания клавиш, скорее всего, называются XF86AudioRaiseVolume, XF86AudioLowerVolume, XF86AudioMute . Поскольку отключен только звук, сконцентрируй свои усилия на том, чтобы сначала это изменить.

Ошибка: 1


Я только что XF86AudioMuteсопоставил с командой amixer set Master toggle. Клавиши повышения и понижения громкости отображаются аналогично amixerкомандам.
Чан-Хо Су

@ Chan-HoSuh у тебя такая же проблема? Вы можете просто вызвать команду mute этого сценария, если хотите, по какой-то причине импульс перехватывал звук на моем компьютере, amixer отправляет переключатель, который интерпретируется как просто отключение по импульсу или просто перехват нажатия клавиши? Я использовал аналогичный сценарий, который раньше показывал панель громкости :(, но она отключает звук и включает звук, и теперь у них есть уведомления, так что все хорошо, переключение такое, как оно было настроено ранее.
Матео

Небольшое улучшение скрипта - также принудительное включение звука при увеличении / уменьшении громкости. Я также добавил «paplay /usr/share/sounds/ubuntu/stereo/message.ogg», чтобы получить отзыв о томе.
ДМА

Может быть , это было по- другому и раньше, но с PulseAudio 4.0 вы можете использовать такие команды , как pactl set-sink-volume 0 +5%, pactl set-sink-volume 0 -5%и pactl set-sink-mute 0 toggleувеличить объем, уменьшить громкость и переключение объема, соответственно.
Ярно

@jarno да, это должно было решить конкретную проблему (баг), так что она, скорее всего, исправлена ​​/ неактуальна, но остается приятным небольшим взломом, если больше ничего не работает
Матео


1

Работал для меня 12.10:

    #!/bin/sh
    amixer -c 0 sset Master,0 mute
    sleep 5
    amixer -D pulse set Master 1+ unmute

1

Для пользователей KDE и kmix, если вы используете этот скрипт, у вас все равно будет работать визуальная обратная связь:

#! /bin/bash

DBUS=qdbus 2> /dev/null

case "$1" in
  volup)
        pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo 0
        ${DBUS} org.kde.kmix /kmix/KMixWindow/actions/increase_volume com.trolltech.Qt.QAction.trigger
        ;;
  voldn)
        pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo 0
        ${DBUS} org.kde.kmix /kmix/KMixWindow/actions/decrease_volume com.trolltech.Qt.QAction.trigger
        ;;
  mute)
        ${DBUS} org.kde.kmix /kmix/KMixWindow/actions/mute com.trolltech.Qt.QAction.trigger
        pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo $(${DBUS} org.kde.kmix /Mixers/0/Master_0 org.kde.KMix.Control.mute | sed 's/false/0/g;s/true/1/g')
        ;;
  *)
    echo "Usage: mixctl <volup|voldn|mute>" >&2
    exit 1
    ;;
esac

exit 0

Использование:

1) Сохраните его как ~ / bin / mixctl
2) Отмените отображение сочетаний клавиш kmix по умолчанию для увеличения / уменьшения громкости и отключения звука
3) Создайте три новых пользовательских сочетания клавиш с именами «Увеличение громкости», «Уменьшение громкости» и «Без звука»
- > тип ярлыка: команда
-> в качестве команд используйте ~ / bin / mixctl coep , ~ / bin / mixctl voldn и ~ / bin / mixctl mute соответственно


1

У меня была такая же проблема на нескольких машинах Xubuntu 12.04, которые были обновлены до XFCE 4.10. Вот очень быстрый способ решить эту проблему из командной строки (или с помощьюbash скрипта).

В отличие от предыдущих решений, которые предлагают скрипты с ограничением по времени, это решение полностью восстанавливает функцию кнопки отключения / включения звука.

Просто выполните следующие две команды один раз, чтобы решить проблему раз и навсегда:

$ xfconf-query --channel xfce4-mixer --property /active-card --set PlaybackInternalAudioAnalogStereoPulseAudioMixer --reset
$ xfconf-query --create --channel xfce4-keyboard-shortcuts --property /commands/custom/XF86AudioMute --type string --set 'amixer -D pulse set Master 1+ toggle'

1

Я нашел простое решение, которое хорошо работает для меня на этом форуме . Подробно, вам нужно добавить это в /etc/asound.conf:

pcm.pulse {
    type pulse
}
ctl.pulse {
    type pulse
}
pcm.!default {
    type pulse
}
ctl.!default {
    type pulse
}

А затем установите сочетание клавиш для клавиши отключения звука командой:

amixer set Master toggle

0

Вы можете использовать настройки клавиатуры, чтобы установить кнопку отключения звука для выполнения команды, найденной ЗДЕСЬ . Хотя первый метод, указанный в этой ссылке, был для меня бесполезен, второй отлично работает для XFCE4:$ pactl set-sink-mute 0 toggle . Вы также можете создать скрипт или панель запуска для выполнения команды одним щелчком мыши.

К вашему сведению, если вы используете что-то вроде Cinnamon (и, возможно, других рабочих столов на основе gnome), приведенное выше предложение пользователя 197761 выглядит лучше, так как звуковой апплет cinnamon распознает, что громкость отключена: amixer -D pulse set Master Playback Switch toggle(если вам нравится эта последняя команда, пожалуйста, подпишите его ответ, не мой.)

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