2

我正在尝试将音量添加到当前设置的音量,在这种情况下,我们会说它是 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'>),即使此问题已解决,感谢您的回复。

4

2 回答 2

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)
于 2018-04-18T03:02:44.217 回答
0

根据文档Mixer.getvolume返回一个整数百分比列表,每个通道都有一个元素。的文档Mixer.setvolume不太清楚,但似乎暗示第一个参数是整数。

如果我的解释是正确的,并且您只有一个通道,则可以使用列表索引将列表的第一个元素作为整数获取。其他步骤如您在问题中所示。您可能希望确保增加的结果小于或等于 100。该min函数提供了一个标准的习惯用法来做到这一点:

import alsaaudio

am = alsaaudio.Mixer()
current_volume = am.getvolume()
new_volume = min(current_volume[0] + 5, 100)
am.setvolume(new_volume)

我已将问题 #58提交给 pyalsaaudio 以澄清文档。

于 2018-04-18T03:11:24.213 回答