Como usar a linha de comando para alterar o volume?

72

Estou tentando controlar o volume usando meu script de programação. Como posso fazer o seguinte no Fedora 15, Ubuntu linux?

  1. Sem som / Sem som
  2. Aumentar e diminuir volume

Nota: Observe que eu uso um microfone / alto-falante USB da Web e também um microfone / alto-falante analógico. Quero me candidatar a todos para ter certeza.

YumYumYum
fonte
11
Se alguém está vindo aqui de Lubuntu para corrigir os seus controle de volume botões, colocando <command>amixer -D pulse sset Master 3%+ unmute</command>no keybind relevante ~/.config/openbox/lubuntu-rc.xmle em seguida, executando openbox --reconfigurefixa-lo para mim
rhombidodecahedron

Respostas:

80

Você pode usar o amixer . Está no alsa-utilspacote do Ubuntu e Debian.

Execute amixersem parâmetros para obter uma visão geral sobre seus controles para o dispositivo padrão.

Você também pode usar alsamixersem parâmetros (do mesmo pacote) para obter uma visão geral mais visual. Use F6 para ver e alternar entre dispositivos. Geralmente, você pode ter o PulseAudio e uma placa de som de hardware para selecionar.

Em seguida, use amixercom o setcomando para definir o volume. Por exemplo, para definir o canal principal como 50%:

amixer set Master 50%

Master é o nome do controle e deve corresponder ao que você vê ao executar sem parâmetros.

Observe o %sinal, sem ele tratará o valor como nível 0 - 65536.

Se o PulseAudio não for o seu dispositivo padrão, você poderá usar o -Dcomutador:

amixer -D pulse set Master 50%

Outros comandos úteis apontados nos comentários:

Para aumentar / diminuir o volume usado +/-após o número, use

amixer set Master 10%+
amixer set Master 10%-

Para silenciar, ativar ou desativar o estado mudo / não mudo, use

amixer set Master mute
amixer set Master unmute
amixer set Master toggle

Observe também que pode haver duas escalas percentuais diferentes, o padrão bruto e, para alguns dispositivos, uma escala mais natural baseada em decibéis , que também é usada por alsamixer. Use -Mpara usar o último.

Por fim, se você estiver interessado apenas no PulseAudio, poderá conferir pactl(consulte uma das outras respostas).

Dario Seidl
fonte
4
Obrigado! existem duas maneiras de fazer isso 1. Como seu excelente exemplo: amixer set Master mute; conjunto de misturadores Mestre sem som; 2. yum -y instala o xdotool; chave xdotool XF86AudioRaiseVolume; chave xdotool XF86AudioLowerVolume;
YumYumYum
15
E como um complemento, você pode aumentar ou diminuir o volume, amixer set Master 10%+eamixer set Master 10%-
usuário
2
Isso não funciona no Ubuntu.
Cerin 24/05
2
Discordo de @Cerin. Isso funciona no Ubuntu LTS 12 no momento. Observe que o Mmestre interno faz distinção entre maiúsculas e minúsculas (deve estar em maiúsculas).
precisa saber é o seguinte
5
Cerin está certo. Isso não funciona. O que funciona é:amixer -D pulse sset Master 50%
shivams
30

Para silenciar:

amixer -D pulse sset Master mute

Para ativar o som:

amixer -D pulse sset Master unmute

Para aumentar o volume em 5%:

amixer -D pulse sset Master 5%+

Para diminuir o volume em 5%:

amixer -D pulse sset Master 5%-

Eric Terry
fonte
11
Você também pode adicionar ativar o som a comandos posteriores para ativar o som automaticamente ao alterar o volume (por conveniência):amixer -D pulse sset Master unmute 5%+
Roman Golyshev
16

pactl / pacmd (diferente amixer) permite aumentar o volume acima de 100% :-).

