AVCaptureFileOutputRecordingDelegate没有调用它的委托方法ios

时间:2015-04-30 07:51:19

标签: ios avfoundation avcapturesession

我正在使用AVFoundation捕获视频并将其呈现在iPhone屏幕上。 我想知道每次丢弃视频帧并得到它的时间, 我读到这个委托方法正是我想要的:

-(void)captureOutput:(AVCaptureOutput*)captureOutput didDropSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection*)connection;

这是设置委托的代码:

@interface PRVideoRecorderManger ()<AVCaptureFileOutputRecordingDelegate, AVCaptureVideoDataOutputSampleBufferDelegate>


    AVCaptureVideoDataOutput *videoCaptureOutput = [[AVCaptureVideoDataOutput alloc] init];
dispatch_queue_t queue = dispatch_queue_create("myQueue", DISPATCH_QUEUE_SERIAL);
[videoCaptureOutput setAlwaysDiscardsLateVideoFrames:YES];
[videoCaptureOutput setSampleBufferDelegate:self queue:queue];

// Specify the pixel format
videoCaptureOutput.videoSettings =
[NSDictionary dictionaryWithObject:
 [NSNumber numberWithInt:kCVPixelFormatType_32BGRA]
                            forKey:(id)kCVPixelBufferPixelFormatTypeKey]; //kCVPixelBufferPixelFormatTypeKey


// If you wish to cap the frame rate to a known value, such as 15 fps, set
// minFrameDuration.
videoCaptureOutput.minFrameDuration = CMTimeMake(1, videoFPS);

if([_captureSession canAddOutput:videoCaptureOutput])
{
    [_captureSession addOutput:videoCaptureOutput];
}
else
{
    NSLog(@"can't Add output");
}

_movieFileOutput = [[AVCaptureMovieFileOutput alloc] init];
[[_movieFileOutput connectionWithMediaType:AVMediaTypeVideo ] setVideoOrientation:orientation];
[_captureSession addOutput:_movieFileOutput];
[_movieFileOutput startRecordingToOutputFileURL:outputURL recordingDelegate:self];
[_captureSession startRunning];

但是captureOutPut:didDropSampleBuffer永远不会被调用,为什么会这样?

编辑: 我已经意识到如果我评论AVCaptureMovieFileOutput它会调用

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

有没有办法接收输出样本缓冲区并完成记录到URL的输出文件 因为现在它只让我收到一个。

0 个答案:

没有答案