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