有没有任何C++(LGPL或类似于LGPL的)声音库,可以仅通过指定频率和音量等内容来播放声音?
我的目标平台是Linux / Ubuntu,而且我并不关心跨平台。
如果我能够发送一个声音数组,并将其压缩成通用的声音文件,例如mp3,那就太好了。
我正在寻找类似于OpenGL的东西,您只需“绘制”声音即可播放。 我听说过OpenAL,但那似乎只是用于加载和播放声音的库。
大多数简单且低级的音频库(例如OpenAL、SDL等)可以轻松播放PCM波形。您可以用所需播放的波形填充缓冲区,然后播放它。要从频率和音量等内容创建波形,您需要编写一些代码(对于简单的波形可能只需要几行),并需要了解基本的三角函数。
OpenAL是一个面向3D游戏的跨平台API。它的接口类似于OpenGL,并提供了管理虚拟3D环境中的音频源(位置、速度等)的功能,并提供一些声音和环境效果(混响等)。我知道它可以使用扩展解码一些压缩格式(MP3、Vorbis等),但我不确定它是否具有任何编码功能。
SDL(或Simple Direct-media Layer)也是跨平台的,并且面向游戏,但它提供的功能比音频更多。但是,它提供的任何功能都非常基本,这是有意设计的。SDL是一个平台抽象层。它的音频功能同样非常基本和低级别;仅提供播放和录制PCM波形。当然,还有一些扩展库(例如SDL_mixer)具有更多功能。
参考资料:
据我所知,这两个项目都会随源代码一起提供文档和示例,因此您可以获取它们的源代码并开始实验。
如果我正确理解了您想要做的事情,这两个库都可以轻松完成您想要的任务,但是在我个人看来,SDL更简单、更易于使用(除非您需要3D定位音频和效果)。
PLAY
命令。请查看 https://dev59.com/bWXWa4cB1Zd3GeqPQcoV。 - Ben Voigt