Definir volume do terminal

83

É possível definir o volume do áudio usando o terminal em vez de clicar no ícone do alto-falante na barra superior?

O motivo pelo qual desejo fazer isso é que meu teclado não possui botões de aumento / diminuição de volume e acho irritante procurar o mouse.

Tristian
fonte
11
Ler nível de volume principal em porcentagem de número 0% -100%: amixer sget Master | grep 'Right:' | awk -F'[][]' '{ print $2 }' aumentar o nível de volume principal em 10%:amixer -q sset Master 10%+
Eric Leschinski 21/01

Respostas:

97

Para uso interativo, você pode usar alsamixer. Para scripts (por exemplo, vinculação a combinações de teclas), dê uma olhada amixer.

alsamixer está incluído por padrão na maioria dos sistemas.


Para definir o volume principal, use:

# Gets a list of simple mixer controls
$ amixer scontrols 

Em seguida, defina-o no volume desejado, como um exemplo

$ amixer sset 'Master' 50%
Renan
fonte
11
Qual é a diferença entre "sset" e apenas "set". (Eu tentei tanto, e tanto trabalho)
Venryx
@Venryx man amixersugere que eles sejam equivalentes e que "s" em "sset" seja "simples". Há também um "cset" que define o conteúdo do controle do cartão.
Matthias Braun
42

Encontrado no arquivo de configuração do Openbox rc.xml:

# increase by 3%
amixer -q sset Master 3%+

# decrease by 3%
amixer -q sset Master 3%-

# mute/unmute
amixer -q sset Master toggle

amixer A página de manual pode fornecer mais detalhes.

enzotib
fonte
21

Se o seu sistema estiver usando, pulseaudiovocê pode usar pactl:

pactl set-sink-volume 0 +15%

ou

pactl set-sink-volume 0 -5dB

embora você também possa especificar um número inteiro ou um fator linear:

set-sink-volume SINK VOLUME [VOLUME ...]
          Set the volume of the specified sink (identified by its symbolic name or numerical index). VOLUME can be speci‐
          fied as an integer (e.g. 2000, 16384), a linear factor (e.g. 0.4, 1.100), a percentage (e.g. 10%, 100%) or a
          decibel value (e.g. 0dB, 20dB). If the volume specification start with a + or - the volume  adjustment  will  be
          relative to the current sink volume. A single volume value affects all channels; if multiple volume values are
          given their number has to match the sink's number of channels.
don_crissti
fonte
2
Nota do wiki do arch linux : os pactlcomandos que recebem argumentos de porcentagem negativos falharão com um erro de 'opção inválida'. Use o --pseudo-argumento padrão do shell para desativar a análise de argumentos antes do argumento negativo. por exemplopactl set-sink-volume 1 -- -5%
Jamie Cockburn
2
@ JamieCockburn - Não tenho certeza de quando foi escrito, mas uso o archlinux e não há absolutamente nenhuma necessidade de --valores negativos adicionais (porcentagem, db, números inteiros ... todos funcionam bem). De fato, é exatamente o oposto : se eu usar de --acordo com o wiki, por exemplo pactl set-sink-volume 1 -- -3% , recebo Invalid volume specification.
don_crissti
Deve ser dependente do shell então? Estou no ubuntu 14.04, com o Xfce, e executando o comando a partir do bash (4.3.11). Se eu omitir --, recebo uma opção inválida.
Jamie Cockburn
11
@ JamieCockburn - Eu não acho que o shell seja relevante (para o registro, funciona bem para mim com ambos bashe zsh). Provavelmente, versões anteriores pactltiveram esse problema e a montante provavelmente o corrigiu (estou usando a versão 6.0).
don_crissti
11
@JamieCockburn estou executando o ubuntu 16.04 xfce bash e funciona perfeitamente sem "-", apenas uma observação.
Reishin
9

Eu sei que isso é antigo. Como o Alsa e o pulseaudio são tão conectados, esta resposta do askubuntu me ajudou a gerenciar o volume do som principal e do HDMI:

aumentar volume

amixer -q -D pulse sset Master 10%+

diminuir volume

amixer -q -D pulse sset Master 10%-

alternar mudo

amixer -q -D pulse sset Master toggle

Outros comandos amixer sset também funcionam.

Mathter
fonte
7

Estes são "mais naturais para o ouvido humano".

Para obter o mestre nas unidades alsamixer, use:

amixer -M get Master

Para aumentar o volume em 5% nas unidades alsamixer, por exemplo:

amixer -M set Master 5%+

https://bbs.archlinux.org/viewtopic.php?id=135348

Robson
fonte
6

No OS X, use o seguinte:

# highest
osascript -e "set Volume 7"
# lowest
osascript -e "set Volume 1"
# middle
osascript -e "set Volume 3.5"  

Você pode até definir o volume para outros níveis fracionários:

# 25%
osascript -e "set Volume 1.75"
1 ''
fonte
@ Cartão virtual, os botões de volume do Mac são apenas em incrementos de 0,25
1 ''
4

você também pode tentar pamixer, um projeto recente que faz exatamente o que você deseja. Está no repositório do ArchLinux AUR com o mesmo nome.

fradeve
fonte
é ainda no repositório da comunidade agora
Michal Polovka