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