0

J'essaie d'enregistrer l'audio en utilisant AVAssetWriter. Mais quand il joue dans le fichier, il joue 2 fois plus lentement que l'audio original. Qu'est-ce que je l'ai fait est la création d'un AVAssetWriter à la suite de façon ..AVAssetWriter Enregistrement audio 2 fois plus lent?

_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]; 

et après que je commence annexant la mémoire tampon dans les données comme suit

if (_audioWriterInput.readyForMoreMediaData == YES) { 
      [_audioWriterInput appendSampleBuffer:sampleBuffer]; 
      return YES; 
     } 

Ce que je fais est d'obtenir la sortie micro en utilisant la AVCapureSession dans la fonction de délégué suivant

- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection 

et le passage du SampleBuffer directement à avassetWriter d'écrire dans le fichier.

Quelqu'un peut-il s'il vous plaît laissez-moi savoir pourquoi il écrit les données audio au fichier si lentement .. quelqu'un d'autre fait face au même problème? et ce qui pourrait être la résolution possible pour la question ..

Répondre

0

Got la question ..

J'ajoutais la capture micro à la même session où je suis la capture de la caméra .. Séparé les deux sessions et maintenant les choses semblent bien fonctionner ..