python的alsaaudio.mixer不刷新混音器设置
我想用Python来控制我的ALSA声卡的混音器。同时,我也希望能获取到其他应用程序对声卡的修改情况,因为它们可能会同时进行。
我觉得最简单的方法就是使用声卡的混音器接口来设置和查询混音器的状态。听说用alsaaudio
这个包来做这件事比较简单:
import alsaaudio
mixer=alsaaudio.Mixer()
print mixer.getvolume() # prints e.g. '[100L]'
mixer.setvolume(50)
print mixer.getvolume() # prints '[50L]'
不过,如果混音器的控制在“后台”发生了变化,Mixer
的实例就不会自动更新。想象一下,上面的应用程序在运行,但这时用像alsamixergui
这样的工具把混音器的音量改成了80。
print mixer.getvolume() # prints '[50L]'
mixer2=alsaaudio.Mixer()
print mixer2.getvolume() # prints '[80L]'
print mixer.getvolume() # prints '[50L]'
那么,创建一个新的Mixer()实例是获取新混音器设置的唯一方法吗?还是有更简单的方法可以刷新现有实例的值呢?
1 个回答
1
Mixer.polldescriptors() 的文档上写着:
这个函数会返回一个包含(文件描述符,事件掩码)的元组,你可以用它来通过 select.poll 等待混音器的变化。