使用 python 脚本控制音量

使用 python 脚本控制音量

我可以通过终端使用此命令控制音量amixer -D pulse sset Master 0%。我的问题是如何使用python脚本做同样的事情。

答案1

您可以callsubprocess模块中使用:

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 中运行。将其更改inputraw_inputPython 2。


要在脚本运行时增加 10%,您可以执行以下两项操作之一。

您可以使用该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%。

我的代词是“他”

答案2

对我来说,Tim 的代码不太管用。我不得不这样做:

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

这可能是由于我的.asoundrc配置文件奇怪/损坏。但鉴于没有实际的参考文档.asoundrc- 只有一些随机示例 - 我认为你不能责怪我。

另外,请不要调用命令行程序来执行此操作。这很丑陋且容易出错。

相关内容