我正在为iPhone制作一个opengl游戏.我即将开始为应用添加声音效果.我想知道为此目的最好的框架是什么.
AV基础是我最好的选择吗?我还缺少任何其他人,比如Open AL?
从游戏角度来看iPhone声音API的一般优缺点摘要:
AVFoundation:播放长压缩文件.没有低级访问,高延迟.适合主题曲或背景音乐.对短暂的影响不利.
系统声音:播放短(想想0-5秒)的声音.必须是.aif,.wav或.caf中的PCM或IMA4."一劳永逸"(一旦启动就无法阻止它).基于C的API.适用于短音效(轻敲,咔嗒声,刘海,撞击)
OpenAL:3D空间化音频.API类似于OpenGL,是它的自然伴奏.易于混合多种来源.音频需要是PCM(可能由Core Audio的"音频文件服务"加载).非常重要的低级访问.可能非常低的延迟.
音频队列:从您提供的源流(从文件读取,从网络读取,软件合成等)流式播放.基于C语言.可以相当低延迟.对于很多游戏任务来说并不是很理想:背景音乐更适合AVFoundation,更短的声音到系统声音,以及混合到OpenAL或音频单元.可以从麦克风录音.
音频单元:Core Audio的最低公共级别.极低的延迟(<30 ms).C,和那里的硬核C. 一切都必须是PCM.多通道混音器单元可让您混合音源.可以记录.
确保正确设置音频会话,这意味着您声明了一个类别,该类别指示您如何与设备上的其余音频进行交互(允许/禁止在后台播放iPod,尊重/忽略响铃/静音开关等).AV Foundation拥有Obj-C版本,而Core Audio则具有更强大的功能.