1
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
AudioBufferList audioBufferList;
NSMutableData *data= [NSMutableData data];
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];
}
CFRelease(blockBuffer);
CFRelease(ref);
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithData:data error:nil];
[player play];
}
Ich weiß nicht, wie NSdata in Audio Buffer konvertieren.So erstellen Sie AudioBuffer (Audio) von NSdata
AVAudioPlayer mit obigen Daten gibt nil zurück, mit diesem Fehler: Fehler = Fehler Domain = NSOSStatusErrorDomain Code = 1954115647
thx Sie r answer.Aut AVAudioPlayer tritt immer noch Fehler: Fehler Domain = NSOSStatusErrorDomain Code = 1954115647 – WENHUI
Ok, dann versuchen, [[NSMutableData Alloc] Init] anstelle von [NSMutableData Daten]; zB: NSMutableData * data = [[NSMutableData alloc] init]; und jetzt einmal versuchen –
Problem existiert immer noch, ist es meine obige Methode ist nicht korrekt? – WENHUI