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

时间:2011-06-16 10:18:00

标签: iphone c++ android audio multiplatform

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

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

再次感谢,我为我可怜的英语道歉,

阿诺

4 个答案:

答案 0 :(得分:5)

查看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/

答案 1 :(得分:1)

音频通常是有问题的,编写自己的高级API并完全按照自己的意愿(而不是其他任何内容),并且假设您将在它之间编写一个薄层,这几乎总是一个好主意。以及你在下面使用的音频库。如果你很幸运,并且有一个可用的库可以按照你的方式进行,那么它就是微不足道的。如果没有,至少它仍然是可能的。在任何一种情况下,您的应用代码都不依赖于外部声音API。

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

我很容易说“编写自己的API”,因为我已经编写了20年的商业游戏,因此知道我认为音频API应该是什么样子。如果您对自己的想法没有自己的想法,那么我建议您查看一个对您有意义的第三方库,并从中获取您将要使用的函数并编写自己的API。一组函数除了调用它们之外什么都不做。

由于您可以免费使用OpenAL和FMOD进行开发,因此您可以使用这两种方法使用API​​,然后它可能会与您可能遇到的任何其他内容一起使用。

答案 2 :(得分:0)

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

似乎可以在Android上编译OpenAL。

答案 3 :(得分:0)

如果您正在寻找PCM音频输入/输出(而不是MP3解码),请尝试PortAudio或RTAudio RtAudio or PortAudio, which one to use?