gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:47:44 24 4
gpt4 key购买 nike

在我的 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
);

注意共享的 UInt32 inNumberFramesAudioBufferList * ioData 参数。

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

  1. 设置一个用于写入的 ExtAudioFile
  2. 设置您的 AUGraph 以呈现音频
  3. 捕获您的 AudioUnit 传递的 AudioBufferLists

3 需要对您的应用程序的设置方式有更多的了解,因此我无法在这方面为您提供太多帮助。如果你想让你的音频进入扬声器并写入文件,你可能想要使用 AUGraphAddRenderNotify,它会在渲染发生时通知你(并让你 Hook 你自己的 AURenderCallback 来写入你的 ExtAudioFile)。

如果您以这种方式做事(即生活在渲染回调中),请确保使用 ExtAudioFileWriteAsync,这样您就不会阻塞渲染线程。

关于iphone - 将通过 AUFilePlayer 播放的音频保存到外部文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12777714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com