web-dev-qa-db-fra.com

contrôle du volume à l'aide du script python

Je peux contrôler le volume à l'aide de cette commande via le terminal amixer -D Pulse sset Master 0%. Ma question est la suivante: comment puis-je faire la même chose en utilisant python script?.

6
tarun14110

Vous pouvez utiliser call à partir du module subprocess:

from subprocess import call
call(["amixer", "-D", "Pulse", "sset", "Master", "0%"])

Source

Bien sûr, vous pouvez utiliser le code normal python avec:

valid = False

while not valid:
    volume = input('What volume? > ')

    try:
        volume = int(volume)

        if (volume <= 100) and (volume >= 0):
            call(["amixer", "-D", "Pulse", "sset", "Master", str(volume)+"%"])
            valid = True

    except ValueError:
        pass

Ce code sera mis en boucle jusqu'à ce que l'utilisateur fournisse une entrée valide - comprise entre 0 et 100, puis définira le volume sur cette valeur.

Cela fonctionnera dans Python 3. Modifiez le input en raw_input pour Python 2.


Pour augmenter de 10% lorsque le script est exécuté, vous pouvez effectuer l'une des deux opérations suivantes.

Vous pouvez utiliser le module alsaaudio.

Tout d'abord, installer avec

Sudo apt-get install python-alsaaudio

puis importez-le:

import alsaaudio

on peut avoir le volume:

>>> m = alsaaudio.Mixer()
>>> vol = m.getvolume()
>>> vol
[50L]

on peut aussi régler le volume:

>>> m.setvolume(20)
>>> vol = m.getvolume()
>>> vol
[20L]

Ce nombre est un entier long dans une liste. Donc, pour en faire un nombre utilisable, nous pouvons faire int(vol[0]).

Donc, pour augmenter de 10% quand il est exécuté?

import alsaaudio
m = alsaaudio.Mixer()
vol = m.getvolume()
vol = int(vol[0])

newVol = vol + 10
m.setvolume(newVol)

Ou nous pouvons nous en tenir au module subprocess et aux commandes Ubuntu par défaut:

from subprocess import call
call(["amixer", "-D", "Pulse", "sset", "Master", "10%+"])

augmentera de 10%.

9
Tim

Pour moi, le code de Tim n'a pas très bien fonctionné. Je devais faire ceci:

import alsaaudio
m = alsaaudio.Mixer(alsaaudio.mixers[0]) # alsaaudio.mixers = ["PCM"] for me.
m.setvolume(90) # Or whatever

Cela est peut-être dû à mon fichier de configuration .asoundrc étrange/cassé. Mais étant donné qu’il n’existe pas de documentation de référence sur .asoundrc - quelques exemples aléatoires - je ne pense pas que vous puissiez me blâmer.

Veuillez également ne pas appeler les programmes en ligne de commande pour le faire. C'est moche et sujet aux erreurs.

3
Timmmm