Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将通过AUFilePlayer播放的音频保存到外部文件_Iphone_Ios_Ipad_Core Audio - Fatal编程技术网

Iphone 将通过AUFilePlayer播放的音频保存到外部文件

Iphone 将通过AUFilePlayer播放的音频保存到外部文件,iphone,ios,ipad,core-audio,Iphone,Ios,Ipad,Core Audio,在我的iOS应用程序中,我正在播放一些短波文件,最后尝试将我播放的所有内容导出到单个音频文件,如WAV或CAF文件。我已经设法用AUFilePlayer进行了播放。如何将通过AUFilePlayer播放的音频保存到WAV或CAF文件?您可能需要查看ExtAudioFile API。这将公开一个名为ExtAudioFileWrite的函数,该函数旨在与音频单元传递的数据紧密结合。ExtAudioFileWrite的签名如下: OSStatus ExtAudioFileWrite ( ExtA

在我的iOS应用程序中,我正在播放一些短波文件,最后尝试将我播放的所有内容导出到单个音频文件,如WAV或CAF文件。我已经设法用AUFilePlayer进行了播放。如何将通过AUFilePlayer播放的音频保存到WAV或CAF文件?

您可能需要查看ExtAudioFile API。这将公开一个名为
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
);
请注意numberframes和AudioBufferList*ioData中的共享
UInt32

因此,您的工作流程可以是:

  • 获取用于写入的ExtAudio文件
  • 将您的AUGraph设置为渲染音频
  • 捕获AudioUnits传递的AudioBufferList
  • 3需要更多关于如何设置应用程序的知识,因此我无法在这方面为您提供太多帮助。如果您希望将音频发送到扬声器并写入文件,您可能需要使用
    AUGraphAddRenderNotify
    ,它可以让您知道何时进行渲染(并让您挂接自己的AURenderCallback以写入ExtAudio文件)


    如果您以这种方式进行操作(即在渲染回调中),请确保使用
    ExtAudioFileWriteAsync
    ,这样您就不会阻止渲染线程。

    我无法设置AUGraph。