edA*_*a-y 10
标准QSound和Phonon库在播放声音方面都存在重大问题.它们都需要主消息循环,这意味着主线程中的轻微阻塞或播放声音的延迟.最终他们都使用后台线程,但滞后很容易被注意到.更不用说Phonon在许多平台上都有可疑的支持.
我已经和他们合作了一段时间,并尝试构建一个简单的声音系统来播放用户界面声音(只是偶尔发出哔哔声和流行音乐).使用标准Qt库是不可能的.
我建议使用OpenAL,我最终做了.它是一个相对简单的库,似乎有很好的跨平台支持.另一个选项是SDL_mixer,但OpenAL似乎更容易在Windows上安装(尽管可能不是很多).所以基本上如果QSound::play没有做你想要的,那么标准的Qt API将不适合你.
另一个重要的注意事项,不要试图使用单独的线程来修复Qt声音api.它不会起作用.Phonon至少需要在主线程中实例化并调用.