在 iPhone iOS 中播放音频时在多个文件之间跳转
Posted
技术标签:
【中文标题】在 iPhone iOS 中播放音频时在多个文件之间跳转【英文标题】:Skip between multiple files while playing audio in iPhone iOS 【发布时间】:2012-03-05 18:36:22 【问题描述】:对于一个项目,我需要在一个非常特别的 iPhone 应用程序中处理音频,希望有人能指出我正确的方向。
假设您有一组固定的最多 30 个相同长度的音频文件(2-3 秒,未压缩)。当一个 que 从一个音频文件播放时,它应该能够更新参数,使播放从另一个音频文件从与前一个音频文件结束播放相同的时间戳继续播放。如果不同的音频文件是经过大量过滤的音频的不同版本,则应该可以在它们之间“滑动”以获得您直接应用过滤器的印象。目前无法在 iPhone 上实时实现过滤,因此是预渲染文件。
如果 A B 和 C 是不同的音频文件,我希望能够:
不间断地播放 A:
开始 AAAAAAAAAAAAA 停止
或开始播放 A 并在 B 和 C 中继续播放,在播放时开始
开始 AAABBBBBBBBCC 停止
理想情况下应该可以同时玩两个以上的问题。延迟并不那么重要,但文件之间的跳过最好不会产生点击或延迟。
我已经研究过使用音频队列服务(看起来像地狱一样)并嗅探了 OpenAl。谁能给我一个粗略的概述和一个我可以在接下来的几天里埋头苦干的大方向?
【问题讨论】:
【参考方案1】:尝试使用 ios 音频单元 API,尤其是连接到 RemoteIO 的混音器单元用于音频输出。
【讨论】:
感谢您的意见!音频单元肯定可以工作,但它仍然尽可能低并且难以掌握。我有两个月的 iOS 编程经验,并希望有一些更高级别的库可以实现这一目标。在那个方向上有什么想法吗?开放式?尝试了 FMOD,但无法让跳过工作。【参考方案2】:我通过使用 FMOD Designer 设法做到了这一点。 FMOD (http://www.fmod.org/) 是一个完善的游戏开发设计框架,支持iOS开发。我在 FMOD Designer 中制作了一个多轨事件,每个声音剪辑都有不同的层。在水平栏中添加一个参数,可让您控制实时播放的声音片段。诀窍是让每个声音片段在整个小节上继续播放,并通过使用音量效果 (0-100%) 来控制听到的声音,如附图中所示。这样,您可以确保在文件之间跳过遵循相同的时间码。我已经成功地尝试了多达 30 层,但经历了一些双重播放。如果我将数字减少到十五,这似乎消失了。
如果您对此感到满意,应该可以使用 iOS 音频单元 API,但对于我们这些喜欢最简单的解决方案 FMOD 的人来说非常好 :) 感谢 Ellen S 的解决方案提示!
FMOD Designer 中多轨事件的屏幕截图: https://plus.google.com/photos/106278910734599034045/albums/5723469198734595793?authkey=CNSIkbyYw8PM2wE
【讨论】:
以上是关于在 iPhone iOS 中播放音频时在多个文件之间跳转的主要内容,如果未能解决你的问题,请参考以下文章