control volume usando script python

5

Eu posso controlar o volume usando este comando através do terminal amixer -D pulse sset Master 0% . Minha pergunta é como fazer a mesma coisa usando o script python.

    
por tarun14110 25.10.2015 / 00:36

2 respostas

7

Você pode usar call do módulo subprocess :

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

Fonte

Claro, você pode usar o código Python normal com ele:

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

Este código fará um loop até que o usuário forneça uma entrada válida - entre 0 e 100, e então definirá o volume para isso.

Isso será executado no Python 3. Altere o input para raw_input para o Python 2.

Para aumentar em 10% quando o script é executado, você pode fazer uma de duas coisas.

Você pode usar o módulo alsaaudio .

Primeiro, instale com

sudo apt-get install python-alsaaudio

e depois importá-lo:

import alsaaudio

podemos obter o volume:

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

também podemos definir o volume:

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

Esse número é um inteiro longo em uma lista. Então, para torná-lo um número utilizável, podemos fazer int(vol[0]) .

Então, aumentar em 10% quando é executado?

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

newVol = vol + 10
m.setvolume(newVol)

Ou podemos ficar com o módulo subprocess e os comandos padrão do Ubuntu:

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

aumentará em 10%.

    
por Tim 25.10.2015 / 00:42
2

Para mim, o código de Tim não funcionou. Eu tive que fazer isso:

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

Pode ser devido ao meu arquivo de configuração .asoundrc estranho / quebrado. Mas, dado que não há documentação de referência real para .asoundrc - apenas alguns exemplos aleatórios - eu não acho que você possa me culpar.

Por favor, não chame programas de linha de comando para fazer isso. Isso é feio e propenso a erros.

    
por Timmmm 17.05.2016 / 16:04