将 NSData 转换为 AVAudioPCMBuffer

Converting NSData to AVAudioPCMBuffer

我有一个数据流,特别是来自 MP3 流。 为了将它转换为 AVAudioPCBBuffer,我正在创建一个 AVAudioFormat 来描述它,如下所示:

AVAudioFormat* format = [[AVAudioFormat alloc] initWithStreamDescription:&description];

打印格式时输出为:

<AVAudioFormat 0x2818944b0:  2 ch,  48000 Hz, '.mp3' (0x00000000) 0 bits/channel, 0 bytes/packet, 1152 frames/packet, 0 bytes/frame>

现在,当我尝试像这样初始化 AVAudioPCMBuffer 时:

AVAudioPCMBuffer* pcbBuffer = [[AVAudioPCMBuffer alloc] initWithPCMFormat:format frameCapacity:frameCount];

我遇到异常:

required condition is false: isPCMFormat(fmt)

我做错了什么?

谢谢

您使用了错误的 AVAudioBuffer 子类。 AVAudioPCMBuffer 用于未压缩的“脉冲编码调制”音频。你想要 AVAudioCompressedBuffer 而不是。