Проблема понимания того, как микширование звуков работает в python + QSoundEffect + winmm под Win10 - PullRequest
0 голосов
/ 11 июня 2019

У меня есть проект на python, который использует PySide2 для работы с пользовательским интерфейсом на основе Qt, а также QSoundEffect для воспроизведения звуков.Как я выяснил, я могу создавать и воспроизводить два звука одновременно, но когда я изменяю громкость одного, это меняет общую громкость для всех звуков.

Это считается ошибкой, см., Например, здесь: https://forum.qt.io/topic/46996/qsoundeffect-setvolume-setting-whole-app-volume/10.

Итак, я решил создать один звук с помощью QSoundEffect, а другой - с помощью модуля ctypes модуля python, напрямую вызывая Windows DLL, например:

from ctypes import c_buffer, windll
...
windll.winmm.mciSendStringA(....)

, это также работает и двазвуки воспроизводятся вместе, но, к моему удивлению, QSoundEffect.setVolume () по-прежнему контролирует громкость обоих звуков.

В принципе, я могу смешивать звуки по-разному, но не могу управлять их громкостью по отдельности.

Так что это не ошибка Qt, это что-то еще.

С другой стороны, если вы спросите на форумах MSDN, люди скажут вам, что низкоуровневый Win API не имеет концепции отдельных звуков исведение, вам нужно сделать это вручную, хотя я определенно могу микшировать звуки здесь.

Я - НЕ - спрашиваю о том, как правильно воспроизводить звуки в python и - НЕ - looking для решения или сторонней библиотеки, я знаю, что их много.

Я хочу понять, почему так происходит и что за звуковая подсистема Win (из-за отсутствия лучшего термина) яв этом случае, может быть, кто-то достаточно опытный в этом вопросе может пролить свет на это для меня.

1 Ответ

0 голосов
/ 11 июня 2019

Я столкнулся с этой проблемой довольно давно, и это действительно ошибка. Я думаю, что это соответствует вашему описанию:

https://bugreports.qt.io/browse/QTBUG-43765

Я не нашел другого решения, но использовал стороннюю звуковую библиотеку для игрового проекта, над которым я работал, но я не побеспокою вас об этом :-) Ну, я не использовал Python, QT и C ++, если это имеет значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...