2012-03-05 91 views
1

对于需要在iPhone应用程序中处理音频的项目,这非常特别,希望有人可以指引我朝着正确的方向发展。在iPhone中播放音频时跳过多个文件iOS

可以假设你有一组固定的多达30个相同长度的音频文件(2-3秒,非压缩)。当一个音频文件正在播放时,它应该能够更新参数,使得播放从另一个音频文件中继续播放,与前一个音频文件结束播放的时间戳相同。如果不同的音频文件是不同版本的经过滤波处理的音频,应该可以在它们之间“滑动”,以获得直接应用滤波器的印象。过滤目前不可能在iPhone上实时实现,因此是预渲染的文件。

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

发挥不中断:

开始AAAAAAAAAAAAA停止

或者开始播放A和继续过在B然后C,在玩时发起

开始AAABBBBBBBBCC停止

理想情况是应该可以同时播放两个呃更多的问题。延迟并不重要,但文件之间的跳跃理想情况下不应产生点击或延迟。

我已经研究过使用音频队列服务(它看起来像地狱一样)并在OpenAl上嗅探。任何人都可以给我一个突围概述和一个我可以花费在未来几天的大方向吗?

回答

1

我设法通过使用FMOD设计器来做到这一点。 FMOD(http://www.fmod.org/)是一个用于游戏开发的声音设计框架,支持iOS开发。我在FMOD设计器中为每个声音片段制作了一个多轨事件,并使用不同的图层。在水平栏中添加一个参数,让您可以控制哪个声音片段可以实时播放。诀窍是让每个声音片段在整个小节中继续并控制使用音量效果(0-100%)听到的声音,如附图中所示。通过这种方式可以确保文件之间的跳转遵循相同的时间码。我已经成功地尝试了这种方法,最多可以打三十层,但经历了一些双重打击。如果我把这个数字降低到15,这似乎就消失了。

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

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

1

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

+0

感谢您的输入!音频单元应该可以工作,但它仍然很低,你可以去努力掌握。我在iOS编程方面有两个月的经验,并希望有一些更高级别的库可以解决这个问题。那个方向有什么想法? OpenAL的?试过FMOD但无法跳过工作。 – Spispeas 2012-03-06 09:29:05