在iPhone iOS中播放音频时跳过多个文件

时间:2012-03-05 18:36:23

标签: ios audio core-audio openal audioqueueservices

对于一个项目,我需要在iPhone应用程序中处理音频非常特殊,并希望有人可能指出我正确的方向。

假设您有一组最多30个相同长度的音频文件(2-3秒,未压缩)。当一个曲目从一个音频文件播放时,它应该能够更新参数,使得从前一个音频文件结束播放的同一时间戳中的另一个音频文件继续播放。如果不同的音频文件是不同版本的高度过滤的音频,则应该可以在它们之间“滑动”以获得直接应用过滤器的印象。目前无法在iPhone上实时过滤,因此预呈现的文件也是如此。

如果A B和C是不同的音频文件,我希望能够:

不间断地播放A:

  

启动AAAAAAAAAAAAAA停止

或者开始播放A并继续播放B,然后播放C,播放时启动

  

启动AAABBBBBBBBCC停止

理想情况下应该可以同时播放两个问题。延迟并不重要,但理想情况下,文件之间的跳过不应产生咔嗒声或延迟。

我已经开始研究使用音频队列服务(看起来像是潜入地狱)并嗅探OpenAl。任何人都可以给我一个概述,以及我可以在接下来几天埋葬的总体方向吗?

2 个答案:

答案 0 :(得分:1)

尝试使用iOS Audio Unit API,特别是连接到RemoteIO的混音器单元,用于音频输出。

答案 1 :(得分:1)

我设法使用FMOD Designer完成了这项工作。 FMOD(http://www.fmod.org/)是一个支持iOS开发的游戏开发的声音设计框架。我在FMOD Designer中制作了一个多轨事件,每个声音片段都有不同的层。在水平栏中添加一个参数,可让您控制实时播放哪个声音片段。诀窍是让每个声音剪辑继续在整个条上并控制使用体积效果(0-100%)听到的声音,如附图所示。通过这种方式,您可以确保在文件之间跳过遵循相同的时间码。我已成功尝试了多达三十层,但经历了一些双重播放。如果我将数字减少到十五,这似乎消失了。

如果您对此感到满意,应该可以使用iOS Audio Unit API,但对于我们这些喜欢最简单的溶剂的人来说,FMOD非常好:)感谢Ellen S的解决方案提示!< / p>

FMOD Designer中多轨事件的屏幕截图: https://plus.google.com/photos/106278910734599034045/albums/5723469198734595793?authkey=CNSIkbyYw8PM2wE