Мне нужно воспроизвести линейные данные PCM в реальном времени на iPhone.
Я получаю поток данных LIVE через RTSP, и в настоящее время я могу считать его с iphone, сохранить его в файл, воспроизвести на настольном аудиоплеере, поддерживающем pcm, поэтому я думаю, что транспорт в порядке .
теперь я застрял, у меня полностью! понятия не имею, что делать с моим объектом NSData, содержащим данные.
Я провел небольшое исследование, в конечном итоге выбрав AudioUnits, но я просто не могу назначить свои NSdata для аудиобуфера, соответственно, я понятия не имею, как.
для моего экземпляра я назначил обратный вызов:
AURenderCallbackStruct input;
input.inputProc = makeSound;
input.inputProcRefCon = self;
и с функцией 'makeSound':
OSStatus makeSound(
void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData)
{
//so what to do here?
//ioData->mBuffers[0].mdata = [mySound bytes]; does not work, nor does
//ioData->mBuffers = [mySound byes];
return noErr;
}
мой подход неверен в гернерале?
что мне нужно знать / изучать / реализовывать? Я полный аудио-новичок, поэтому я предложил, чтобы мне не нужно было несколько буферов, так как, когда я получаю новый звуковой пакет от rtsp, старый заканчивается, так как это живой эфир (я основываю это на своих записях). , который просто добавил байты без просмотра меток времени представления, так как я все равно не получаю)
Приветствия