如何将 AVAudioCompressedBuffer 写入 iOS 中的 AAC 文件?

How do I write AVAudioCompressedBuffer to an AAC file in iOS?

我已成功将 AVAudioPCMBuffers 从 AVAudioEngine 转换为 AAC 格式的 AVAudioCompressedBuffers。现在我正在尝试将这些缓冲区写入文件,但不知道该怎么做。 AVAudioFile 只接受 AVAudioPCMBuffers。

如有任何帮助,我们将不胜感激!

最简单的方法是在转换为压缩之前写入AVAudioFile,或者转换回PCM缓冲区并写入AVAudioFile。

如果简单的方法不是一个选项,我相信你会被困在使用 Audio File Services. You would use the AVAudioCompressedBuffer's AudioBufferList property's data pointer as a the inBuffer argument to AudioFileWriteBytes 中。与 C API 交互可能会很快变得丑陋,但这是将直接数据写入音频文件的唯一方法,而不是手动执行。

let data  = myAVAudioBufferlist.audioBufferList[0].mBuffers.mData

我发现最简单的方法是将未压缩的 AVAudioPCMBuffer 转换为 CMSampleBuffer,然后使用 AVAssetWriter 将音频样本写入文件。资产作者可以处理格式压缩到 AAC。

我没试过,但您也可以使用 AVAudioCompressedBuffer 中的音频缓冲区列表并构建 CMSampleBuffers。