Преобразование NSData в AVAudioPCMBuffer

#avfoundation #mp3 #avaudiopcmbuffer

Вопрос:

У меня есть поток данных, в частности, исходящий из MP3-потока. В попытке преобразовать его в AVAudioPCBBuffer формат , я создаю аудиоформат, чтобы описать его следующим образом:

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

при форматировании печати вывод будет:

 lt;AVAudioFormat 0x2818944b0: 2 ch, 48000 Hz, '.mp3' (0x00000000) 0 bits/channel, 0 bytes/packet, 1152 frames/packet, 0 bytes/framegt;  

Теперь, когда я пытаюсь инициализировать AVAudioPCMBuffer вот так:

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

Я получаю исключение:

 required condition is false: isPCMFormat(fmt)  

Что я делаю не так?

Спасибо

Ответ №1:

Вы используете неправильный AVAudioBuffer подкласс. AVAudioPCMBuffer предназначен для несжатого звука с «импульсно-кодовой модуляцией». Ты хочешь AVAudioCompressedBuffer вместо этого.