【发布时间】:2012-04-16 09:19:12
【问题描述】:
我的商业嵌入式 C++ Linux 项目需要同时以单独的音量级别播放 wav 文件和音调。声音的几个例子:
• 每次用户按下以用户指定音量播放的屏幕时都会发出“咔哒”声
• 以最大音量播放警告音
• 其他应用程序在应用程序指定的音量级别 (0-100%) 请求的警告音
• 未来以用户指定的音量支持 MP3 播放器和/或视频播放(有声)。播放歌曲/视频时,所有其他声音应继续播放。
我们使用 Qt 作为我们的 UI 框架,它支持 QtMultimedia 和 Phonon。但是,我听说前者在 Linux 上的声音支持参差不齐,而后者是旧版本,可能会在即将发布的 Qt 版本中被弃用。
我做了一些研究,下面是我遇到的一些 API:
KDE Phonon
SFML
PortAudio
SDL_Mixer
@987654325 @
FMOD(虽然我更愿意避免许可费)
ALSA(可能有点太低级了...)
其他注意事项: 跨平台不是必需的,但首选。我们希望尽可能地限制依赖关系。在可预见的未来,不需要像 3D 音频或特殊效果这样的高级功能。我的团队没有太多的音频经验,所以易用性很重要。
这些对我的应用程序来说是否过大?哪个看起来最合适?
更新: 事实证明,由于其他原因,我们已经依赖 SDL,所以我们决定使用 SDL_Mixer。然而,对于其他嵌入式应用程序,我也会花很长时间使用 PortAudio/libsndfile 组合,因为它们的依赖关系最小。
【问题讨论】:
-
几年前 2005-2008 年,我们在嵌入式 linux 上做商业音频,我记得我们的 C++ 音频堆栈直接与 ALSA 对话。 alsa-project.org/main/index.php/Main_Page