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?
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
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.
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.
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
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 ~ $
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