¿Cómo se puede cambiar mediante programación de volumen de Gnome en Ubuntu, ya sea desde la línea de comandos o una API (Python preferentemente)?

La única respuesta que he encontrado a preguntas similares uso amixer, que parece no tener efecto en Ubuntu 12.04. Ejecución:

amixer set Headphone 10-

muestra:

Simple mixer control 'Headphone',0
  Capabilities: pvolume pswitch penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 115
  Mono:
  Front Left: Playback 0 [57%] [-57.50dB] [on]
  Front Right: Playback 0 [57%] [-57.50dB] [on]

El x% cambia cada vez que lo ejecuto. Por desgracia, no tiene ningún efecto sobre el volumen real. Finalmente dice 0%, pero el volumen es todavía en plena explosión.

El otro inconveniente es que tengo que especificar exactamente activa el dispositivo de salida, que yo no podría saber si hay varios dispositivos. Por ejemplo, si tengo un «Maestro» y «Auriculares», ¿cómo determinar cuál es el dispositivo activo?

  • Sólo una conjetura: ¿amixer set Master 10- funciona? El cambio de volumen maestro afectaría a todos los otros canales. por lo que yo sé.
  • amixer set Master 10- obras.
  • amixer no tiene ningún efecto, independientemente de que el dispositivo que especificar…
InformationsquelleAutor Cerin | 2012-05-24

6 Comentarios

  1. 40

    Ubuntu utiliza pulseaudio como sounderver. Puede ser controlado desde la línea de comandos mediante el pactl y pacmd servicios públicos, por ejemplo:

    pactl set-sink-volume 0 20%

    establecer el volumen de la pileta #0 a 20%.

    ver: man pactl y pacmd help


    edición:

    para evitar -xx ser interpretado como opción de línea de comandos debe prefijo con --. Que deja la opción de análisis a partir de ese punto:

    pactl set-sink-volume 0 -- -20%    # or:
    pactl -- set-sink-volume 0 -20%    # doesn't matter where the `--` goes
    • ¿Cómo se puede establecer con respecto de los cambios de volumen? El manual dice que «Si el volumen de la especificación de inicio con un + o – el ajuste de volumen será relativo a la sumidero de corriente de volumen.» pero haciendo pactl set-sink-volume 0 -10% me da el error de «pactl: no válida la opción — ‘1’»
    • eso es un problema común con la opción de análisis en el shell… actualizado mi respuesta.
    • Gracias por la aclaración.
    • No tiene ningún efecto en Ubuntu 12.
    • Esto funcionó para mí en Ubuntu 13.04 (también publicado como respuesta a continuación, por favor upvote para la visibilidad). amixer -D pulse sset Master 5%+
    • Podemos comprobar el fregadero-el volumen usando el comando. significa cuánto por ciento es.
    • pacmd dump-volumes produce alguna salida, pero no es realmente amable a parse (escribe la bienvenida y mando mensajes a stdout). Alternativamente, amixer -D pulse get Master puede ser una opción…

  2. 16

    Hago usando ALSA mixer. Es probable que necesite descargar python-alsaaudio

    sudo apt-get install python-alsaaudio

    A continuación, el control de volumen,

    import alsaaudio
    m = alsaaudio.Mixer()   # defined alsaaudio.Mixer to change volume
    m.setvolume(50) # set volume
    vol = m.getvolume() # get volume float value

    Leer http://pyalsaaudio.sourceforge.net/libalsaaudio.html saber acerca de alsaaudio de la biblioteca en los detalles.

    • Ubuntu no parecen utilizar Alsa más…
    • Yo sé, pero yo estoy usando ubuntu 12.04 y esto todavía está trabajando. Así que, supongo que se puede utilizar este.
    • Raro. También estoy usando 12.04, en un macbook, y ninguno de los de alsa utilities trabajo para mí. Sin embargo, todos los pulseaudio utils funcionan perfectamente…
    • bien. Yo no estoy en un mac. pero, ¿usted probar esto ?
    • alsa todavía me funciona…pero puede que no en el futuro
    • Pulseaudio nunca hable con el hardware directamente, aún vamos a usar ALSA por un tiempo razonablemente largo. Y, no todo el mundo está usando pulseaudio o se va a usar pulseaudio.
    • Esto todavía no funciona para mí, sin embargo. Ajuste el volumen no hace nada.
    • Si utiliza Pulseaudio, debe especificar explícitamente la tarjeta de IDENTIFICACIÓN (normalmente 0) como se desea usar alsamixer [pasar cardindex=0 a alsaaudio.Mezclador]. Si no vas a conectar automáticamente a pulseaudio a través de un envoltorio de la biblioteca (la emulación de ALSA mezcladores obtendrá de PA no se puede cambiar el volumen del sistema). He usado con éxito para leer y cambiar el volumen mientras que el uso de Pulseaudio: github.com/enkore/i3pystatus/blob/master/i3pystatus/alsa.py#L41

  3. 6

    amixer comando trabajado en Ubuntu 13.04,

    Aumentar el volumen de un 5% de

    amixer -D pulse sset Master 5%+

    Disminuir el volumen de un 5% de

    amixer -D pulse sset Master 5%-

    pactl o pacmd no me funciona correctamente en Ubuntu 13.04.

    • Tanto la propuesta de amixer set Master 10- y sus comandos funcionan para mí, gracias!
  4. 2

    Sucio fragmento de leer volumen (no te olvides de volumen que va más allá de «100%» en ubuntu – momento en el cual devuelve ~0.66).

    #!/usr/bin/python
    import subprocess
    
    vol = int(filter(lambda l: l.startswith('set-sink-volume'),
              subprocess.check_output(["pacmd","dump"])
              .split('\n'))[0]
              .split()[-1],16)/100000.
    
    print vol
  5. 1

    También se podría tratar de la simple y elegante ponymix utill. Esto hace que sea muy fácil para aumentar/disminuir el volumen, cambiar (silenciar/activar), el audio, etc.

    Primer lugar, obtener una lista de las fuentes de audio disponibles con ponymix

    En mi caso, puedo ver un fregadero 0 y un fuente de 0. Puedo usar el número de 0 o el nombre completo, Built-in de Audio Estéreo Digital (HDMI), para controlar el audio.

    Aumentar el volumen de la tarjeta de 0 al 5%: ponymix -c 0 increase 5

    Disminuir el volumen de la tarjeta de 0 al 5%: ponymix -c 0 decrease 5

  6. 1

    Puedo recomendar esta herramienta que controla pulseaudio:
    https://github.com/graysky2/pulseaudio-ctl

    [email protected] ~ $ pulseaudio-ctl
    pulseaudio-ctl v1.63
    
    /usr/bin/pulseaudio-ctl {up,down,mute,mute-input,set,atmost,full-status} [n]
    
    Where up and down adjust volume in ±5 % increments
    Where up and down [n] adjust volume in ±n % increments
    Where mute toggles the mute status on/off
    Where mute-input toggles the input status on/off
    Where set set the volume to [n] %
    Where atmost only takes effect if current volume is higher than [n]
    Where full-status prints volume level, sink and source mute state to stdout
    
    Optionally, redefine an upper threshold in /home/me/.config/pulseaudio-ctl/config
    
    Volume level     : 80 %
    Is sink muted    : no
    Is source muted  : no
    Detected sink    : 1
    Detected source  : 3
    Pulse version    : 8.0
    [email protected] ~ $ 

Dejar respuesta

Please enter your comment!
Please enter your name here