对于使用 AVFoundation 或 CoreAudio 的文件或缓冲区中的 decoding/converting 音频,我应该使用什么?

What should I use for decoding/converting audio from file or buffer using AVFoundation or CoreAudio?

我想在 macOS 和 iOS 上解码缓冲区或音频文件中的音频并将其写入缓冲区以供播放(我不想将其直接路由到硬件)。如果支持,我也希望能够将其转换为另一种格式。我应该使用 AVFoundation/CoreAudio API 中的什么 classes/services 来做到这一点?

AVFoundation 类 可以做所有这些事情。

  1. AVAudioFile 用于将文件中的音频解码为 PCM (AVAudioPCMBuffer)。
  2. AVAudioConverter 用于格式之间的转换
  3. AVAudioEngine 带有 AVAudioPlayerNode 可以播放 AVAudioPCMBuffers

如果您需要更好地控制延迟、设备,或者如果您 运行 遇到 AVFoundation 中的错误,您可以使用 CoreAudioAudioToolbox