AVAssetWriter不录制音频

我无法使用iPhone上的avassetwriter将音频录制到视频中。 我可以在手机上录制来自摄像头的视频没有问题,但是当我尝试添加音频时,我什么都没有收到,而且相册应用中的视频显示的内容也显示出了一些真正的问题,4秒的视频将会显示15:54:01或类似的东西,即使视频较短,编号后的每个视频都会增加。 我一直在试图追寻其他问题,但没有运气。

下面介绍我如何设置音频输入

captureSession = [[AVCaptureSession alloc] init];
//set up audio input 
AVCaptureDevice *audioDevice     = [AVCaptureDevice defaultDeviceWithMediaType: AVMediaTypeAudio];
AVCaptureDeviceInput *audioInput = [AVCaptureDeviceInput deviceInputWithDevice:audioDevice error:&error ]; 
audioOutput = [[AVCaptureAudioDataOutput alloc] init];

if([captureSession canAddOutput:audioOutput])
{
    [captureSession addOutput:audioOutput];
}    

[audioOutput setSampleBufferDelegate:self queue:dispatch_get_main_queue()];

继承人如何设置AVAssetWriter

videoWriter = [[AVAssetWriter alloc] initWithURL:[NSURL fileURLWithPath:MOVIE_PATH] fileType:AVFileTypeQuickTimeMovie error:&error];

AudioChannelLayout acl;
bzero( &acl, sizeof(acl));
acl.mChannelLayoutTag = kAudioChannelLayoutTag_Mono;


NSDictionary* audioOutputSettings = audioOutputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
         [ NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,
         [ NSNumber numberWithInt: 1 ], AVNumberOfChannelsKey,
         [ NSNumber numberWithFloat: 44100.0 ], AVSampleRateKey,
         [ NSData dataWithBytes: &acl length: sizeof( acl ) ], AVChannelLayoutKey,
         [ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey,
                           nil];

然后这里是如何使用由audioOutput回调发送的CMSampleBufferRef回写音频采样缓冲区

- (void) captureAudio:(CMSampleBufferRef)sampleBuffer
 {
   if([audioWriterInput isReadyForMoreMediaData]){
     [audioWriterInput appendSampleBuffer:sampleBuffer];
   }
 }

真的很感谢任何帮助,我一直坚持这一整天。


我没有看到你调用[videoWriter startSessionAtSourceTime] ,当audioWriterInput没有准备好时(也就是你不想要的),你也会放弃音频采样缓冲区。

所以你的问题在于你正在写出的PTSs(Presentation Time Stamps)。 要么你可以通过startSessionAtSourceTime告诉输出你的时间线在给定的时间t开始,或者你可以修改你附加的缓冲区,使其具有零基于的presentationTimeStamps。

链接地址: http://www.djcxy.com/p/72041.html

上一篇: AVAssetWriter not recording audio

下一篇: H264 stream writing using AVAssetWriter issue