加载和选择音频文件到音频单元

Posted

技术标签:

【中文标题】加载和选择音频文件到音频单元【英文标题】:Loading & Selecting audio files into Audio Units 【发布时间】:2011-02-23 21:59:30 【问题描述】:

我正在尝试构建一个渲染回调函数,该函数将加载各种短声音文件,并且(根据我的自定义逻辑)将它们放入我的混音器单元的 iOData audioBufferList 中。如何将 aif 或 caf 文件加载到程序中,并将其样本适当地导入 ioData?

【问题讨论】:

【参考方案1】:

参见Extended Audio File Services Reference,尤其是“ExtAudioFileOpenURL”和“ExtAudioFileRead”。记住不要在渲染回调中做任何太耗时的事情(例如打开文件可能被认为是耗时的,分配内存肯定是)。

【讨论】:

对,所以我可以使用音频文件服务在 ViewDidLoad: 中加载我的音频文件,但是我的问题的第二部分呢?我会使用 ExtAudioFileRead,并将 iOData 指向 Render 回调的 ioData 对象吗? @DanF 是,例如:OSStatus renderCallback(..., AudioBufferList *ioData) ...; UInt32 numFrames = inNumberFrames; ExtAudioFileRef audioFile = // Your file ref previously opened with ExtAudioFileOpenURL OSStatus result = ExtAudioFileRead(audioFile, &numFrames, ioData); // Check for error // numFrames actually read may be less than request (e.g. if EOF)

以上是关于加载和选择音频文件到音频单元的主要内容,如果未能解决你的问题,请参考以下文章

如何在音频单元扩展(实时进程)中为音频文件播放分配内存?

如何使用 AudioKit 加载第三方音频单元

如何保存和恢复作为音频单元主机的音频单元状态

使用 Xcode 的模板开发音频单元插件

Core Audio(音频单元)音频会话和 MPVolumeView

使用音频单元(混音器主机)从 iPod 库而不是预先选择的声音文件中播放。