pactl set-sink-mute 0 toggle  # toggle mute
pactl set-sink-volume 0 0     # mute (force)
pactl set-sink-volume 0 100%  # max
pactl set-sink-volume 0 +5%   # +5% (up)
pactl set-sink-volume 0 -5%   # -5% (down)

Configurações manuais acima de 100% são possíveis em pavucontrol(ao contrário alsamixer).

NOTA: Se você deseja compartilhar os mesmos comandos em hosts diferentes com coletores diferentes, use-o @DEFAULT_SINK@como coletor em vez do número 0:

pactl set-sink-volume @DEFAULT_SINK@ +5%

Você define seu coletor padrão com pactl set-default-sink my-sink-name(lista nomes com pactl list short sinks).

UPDATE: adicionado toggle mute(graças a Don Joe).

Fonte: askubuntu.com , wiki.archlinux.org .

pevik
fonte
5

Maior volume:

amixer set Master 3%+

Volume mais baixo:

amixer set Master 3%-

Alternar sem som:

amixer set Master toggle

Exemplos de combinações de teclas para i3/ sway, os comandos são depois exec:

bindsym XF86AudioRaiseVolume exec amixer set Master 3%+
bindsym XF86AudioLowerVolume exec amixer set Master 3%-
bindsym XF86AudioMute exec amixer set Master toggle
bindsym Ctrl+$alt+Up  exec amixer set Master 3%+
bindsym Ctrl+$alt+Down exec amixer set Master 3%-
Alexander
fonte
4

se o usuário tiver silenciado o dispositivo, você deverá "desativá-lo". caso contrário, definir a porcentagem funcionará, mas o som ainda está desligado

amixer set 'Master' 100% unmute
/usr/bin/amixer set 'PCM' 100% unmute
Convidado
fonte
3

A resposta da pevik está quase correta no PulseAudio, com duas coisas a serem mencionadas:

  • o comando de alteração de volume negativo gerará um erro porque a parte menos algo dele será interpretada como uma opção separada (não reconhecida); você precisa desativar a opção de análise com um duplo menos em algum lugar antes do número negativo, por exemplo, "- -5%"

  • o verdadeiro estado mudo é algo que deve ser possível alternar com a mesma chave, o que não funcionará se você estiver apenas configurando o volume para um valor fixo de 0; portanto, o comando certo para isso seria:

pactl set-sink-mute @DEFAULT_SINK@ toggle

LE: Se a primeira dica é aplicável, pode depender da versão do PulseAudio que você está executando ou de outra coisa na distribuição - notei que no Ubuntu 16 ele funciona sem o "-" e falha se eu adicionar "-" em frente à porcentagem negativa.

Don Joe
fonte
thx muito bom, que o torna perfeito quando mudamos muito os gerenciadores de janelas em tempo real para obter melhores fps de jogos, então eu uso xbindkeys-confige nem preciso reiniciar o X :) (riso o sorriso ... sem trocadilhos)
Aquarius Potência
2

O amixer funcionou para mim, mas não recebi a boa animação que recebo quando pressiono o botão de aumento de volume no teclado.

Eu decidi usar xtepara pressionar diretamente essa tecla na linha de comando:

Aumentar o volume: xte 'key 0x1008ff13'

Volume baixo: xte 'key 0x1008ff11'

Mudo: xte 'key 0x1008ff12'

Eu descobri o teclado (esse número hexadecimal) usando xev.

sudo apt-get install xbindkeys xautomation
xev

e, em seguida, pressione o botão de aumento de volume no teclado para obter o teclado. O sym principal pode variar de sistema para sistema, portanto, encontrá-lo no xev será a maneira mais confiável.

O resultado é assim para mim:

Evento KeyRelease, serial 37, NO sintético, janela 0x2c00001, raiz 0xef, subw 0x0, tempo 6660080, (566,573), raiz: (664,651), estado 0x0, código de chave 123 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES, XLookupString fornece 0 bytes : XFilterEvent retorna: False

Sami Start
fonte