¿Cómo usar la línea de comando para cambiar el volumen?

72

Estoy tratando de controlar el volumen usando mi script de programación. ¿Cómo puedo hacer lo siguiente en Fedora 15, Ubuntu Linux?

  1. Mute / Unmute
  2. Subir volumen y bajar volumen

Nota: Tenga en cuenta que uso un micrófono / altavoz USB web y también un micrófono / altavoz analógico. Quiero aplicar a todos para estar seguro.

Yum Yum Yum
fuente
1
Si alguien viene aquí desde Lubuntu para fijar sus botones de control de volumen, poner <command>amixer -D pulse sset Master 3%+ unmute</command>en el keybind relevante de ~/.config/openbox/lubuntu-rc.xmly ejecutando openbox --reconfigurefijado para mí
rhombidodecahedron

Respuestas:

80

Puedes usar amixer . Está en el alsa-utilspaquete en Ubuntu y Debian.

Ejecute amixersin parámetros para obtener una descripción general de sus controles para el dispositivo predeterminado.

También puede usar alsamixersin parámetros (del mismo paquete) para obtener una visión más visual. Use F6 para ver y cambiar entre dispositivos. Por lo general, es posible que tenga PulseAudio y una tarjeta de sonido de hardware para seleccionar.

Luego use amixercon el setcomando para configurar el volumen. Por ejemplo, para configurar el canal maestro al 50%:

amixer set Master 50%

Master es el nombre del control y debe coincidir con el que ve cuando se ejecuta sin parámetros.

Tenga en cuenta el %signo, sin él tratará el valor como 0 - 65536 nivel.

Si PulseAudio no es su dispositivo predeterminado, puede usar el -Dinterruptor:

amixer -D pulse set Master 50%

Otros comandos útiles señalados en los comentarios:

Para aumentar / disminuir el volumen, use +/-después del número, use

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

Para silenciar, activar o desactivar el estado silenciado / sin silenciar, use

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

También tenga en cuenta que puede haber dos escalas de porcentaje diferentes, la sin formato predeterminada y para algunos dispositivos una escala más natural basada en decibelios , que también es utilizada por alsamixer. Use -Mpara usar el último.

Finalmente, si solo está interesado en PulseAudio, puede consultarlo pactl(consulte una de las otras respuestas).

Dario Seidl
fuente
44
¡Gracias! hay dos maneras de hacer esto 1. Como su excelente ejemplo: amixer establece Master mute; el amixer activa el modo de silencio del maestro; 2. yum -y instalar xdotool; xdotool key XF86AudioRaiseVolume; xdotool key XF86AudioLowerVolume;
YumYumYum
15
Y además, puede aumentar o disminuir el volumen por amixer set Master 10%+yamixer set Master 10%-
usuario
2
Esto no funciona en Ubuntu.
Cerin
2
No estoy de acuerdo @Cerin. Esto funciona en Ubuntu LTS 12 en este momento. Tenga Men cuenta que in master distingue entre mayúsculas y minúsculas (debe estar en mayúsculas).
cenizas999
55
Cerin tiene razón. Esto no funciona. Lo que funciona es:amixer -D pulse sset Master 50%
Shivams
30

Silenciar:

amixer -D pulse sset Master mute

Para activar el silencio:

amixer -D pulse sset Master unmute

Para subir el volumen un 5%:

amixer -D pulse sset Master 5%+

Para bajar el volumen un 5%:

amixer -D pulse sset Master 5%-

Eric Terry
fuente
1
También puede agregar activar silencio a los últimos comandos para activar automáticamente el silencio cuando cambie el volumen (por conveniencia):amixer -D pulse sset Master unmute 5%+
Roman Golyshev
16

pactl / pacmd (a diferencia amixer) permite aumentar el volumen por encima del 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)

Es posible realizar ajustes manuales superiores al 100% pavucontrol(a diferencia de alsamixer).

NOTA: Si desea compartir los mismos comandos en diferentes hosts con diferentes sumideros, puede usarlos @DEFAULT_SINK@como sumidero en lugar de número 0:

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

Configura su sumidero predeterminado con pactl set-default-sink my-sink-name(enumere los nombres con pactl list short sinks).

ACTUALIZACIÓN: agregado toggle mute(gracias a Don Joe).

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

pevik
fuente
5

Mayor volumen:

amixer set Master 3%+

Volumen inferior:

amixer set Master 3%-

Alternar silencio:

amixer set Master toggle

Ejemplo de combinaciones de teclas para i3/ sway, los comandos están después 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%-
Alejandro
fuente
4

Si el usuario ha silenciado el dispositivo, debe 'activarlo'. de lo contrario, establecer el porcentaje funcionará pero el sonido aún está apagado

amixer set 'Master' 100% unmute
/usr/bin/amixer set 'PCM' 100% unmute
Huésped
fuente
3

La respuesta de pevik es casi correcta para PulseAudio, con dos cosas que mencionar:

  • el comando de cambio de volumen negativo generará un error porque la parte de algo negativo se interpretará como una opción separada (no reconocida); debe desactivar el análisis de opciones con un doble menos en algún lugar antes del número negativo, por ejemplo, "- -5%"

  • El verdadero estado de silencio es algo que debería ser posible alternar con la misma tecla, lo que no funcionará si solo está configurando el volumen a un valor fijo de 0, por lo que el comando correcto para eso sería:

pactl set-sink-mute @DEFAULT_SINK@ toggle

LE: Si la primera pista es aplicable puede depender de la versión de PulseAudio que esté ejecutando o de otra cosa en la distribución. Noto que en Ubuntu 16 funciona sin "-" y falla si agrego "-" frente al porcentaje negativo.

Don joe
fuente
muy bueno, eso lo hace perfecto cuando cambiamos mucho los administradores de ventanas sobre la marcha para obtener mejores fps de juego, así que lo uso xbindkeys-configy ni siquiera tengo que reiniciar X :) (jajaja, la sonrisa ... sin juego de palabras jajaja)
Acuario Poder
2

amixer funcionó para mí, pero no obtuve la buena animación que obtengo cuando presiono el botón para subir el volumen de mi teclado.

Decidí usar xtepara presionar directamente esa tecla desde la línea de comando:

Sube el volumen: xte 'key 0x1008ff13'

Bajar volumen: xte 'key 0x1008ff11'

Mudo: xte 'key 0x1008ff12'

Descubrí el keyym (ese número hexadecimal) usando xev.

sudo apt-get install xbindkeys xautomation
xev

y luego presione el botón de subir volumen en su teclado para obtener el teclado. El símbolo clave puede variar de un sistema a otro, por lo que encontrarlo en xev será la forma más confiable.

El resultado se ve así para mí:

Evento KeyRelease, serie 37, NO sintético, ventana 0x2c00001, raíz 0xef, subw 0x0, hora 6660080, (566,573), raíz: (664,651), estado 0x0, código clave 123 (keyym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES, XLookupString da 0 bytes : XFilterEvent devuelve: False

Sami Start
fuente