c++ - 简单的 C++ 声音 API

标签 c++ linux qt audio

我的商业嵌入式 C++ Linux 项目需要同时播放 wav 文件和各个音量级别的音调。一些声音示例:

• 每次用户按下以用户指定的音量播放的屏幕时都会发出“咔哒”声
• 以最大音量播放警告音
• 其他应用程序请求的警告音以应用程序指定的音量级别 (0-100%)
• future 支持用户指定音量的MP3 播放器和/或视频播放(有声)。播放歌曲/视频时,所有其他声音都应继续。

我们使用 Qt 作为我们的 UI 框架,它支持 QtMultimedia 和 Phonon。但是,我听说前者在 Linux 上的声音支持参差不齐,而后者是较旧的版本,可能会在即将发布的 Qt 版本中被弃用。

我做了一些研究,这里是我遇到的一些 API:
KDE Phonon
SFML
PortAudio
SDL_Mixer
OpenAL Soft
FMOD (虽然我更愿意避免许可费)
ALSA (可能有点太低级了……)

其他注意事项: 跨平台不是必需的,但首选。我们希望尽可能地限制依赖性。在可预见的 future ,不再需要 3D 音频或特效等高级功能。我的团队没有太多音频经验,因此易用性很重要。

这些是否对我的申请有些矫枉过正?哪个看起来最合适?

更新: 事实证明,由于其他原因我们已经依赖于 SDL,因此我们决定使用 SDL_Mixer。然而,对于其他嵌入式应用程序,由于它们的依赖性极小,我也会花很长时间在 PortAudio/libsndfile 组合上。

最佳答案

libao很简单,跨平台,Xiphy 善良。 有 documentation也是!

用法概述here - 简单的用法是这样的:

关于c++ - 简单的 C++ 声音 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9981087/

相关文章:

c++ - 在测试用例中读取 qdebug?

c++ - 转发元组的一个元素

android - 在带有 Windows 的 Android NDK 中使用 Boost

c++ - 未命名类

linux - 使用Bash脚本在X时间内创建短和长的sqlplus连接

java - Java 临时文件 (jar_cache####.tmp) 使用的资源(文件描述符和内存)多长时间?

linux - bash 脚本来替换单词

c++ - 在 QT 中,是否有用于 double、float、int... 等的动态数组,即 QDoubleArray?