我正在使用 QT 的 Phonon 组件在 C++ 中为用户交互播放声音。经过大量测试后,我可以确认只有在主线程返回主消息循环时才会开始播放排队的声音。对于长处理代码,这会在声音播放中引入延迟。我需要找到一种方法来避免这种延迟。
我尝试在单独的线程中发出声音,但 Phonon 的缺陷阻止了在该线程中创建某些对象。因此,一些信号总是卡在主线程中。
出于以下几个原因,简单地快速返回事件循环不是一种选择:
- 一些对象的创建速度很慢,不能在线程中加速或轻松完成(如数据库连接)
- 声子使用多个信号,因此即使您快速返回,其他信号/事件仍然会阻塞/干扰声子信号
我只是想介绍声音 API 的最基本用例:当用户执行某项操作(如单击按钮)时播放声音并立即播放该声音。当然,这必须在 Phonon 中以某种方式覆盖?