Como usar a linha de comando para alterar o volume?

64

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

  1. Silenciar / Cancelar som
  2. Aumentar o volume e diminuir o volume

Nota: Por favor, note que eu uso um microfone / alto-falante USB da web e também microfone / alto-falante analógico. Eu quero aplicar a todos para ter certeza.

    
por YumYumYum 20.09.2011 / 12:07

7 respostas

74

Você pode usar o amixer . Está no pacote alsa-utils no ubuntu / debian.

Execute-o sem parâmetros para obter uma visão geral dos seus dispositivos.

amixer

Em seguida, use o comando set para definir o volumn. Por exemplo, para definir o canal principal para 50%:

amixer set Master 50%

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

    
por 20.09.2011 / 12:33
27

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%-

    
por 03.11.2015 / 05:28
14

pactl / pacmd (ao contrário de 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 (diferentemente de alsamixer ).

NOTA: Se você quiser compartilhar os mesmos comandos em hosts diferentes com diferentes coletores, use @DEFAULT_SINK@ como um 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 (nomes de lista com pactl list short sinks ).

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

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

    
por 01.09.2016 / 21:05
3

se o usuário tiver desativado o dispositivo, você deverá ativá-lo. caso contrário, a porcentagem funcionará, mas o som ainda estará desativado

amixer set 'Master' 100% unmute
/usr/bin/amixer set 'PCM' 100% unmute
    
por 04.02.2017 / 13:29
3

A resposta do pevik está quase certa para o PulseAudio, com duas coisas a mencionar:

  • 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 análise de opções com um sinal de menos de cinco 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, então o comando certo para isso seria seja:

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 distro - percebo que no Ubuntu 16 ele funciona sem o "-" e falha se eu adicionar "-" na frente da percentagem negativa.

    
por 15.07.2017 / 22:45
3

Maior volume:

amixer set Master 3%+

Volume menor:

amixer set Master 3%-

Mute toggle:

amixer set Master toggle

Exemplo de atalhos de teclado para i3 / sway , os comandos são depois de 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%-
    
por 25.02.2018 / 20:24
2

amixer funcionou para mim, mas eu não recebi a animação que recebo quando pressiono o botão aumentar volume no meu teclado.

Eu decidi usar xte para pressionar diretamente essa chave na linha de comando:

Aumentar o volume: xte 'key 0x1008ff13'

Diminuir o volume: xte 'key 0x1008ff11'

Mudo: xte 'key 0x1008ff12'

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

sudo apt-get install xbindkeys xautomation
xev

e, em seguida, pressione o botão aumentar volume no seu teclado para obter o keysym. O sym chave pode variar de sistema para sistema, então encontrá-lo do xev será a maneira mais confiável.

O resultado é assim para mim:

KeyRelease event, serial 37, synthetic NO, window 0x2c00001, root 0xef, subw 0x0, time 6660080, (566,573), root:(664,651), state 0x0, keycode 123 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False

    
por 26.10.2017 / 15:17