AVAssetWriter を使用してオーディオを録音しようとしています。ただし、ファイルを再生すると、元のオーディオよりも 2 倍遅く再生されます。私がやったことは、次の方法でAVAssetWriterを作成することです..
_writer = [AVAssetWriter assetWriterWithURL:url fileType:AVFileTypeMPEG4 error:nil];
AudioChannelLayout acl;
bzero( &acl, sizeof(acl));
acl.mChannelLayoutTag = kAudioChannelLayoutTag_Mono;
NSDictionary *audioOutputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
[ NSNumber numberWithInt: kAudioFormatMPEG4AAC ], AVFormatIDKey,
[ NSNumber numberWithInt: 1 ], AVNumberOfChannelsKey,
[ NSNumber numberWithFloat: 44100.0 ], AVSampleRateKey,
[ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey,
[ NSData dataWithBytes: &acl length: sizeof( acl ) ], AVChannelLayoutKey,
nil];
_audioWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio outputSettings:audioOutputSettings];
_audioWriterInput.expectsMediaDataInRealTime=YES;
[_writer addInput:_audioWriterInput];
その後、次のようにデータにバッファを追加し始めます
if (_audioWriterInput.readyForMoreMediaData == YES) {
[_audioWriterInput appendSampleBuffer:sampleBuffer];
return YES;
}
私がやっていることは、次のデリゲート関数で AVCapureSession を使用してマイク出力を取得することです
- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
sampleBuffer を avassetWriter に直接渡してファイルに書き込みます。
オーディオ データのファイルへの書き込みが非常に遅い理由を教えてください。他の誰かが同様の問題に直面していますか? そして、問題の可能な解決策は何ですか..