在我的iOS应用程序中,我正在播放一些短波文件,并最终尝试将我播放的所有内容导出为单个音频文件,如WAV或CAF文件。我已经设法用AUFilePlayer做了回放。如何将通过AUFilePlayer播放的音频保存为WAV或CAF文件?
发布于 2012-10-12 00:18:17
您可能希望研究一下ExtAudioFile应用编程接口。这将公开一个名为ExtAudioFileWrite的函数,该函数旨在与您的音频单元传递的数据很好地结合在一起。ExtAudioFileWrite的签名如下:
OSStatus ExtAudioFileWrite (
ExtAudioFileRef inExtAudioFile,
UInt32 inNumberFrames,
const AudioBufferList *ioData
);这与音频单元渲染回调很好地重合,如下所示:
OSStatus (*AURenderCallback)(
void * inRefCon,
AudioUnitRenderActionFlags * ioActionFlags,
const AudioTimeStamp * inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList * ioData
);请注意共享的UInt32 inNumberFrames和AudioBufferList * ioData参数。
因此,您的工作流程可能是:
中传递的AudioBufferLists
3需要对你的应用程序如何设置有更多的了解,所以我不能在这方面帮你太多。如果您希望将音频发送到扬声器,并将其写入文件,则可能需要使用AUGraphAddRenderNotify,它将在渲染发生时让您知道(并允许您挂接自己的AURenderCallback以写入ExtAudioFile)。
如果你是这样做的(比如在渲染回调中),请确保使用ExtAudioFileWriteAsync,这样就不会阻塞渲染线程。
https://stackoverflow.com/questions/12777714
复制相似问题