Здравствуйте.
У нас есть void массив mdata на 2048 байт (надеюсь знакомая ситуация), и вот этот массив нужно воспроизвести.
Пробуем AVAudioPlayer, документация пытается убедить нас, что инициализировать этот объект можно с помощью NSData, но всегда выходит nill.
https://developer.apple.com/library/ios/documentat...
Вот наш бравый пример:
AudioBufferList audioBufferList;
NSMutableData *data = [[NSMutableData alloc] init];
CMBlockBufferRef blockBuffer;
CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(sampleBuffer, NULL, &audioBufferList, sizeof(audioBufferList), NULL, NULL, kCMSampleBufferFlag_AudioBufferList_Assure16ByteAlignment, &blockBuffer);
for( int y=0; y< audioBufferList.mNumberBuffers; y++ ){
AudioBuffer audioBuffer = audioBufferList.mBuffers[y];
//Byte *frame = (Byte*)audioBuffer.mData;
[data appendBytes:audioBuffer.mData length:audioBuffer.mDataByteSize];
}
CFRelease(blockBuffer);
NSError *err;
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithData:data error:&err];
NSLog(@"%@", err);
[player play];
Спасибо!