【发布时间】:2011-02-23 21:59:30
【问题描述】:
我正在尝试构建一个渲染回调函数,该函数将加载各种短声音文件,并且(根据我的自定义逻辑)将它们放入我的混音器单元的 iOData audioBufferList 中。如何将 aif 或 caf 文件加载到程序中,并将其样本适当地导入 ioData?
【问题讨论】:
标签: iphone core-audio audiounit
我正在尝试构建一个渲染回调函数,该函数将加载各种短声音文件,并且(根据我的自定义逻辑)将它们放入我的混音器单元的 iOData audioBufferList 中。如何将 aif 或 caf 文件加载到程序中,并将其样本适当地导入 ioData?
【问题讨论】:
标签: iphone core-audio audiounit
参见Extended Audio File Services Reference,尤其是“ExtAudioFileOpenURL”和“ExtAudioFileRead”。记住不要在渲染回调中做任何太耗时的事情(例如打开文件可能被认为是耗时的,分配内存肯定是)。
【讨论】:
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) }