我可以通过终端使用此命令控制音量amixer -D pulse sset Master 0%
。我的问题是如何使用python脚本做同样的事情。
答案1
您可以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 中运行。将其更改input
为raw_input
Python 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
- 只有一些随机示例 - 我认为你不能责怪我。
另外,请不要调用命令行程序来执行此操作。这很丑陋且容易出错。