Как отключить звук из командной строки?

Вопрос или проблема

Как отключить звук из командной строки?

Предполагая, что вы используете драйвер ALSA, выполните:

amixer set Master mute   
amixer set Master unmute

Или вы можете просто использовать:

amixer set Master toggle

чтобы переключать отключение звука.

Это сработало для меня, когда другие не сработали:

amixer -q -D pulse sset Master toggle

Это из комментария nutty about natty к первому ответу:

Я использую pactl в своих скриптах. Из страницы руководства:

set-sink-mute SINK 1|0|toggle: Установить статус отключения звука для указанного выхода (определяется по его символическому имени или числовому индексу)

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

pactl set-sink-mute @DEFAULT_SINK@ true

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

pactl set-sink-mute @DEFAULT_SINK@ false

Чтобы переключить:

pactl set-sink-mute @DEFAULT_SINK@ toggle

Используйте 0 вместо @DEFAULT_SINK@, чтобы установить выход с числовым индексом 0. true==”1″, false==”0″.

Тестировалось на Ubuntu 12.10.
В моей настройке иногда amixer unmute не срабатывает по какой-то причине.

В терминале введите это, чтобы отключить звук

amixer set Master mute

введите

amixer set Master unmute

Тестировалось на моем Ubuntu 10.10.

Если вы используете alsa, следуйте ответу goric.

PulseAudio лучше, но не так просто: pactl set-sink-mute 0 1 сработает для первого устройства, но не если вы используете наушники другого выхода.

Лучший способ – проверить с помощью pactl info и получить Default Sink для использования.

DEFAULT_SINK=$(pactl info | grep "Default Sink" | cut -d " " -f3)

Затем, чтобы отключить звук:

pactl set-sink-mute "$DEFAULT_SINK" "1"

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

pactl set-sink-mute "$DEFAULT_SINK" "0"

Я написал скрипт для управления pulseaudio в своих заметках. Если хотите использовать, сохраните его как volume, предоставьте разрешение на выполнение chmod +x volume и добавьте его в ваш путь ln -sv $PWD/volume /usr/local/bin/. Вот мой скрипт:

#!/bin/bash
# имя скрипта: volume
# Автор: glaudistong at gmail.com
# зависит от: yad, coreutils, pulseaudio

ps -ef | grep "yad" | grep -E "Volume [^+\-]" | tr -s " " | cut -d " " -f2 | xargs -i kill "{}" 2>/dev/null
DEFAULT_SINK=$(pactl info | grep "Default Sink" | cut -d " " -f3)
DEFAULT_SOURCE=$(pactl info | grep "Default Source" | cut -d " " -f3)
case "$1" in 
    init)
    {
        ps -fe | grep yad | grep -q volume ||
        {
         yad --notification --command "volume up" --text "+ Volume +" --image ~/Pictures/volume-up-dark.png &
         yad --notification --command "volume down" --text "- Volume -" --image ~/Pictures/volume-down-dark.png &
        }
    };;
    up)
    {
        pactl set-sink-volume "$DEFAULT_SINK" +5%
        P=$(pactl list | grep -E "Name: $DEFAULT_SINK$|Volume" | grep "Name:" -A1 | tail -1 | cut -d% -f1 | cut -d/ -f2 | tr -d " ")
        iconl="$(echo -ne "\U1F50A")"
        iconr="$(echo -ne "\U1F56A")"
        timeout .6 yad --progress --percentage "$P" --timeout 1 --no-buttons --undecorated --text="$iconl Volume $P% $iconr" --no-focus --center --skip-taskbar --on-top &
    };;
    down)
    {
        pactl set-sink-volume "$DEFAULT_SINK" -5%
        P=$(pactl list | grep -E "Name: $DEFAULT_SINK$|Volume" | grep "Name:" -A1 | tail -1 | cut -d% -f1 | cut -d/ -f2 | tr -d " ")
        iconl="$(echo -ne "\U1F509")"
        iconr="$(echo -ne "\U1F569")"
        timeout .6 yad --progress --percentage "$P" --timeout 1 --no-buttons --undecorated --text="$iconl Volume $P% $iconr" --no-focus --center --skip-taskbar --on-top &
    };;
    mute)
    {
        ismute=$(pactl list | grep -E "Name: $DEFAULT_SINK$|Mute" | grep "Name:" -A1 | tail -1 |cut -d: -f2| tr -d " ")
        if [ "$ismute" == no ]; then
            s=1
            P=0
            icon="$(echo -ne "\U1F507")"
        else
            P=$(pactl list | grep -E "Name: $DEFAULT_SINK$|Volume" | grep "Name:" -A1 | tail -1 | cut -d% -f1 | cut -d/ -f2 | tr -d " ")
            icon="🔊"
            s=0
        fi
        pactl set-sink-mute "$DEFAULT_SINK" "$s"
        echo $s > /sys/devices/platform/thinkpad_acpi/leds/platform::mute/brightness
        timeout .6 yad --progress --percentage "$P" --timeout 1 --no-buttons --undecorated --text="$icon Volume $P%" --no-focus --center --skip-taskbar --on-top &
    };;
    mic-up)
    {
        pactl set-source-volume "$DEFAULT_SOURCE" +5%
        P=$(pactl list | grep -E "Name: $DEFAULT_SOURCE$|Volume" | grep "Name:" -A1 | tail -1 | cut -d% -f1 | cut -d/ -f2 | tr -d " ")
        icon="$(echo -en "\U1F3A4")"
        timeout .6 yad --progress --percentage "$P" --timeout 1 --no-buttons --undecorated --text="$icon Volume Mic $P%" --no-focus --center --skip-taskbar --on-top &
    };;
    mic-down)
    {
        pactl set-source-volume "$DEFAULT_SOURCE" -5%
        icon="$(echo -en "\U1F3A4")"
        P=$(pactl list | grep -E "Name: $DEFAULT_SOURCE$|Volume" | grep "Name:" -A1 | tail -1 | cut -d% -f1 | cut -d/ -f2 | tr -d " ")
        timeout .6 yad --progress --percentage "$P" --timeout 1 --no-buttons --undecorated --text="$icon Volume Mic $P%" --no-focus --center --skip-taskbar --on-top &
    };;
    mic-mute)
    {
        ismute=$(pactl list | grep -E "Name: $DEFAULT_SOURCE$|Mute" | grep "Name:" -A1 | tail -1 |cut -d: -f2| tr -d " ")
        if [ "$ismute" == no ]; then
            s=1
            P=0
            icon="$(echo -en "\U1F507\U1F3A4")"
        else
            P=$(pactl list | grep -E "Name: $DEFAULT_SOURCE$|Volume" | grep "Name:" -A1 | tail -1 | cut -d% -f1 | cut -d/ -f2 | tr -d " ")
            s=0
            icon="$(echo -en "\U1F3A4")"
        fi
        pactl set-source-mute "$DEFAULT_SOURCE" "$s"
        echo $s > /sys/devices/platform/thinkpad_acpi/leds/platform::micmute/brightness
        timeout .6 yad --progress --percentage "$P" --timeout 1 --no-buttons --undecorated --text="$icon Volume Mic $P%" --no-focus --center --skip-taskbar --on-top &
    };;
    *)
        echo неверный параметр;;
