如何将音量添加到pyalsaaudio中的current_volume列表?

时间:2018-04-18 02:48:09

标签: python python-2.7 pyalsaaudio

我试图将音量添加到当前设定的音量,在这种情况下,我们会说它是80%。在Python中使用alsaaudio模块,有一个名为getvolume

的函数
#declare alsaaudio
am = alsaaudio.Mixer()
#get current volume
current_volume = am.getvolume()
在我的案例中,

getvolumecurrent_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'>),即使此问题已解决,感谢您的回复。

2 个答案:

答案 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)

根据docsMixer.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,以便稍微澄清文档。