我试图将音量添加到当前设定的音量,在这种情况下,我们会说它是80%。在Python中使用alsaaudio模块,有一个名为getvolume
#declare alsaaudio
am = alsaaudio.Mixer()
#get current volume
current_volume = am.getvolume()
在我的案例中, getvolume
或current_volume
会转储[80L]
这样的列表,达到80%的量。我正在尝试将音量添加到当前的音量,
#adds 5 on to the current_volume
increase = current_volume + 5
am.setvolume(increase)
但我的问题是,因为它是一个列表我无法删除或替换字符,因为我相对较新的Python,不知道如何剥离列表中的字符然后将5添加到该整数转换后。
我在这里创建了一个可运行的示例:
import alsaaudio
am = alsaaudio.Mixer()
current_volume = am.getvolume()
print(repr(current_volume), type(current_volume), type(current_volume[0]))
它打印:
('[45L]', <type 'list'>, <type 'long'>)
,即使此问题已解决,感谢您的回复。
答案 0 :(得分:1)
Mixer.getvolume([方向])
返回包含每个频道的当前音量设置的列表。列表元素是整数百分比。
https://www.programcreek.com/python/example/91452/alsaaudio.Mixer
mixer = alsaaudio.Mixer()
value = mixer.getvolume()[0]
value = value + 5
if value > 100:
value = 100
mixer.setvolume(value)
答案 1 :(得分:0)
根据docs,Mixer.getvolume
返回整数百分比列表,每个频道有一个元素。 Mixer.setvolume
的文档不太清楚,但是暗示第一个参数是整数。
如果我的解释是正确的,并且您只有一个频道,则可以使用list indexing将列表的第一个元素作为整数。其他步骤正如您在问题中所示。您可能希望确保递增的结果小于或等于100. min
函数提供了一个标准的习惯用法:
import alsaaudio
am = alsaaudio.Mixer()
current_volume = am.getvolume()
new_volume = min(current_volume[0] + 5, 100)
am.setvolume(new_volume)
我已将issue #58提交给pyalsaaudio,以便稍微澄清文档。