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

标签 c++ qt phonon

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

我试过在单独的线程中制作声音,但是 defect in Phonon 阻止在该线程中创建某些对象。因此有些信号总是卡在主线程中。

简单地快速返回到事件循环不是一种选择,原因如下:

  1. 有些对象的创建速度很慢,无法在线程中加速或轻松完成(例如数据库连接)
  2. 声子使用多个信号,因此即使您快速返回,其他信号/事件仍然会阻止/干扰声子信号

我只是想介绍声音 API 的最基本用例:当用户执行某些操作(例如单击按钮)时播放声音并立即播放该声音。当然,这必须以某种方式在 Phonon 中涵盖?

最佳答案

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

关于c++ - 使用 QT Phonon 立即播放声音(不等待事件循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4388026/

相关文章:

c++ - C++中双变量的逼近

c++ - Qt OpenGL 磅值

qt - Graphviz:使边缘不影响节点的层次结构

c++ - 许多小部件似乎对空格键按下事件都有默认行为。如何在不子类化每个小部件的情况下覆盖它?

ffmpeg - 多媒体框架的差异

c++ - 如果 cout 丢失,循环进入无限循环

c++ - 专用模板类可以继承另一个专用模板类吗?

c++ - Qt 4.6.3 中 QGLWidget 上的 3D 文本

linux - 如何在 Linux 中将 Phonon 与 Qt 集成?

c++ - QDialog 中的 Phonon::VideoWidget 问题