#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
вместо этого.