我有一个Python项目,该项目使用PySide2与基于Qt的UI以及QSoundEffect一起播放声音。我发现,我可以同时创建和播放两种声音,但是当我改变一种声音的音量时,它会改变所有声音的整体音量。
它被视为错误,请参见此处的示例:
https://forum.qt.io/topic/46996/qsoundeffect-setvolume-setting-whole-app-volume/10。
因此,我决定使用QSoundEffect发出一种声音,并借助python模块ctypes发出另一种声音,直接调用Windows DLL,如下所示:
from ctypes import c_buffer, windll
...
windll.winmm.mciSendStringA(....)
这也可行,并且两种声音一起播放,但是令我惊讶的是QSoundEffect.setVolume()仍然控制着两种声音的音量。
基本上,我可以用不同的方式混合声音,但不能单独控制它们的音量。
因此,这不是Qt错误,而是其他问题。
另一方面,如果您在MSDN论坛上提问,人们会告诉您低级Win API没有分离声音和混合的概念,您需要手动进行,而我绝对可以在这里混合声音。
我-不是-问如何在python中正确播放声音,并且-不是-寻找解决方案或第三方库,我知道很多。
我想了解为什么会这样发生,以及在这种情况下我要处理的是哪种Win sound子系统(缺少更好的术语),也许对此事足够精通的人可以为我提供一些帮助。
最佳答案
我很久以前就遇到了这个问题,确实,这是一个错误。我认为这符合您的描述:
https://bugreports.qt.io/browse/QTBUG-43765
我没有找到其他解决方案,但在我正在从事的游戏项目中使用了第三方声音库,但我不会为您烦恼:-)
好吧,如果那很重要的话,我没有使用python,QT和C++。
关于python - 问题理解混音如何在Win10下的python + QSoundEffect + winmm中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56536438/