あるiOSデバイスからオーディオを録音し、同時に別のデバイスに送信して再生したい。
AVCaptureAudioDataOutputを使用して、両端でCMSampleBufferRefを適切に送受信しようとしましたが、レシーバーデバイスで再生すると、エラードメイン=NSOSStatusErrorドメインコード=1954115647が表示されます。
受信したCMSampleBufferRefを送信者デバイスでNSDataに変換するために次のコードを使用しています:
if (captureOutput == audioOutput) {
AudioBufferList audioBufferList;
NSMutableData *data=[[NSMutableData alloc] init];
CMBlockBufferRef blockBuffer;
CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(sampleBuffer, NULL, &audioBufferList,
sizeof(audioBufferList), NULL, NULL, 0, &blockBuffer);
for( int y=0; y<audioBufferList.mNumberBuffers; y++ )
{
AudioBuffer audioBuffer = audioBufferList.mBuffers[y];
Float32 *frame = (Float32*)audioBuffer.mData;
[data appendBytes:frame length:audioBuffer.mDataByteSize];
}
[self performSelectorOnMainThread:@selector(sendAudio:) withObject:data waitUntilDone:NO];
CFRelease(blockBuffer);
blockBuffer=NULL;
}
受信機デバイスでオーディオを再生するための次のコード:
audioPlayer = [[AVAudioPlayer alloc] initWithData:audioData error:&error];
audioPlayer.numberOfLoops = -1;
audioPlayer.volume = 1.0;
if (audioPlayer == nil)
NSLog(@"%@", [error description]);
else
[audioPlayer play];
受信したバイトを適切なオーディオ形式として認識していないようです。
この問題を受け取るのを手伝ってください。
ありがとう。