01.06.2015, 05:34. Просмотров 795. Ответов 2
Здравствуйте.
У нас есть void массив mdata на 2048 байт (надеюсь знакомая ситуация), и вот этот массив нужно воспроизвести.
Пробуем AVAudioPlayer, документация пытается убедить нас, что инициализировать этот объект можно с помощью NSData, но всегда выходит nill.
Вот пример, когда мы имеем массив для воспроизведения
Objective-C |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| 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]; |
|
Спасибо!