用于多跨平台使用的音频库C++(iphone、android..)

Audio Library C++ for a multicross platform use (iphone, android...)

本文关键字:C++ iphone android 音频 跨平台 用于      更新时间:2023-10-16

我正在尝试制作一个C++引擎,它将读取mp3文件,并根据读取声音文件的时间进行一些图像缩放/翻译。我想我可以使用OpenGL ES来渲染我想要的东西,在我的C++文件中调用一些OpenGL ES指令,并在Obj-C/Java中初始化我的绘图上下文。我想对声音做同样的处理,但我真的不知道该用什么,也不知道我是否真的能在C++中做到这一点。

我搜索了图书馆,所以我找到了Bass和Fmod(这不是免费的商业用途)。他们说它是多跨平台的(Windows、Unix、MacOS),但我不明白它是否适合移动设备,以及我是否真的能使用它。有人经历过吗?你推荐给我另一个免费图书馆吗?

再次感谢,我为我糟糕的英语道歉,

Arnaud

了解libpd(嵌入式应用程序的纯数据)

http://download.puredata.info/libpd(该库最近才发布,但代码确实非常成熟)

http://createdigitalmusic.com/2010/10/libpd-put-pure-data-in-your-app-on-an-iphone-or-android-and-everywhere-free/

音频经常有问题,编写自己的高级API,完全做你想做的事情(而不是其他事情),并假设你将在它和下面使用的任何音频库之间编写一个薄层,这总是一个好主意。如果你很幸运,有一个图书馆可以按照你的方式做事,那么这就很琐碎了。如果没有,至少还是有可能的。在任何一种情况下,您的应用程序代码都不与外部声音API绑定。

多年来,我在PC、Mac和iPhone的多个不同商业项目中使用了FMOD,我一直很喜欢它,但它不是免费的。OpenAL似乎总是有点,我不知道:笨重?但你只需要在编写API层时处理它,你的应用程序代码永远不需要看到它

我很容易说"写你自己的API",因为我已经写了20年的商业游戏,所以我知道我认为API音频应该是什么样子。如果你没有自己的想法,那么我建议你看一个对你有意义的第三方库,从中提取你将要使用的函数,并编写自己的API,使其成为一组只调用这些函数的函数。

由于您可以免费使用OpenAL和FMOD进行开发,因此您可以使您的API同时使用这两种API,而且很有可能会与您遇到的任何其他API一起使用。

OpenAL可能是你最好的选择。看看这个答案:Android OpenAL?

在Android上编译OpenAL似乎是可能的。

如果您只寻找PCM音频输入/输出(而不是MP3解码),请尝试PortAudio或RTAudioRtAudio或PortAudio,使用哪一个?