在我的iOS应用程序中,我正在播放一些短波文件,最后尝试将我播放的所有内容导出到单个音频文件,如WAV或CAF文件。我已经设法使用AUFilePlayer进行播放。如何将通过AUFilePlayer播放的音频保存到WAV或CAF文件?
答案 0 :(得分:2)
您可能希望查看ExtAudioFile API。这将公开一个名为ExtAudioFileWrite
的函数,该函数旨在与您的音频单元传递的数据很好地结合。 ExtAudioFileWrite的签名如下:
OSStatus ExtAudioFileWrite (
ExtAudioFileRef inExtAudioFile,
UInt32 inNumberFrames,
const AudioBufferList *ioData
);
与Audio Unit渲染回调非常吻合,如下所示:
OSStatus (*AURenderCallback)(
void * inRefCon,
AudioUnitRenderActionFlags * ioActionFlags,
const AudioTimeStamp * inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList * ioData
);
请注意共享的UInt32 inNumberFrames
和AudioBufferList * ioData
args。
因此,您的工作流程可能是:
3需要更多地了解您的应用程序的设置方式,因此我无法真正帮助您解决问题。如果你想让你的音频进入扬声器以及写入文件,你可能想要使用AUGraphAddRenderNotify
,这会让你知道每当渲染发生时(让你挂钩)你自己的AURenderCallback写入你的ExtAudioFile)。
如果你这样做(即在渲染回调中生活),请确保使用ExtAudioFileWriteAsync
,这样就不会阻止渲染线程。