使用 Audio Units 播放多个重叠的短音频文件

Posted

技术标签:

【中文标题】使用 Audio Units 播放多个重叠的短音频文件【英文标题】:Using Audio Units to play several short audio files with overlap 【发布时间】:2012-07-07 03:17:54 【问题描述】:

我已经浏览了正弦波发生器的音频单元教程并阅读了一些内容,我基本上了解它的工作原理。我真正想为我的应用程序做的是播放一个简短的声音文件以响应一些外部事件。这些声音的持续时间大约为 1-2 秒,并且以大约每秒 1-2 次的速率发生。

基本上我现在正在尝试弄清楚如何使用我的音频单元播放实际的音频文件,而不是生成正弦波。所以基本上我的问题是,如何让音频单元播放音频文件?

我是否只是在渲染回调中将音频文件中的字节读取到缓冲区中? (如果是这样我需要处理什么类来打开/转换/解压缩/读取音频文件)

或者是否有一些更简单的方法可以让我将整个缓冲区交出并告诉它播放?

我需要查看的任何特定类或 API 的名称来完成此操作都会非常有帮助。

【问题讨论】:

Apple 网站上应该有使用 Channel Mixer 单元的代码示例。目前没有链接,但我基于它构建了我的声音引擎,我的游戏同时播放了几个简短的、未压缩的效果。 【参考方案1】:

好的,检查一下: http://developer.apple.com/library/ios/samplecode/MixerHost/Introduction/Intro.html

编辑:这是一个示例项目。这个页面有详细的指令和内联代码来设置常用配置:http://developer.apple.com/library/ios/ipad/#DOCUMENTATION/MusicAudio/Conceptual/AudioUnitHostingGuide_iOS/ConstructingAudioUnitApps/ConstructingAudioUnitApps.html#//apple_ref/doc/uid/TP40009492-CH16-SW1

【讨论】:

感谢您的链接。我现在正在跟踪该程序。没啥好玩的,哈哈。 设置AUGraph的代码相当多,但请手动输入,不要复制粘贴。你会知道一些事情的! 很抱歉只提供了一个链接;我在 iPhone 上!【参考方案2】:

如果您不介意绑定到 IOS 5+,您应该查看 AUFilePlayer。使用回调要容易得多,而且您不必担心设置自己的环形缓冲区(如果您想避免在启动时将所有音频数据加载到内存中,则需要这样做)

【讨论】:

从未听说过。它也是低延迟的吗?

以上是关于使用 Audio Units 播放多个重叠的短音频文件的主要内容,如果未能解决你的问题,请参考以下文章

Audio Units是不是支持airplay?

HTML5 audio 如何实现播放多个MP3音频

在包含多个音频文件的页面上获取当前播放的 <audio> 文件

html5怎么可以添加多个音频然后一个接着一个播放??、急急急

如何在 iOS 中播放多个 html5 音频文件?

播放 html5 的 Audio 对象的多个实例