esac;

если вы используете pulseaudio в качестве звукового сервера, то сделайте так

pactl -- set-sink-mute @DEFAULT_SINK@ toggle # Также true/false для отключения/включения звука

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

если используете alsa, то используйте это

amixer sset 'Master' toggle

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

xset b off

просто сработало как часы для меня.

Команда xset b off используется для отключения слышимого “пика” звука при работе в системе X Window (например, GNOME, KDE).

Вот разбивка:

  • xset – это утилита для настройки различных пользовательских предпочтений.
  • b обозначает “колокол”, который контролирует звук системного звонка.
  • off указывает xset отключить звуковой сигнал.

Когда вы запускаете xset b off, системный звонок больше не будет издавать звук в ответ на определенные действия (например, нажатие клавиши backspace в пустом текстовом поле).

Ответ или решение

Для управления звуком через командную строку в Linux, необходимо учитывать использование различных звуковых систем, таких как ALSA (Advanced Linux Sound Architecture) и PulseAudio. Рассмотрим, как можно заблокировать (отключить) звук, используя указанные системы.

Управление звуком с помощью ALSA

Если ваша система использует драйвер ALSA, можно воспользоваться утилитой amixer для управления громкостью и состоянием звука. Вот основные команды:

  1. Чтобы заглушить звук:

    amixer set Master mute
  2. Чтобы включить звук:

    amixer set Master unmute
  3. Чтобы переключать состояние звука (подавить/включить):

    amixer set Master toggle

Эти команды работают в большинстве дистрибутивов Linux, включая Ubuntu, и обеспечивают простой способ управления звуком.

Управление звуком с помощью PulseAudio

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

  1. Чтобы заглушить звук на стандартном выходе:

    pactl set-sink-mute @DEFAULT_SINK@ true
  2. Чтобы включить звук:

    pactl set-sink-mute @DEFAULT_SINK@ false
  3. Чтобы переключать состояние звука:

    pactl set-sink-mute @DEFAULT_SINK@ toggle

Получение информации о выходах

Если вы хотите узнать, какой выход является вашим стандартным, воспользуйтесь следующей командой:

DEFAULT_SINK=$(pactl info | grep "Default Sink" | cut -d " " -f3)

После чего вы сможете использовать переменную $DEFAULT_SINK в командах для управления звуком.

Примечания

  • Управление системным звуком: Использование команды xset b off позволяет отключить звуковой сигнал при нажатии клавиш. Эта команда полезна, если вы хотите отключить громкий сигнал при ошибках ввода.

    xset b off
  • Создание скриптов: Если вам нужно часто управлять уровнем громкости или состоянием звука, вы можете создать Bash-скрипт, который будет включать функции, описанные выше. Это повысит удобство и автоматизацию процессов управления звуком.

Заключение

Управление звуком из командной строки в Linux не только возможно, но и относительно легко для выполнения. Используя amixer для ALSA и pactl для PulseAudio, вы можете быстро включать и выключать звук, а также адаптировать свою систему под собственные предпочтения. Это особенно полезно для администраторов системы и профессионалов в области IT, которые часто работают в средах без графического интерфейса.

Оцените материал
Добавить комментарий

Капча загружается...