web-dev-qa-db-ja.com

pythonスクリプトを使用してボリュームを制御する

端子amixer -D Pulse sset Master 0%を介してこのコマンドを使用して音量を制御できます。 pythonスクリプトを使用して同じことをどのように行うことができるかという私の質問。

6
tarun14110

callモジュールのsubprocessを使用できます。

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

ソース

もちろん、通常のpythonコードを使用できます:

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

このコードは、ユーザーが有効な入力を与えるまでループします-0から100の間で、ボリュームをそれに設定します。

これはPythonで実行されます。3. Pythonのinputraw_inputに変更します2。


スクリプトの実行時に10%増加させるには、次の2つのいずれかを実行できます。

alsaaudioモジュールを使用できます。

まず、でインストール

Sudo apt-get install python-alsaaudio

そしてそれをインポートします:

import alsaaudio

ボリュームを取得できます。

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

ボリュームを設定することもできます:

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

この番号は、リスト内の 長整数 です。したがって、使用可能な数にするために、int(vol[0])を実行できます。

実行時に10%増加するのですか?

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

newVol = vol + 10
m.setvolume(newVol)

または、subprocessモジュールとデフォルトのUbuntuコマンドを使用できます。

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

10%増加します。

10
Tim

私にとって、Timのコードはまったく機能しませんでした。私はこれをしなければなりませんでした:

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

奇妙な/壊れた.asoundrc設定ファイルが原因である可能性があります。しかし、.asoundrcの実際のリファレンスドキュメントがないことを考えると、いくつかのランダムな例にすぎません。私を責めることはできないと思います。

また、コマンドラインプログラムを呼び出さないでください。それは見苦しく、エラーを起こしやすいです。

3
Timmmm