使用QT Phonon立即播放声音(不等待事件循环)

时间:2010-12-08 13:32:39

标签: c++ qt phonon

我正在使用QT的Phonon组件为C ++中的用户交互播放声音。经过大量测试后,我可以确认排队的声音只会在主线程返回主消息循环时才开始播放。对于长处理代码,这会引起声音播放的延迟。我需要找到一种方法来避免这种延迟。

我尝试在单独的线程中执行声音,但Phonon中的defect会阻止在该线程中创建某些对象。因此,一些信号总是卡在主线程中。

由于以下几个原因,简单地快速返回事件循环不是一种选择:

  1. 某些对象创建速度很慢,无法在线程中加速或轻松完成(如数据库连接)
  2. Phonon使用多个信号,因此即使您快速返回,其他信号/事件也会阻止/干扰声子信号
  3. 我只想介绍声音API的最基本用例:当用户执行某些操作时播放声音(例如单击按钮)并立即播放该声音。当然,必须以某种方式在Phonon中进行报道?

1 个答案:

答案 0 :(得分:1)

我没有看过qt 4.7中的声子是否有所改进,但我考虑将它用于类似目的(在qt 4.6中)并拒绝它,因为它无法同时播放/混合两种声音。我甚至没有进行任何运行时测试。我使用了SDL Audio,特别是SDL Mixer它在播放时具有低延迟,你可以同时播放多个声音。