web-dev-qa-db-fra.com

Comment changer le volume par programme dans Ubuntu

Comment changez-vous par programme le volume dans Gnome sur Ubuntu, à partir de la ligne de commande ou d'une API (Python de préférence)?

Les seules réponses que j'ai trouvées à des questions similaires utilisent amixer, ce qui semble n'avoir aucun effet sur Ubuntu 12.04. Fonctionnement:

amixer set Headphone 10-

spectacles:

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]

Le x% change chaque fois que je l'exécute. Malheureusement, cela n'a aucun effet sur le volume réel. Finalement, il indique 0%, mais le volume est toujours à plein régime.

L'autre inconvénient est que je dois spécifier le périphérique de sortie actif exact, que je ne sais pas s'il existe plusieurs périphériques. Par exemple, si j'ai un "Master" et un "Headphone", comment puis-je déterminer lequel est le périphérique actif?

25
Cerin

Ubuntu utilise pulseaudio comme sounderver. Il peut être contrôlé à partir de la ligne de commande à l'aide des utilitaires pactl et pacmd, par exemple:

pactl set-sink-volume 0 20%

définirait le volume de l'évier # 0 à 20%.

voir: man pactl et pacmd help


éditer:

éviter -xx étant interprété comme une option de ligne de commande, vous devez le préfixer avec --. Cela arrête l'analyse des options à partir de ce point:

pactl set-sink-volume 0 -- -20%    # or:
pactl -- set-sink-volume 0 -20%    # doesn't matter where the `--` goes
40
mata

Je le fais en utilisant le mélangeur ALSA. Vous devez probablement télécharger python-alsaaudio

Sudo apt-get install python-alsaaudio

Ensuite, pour contrôler le volume,

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

Lisez http://pyalsaaudio.sourceforge.net/libalsaaudio.html pour en savoir plus sur la bibliothèque alsaaudio en détail.

16
Froyo

amixer commande fonctionnait dans Ubuntu 13.04,

Augmentez le volume de 5%
amixer -D Pulse sset Master 5%+

Baisse du volume de 5%
amixer -D Pulse sset Master 5%-

pactl ou pacmd ne fonctionnait pas correctement pour moi dans Ubuntu 13.04.

6
Michael Butler

Extrait sale pour lire le volume (n'oubliez pas que le volume dépasse "100%" sur ubuntu - auquel cas cela renvoie ~ 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
2
user2769792

Je peux recommander cet outil qui contrôle pulseaudio: https://github.com/graysky2/pulseaudio-ctl

me@mypc ~ $ 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
me@mypc ~ $ 
1
Nicolas

Vous pouvez également essayer le simple et élégant ponymix utill. Il est très facile d'augmenter/diminuer le volume, de basculer (couper/réactiver) l'audio, etc.

Obtenez d'abord une liste des sources audio disponibles avec ponymix

Dans mon cas, je peux voir à la fois un puits 0 et un source 0 . Je peux utiliser le numéro 0 ou le nom complet, Audio numérique stéréo intégré (HDMI) , pour contrôler l'audio.

Augmentez le volume de la carte 0 de 5%: ponymix -c 0 increase 5

Diminue le volume de la carte 0 de 5%: ponymix -c 0 decrease 5

1