python - 问题理解混音如何在Win10下的python + QSoundEffect + winmm中工作

标签 python windows qt audio mixing

我有一个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/

相关文章:

python - python中拓扑排序的看似简单的实现

python - 通过Windows Task Scheduler 调用python 脚本时,如何正确导入用户定义的模块(包)?

windows - 批处理脚本 - 一个接一个地运行exe程序

qt - QFileSystemModel 排序 DirsFirst

c++ - 是否可以在不调用 QApplication::exec() 的情况下创建本地事件循环?

python - 如何在 python 中使用 opencv 按下按键时准确地从相机流中捕获帧?

python - elasticsearch-curator安装错误 “cx_Freeze.freezer.ConfigError: cannot find file/directory named vcruntime140.dll”

windows - 如何从应用程序中捕获发送到扬声器的音频数据?

c++ - 修改XML文件QXMLStreamReader/Writer

Python:根据多个值+总和合并n个字典