2

我有一个数据流,特别是来自 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)

我究竟做错了什么?

谢谢

4

1 回答 1

0

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

于 2021-12-06T21:32:54.030 回答