大佬教程收集整理的这篇文章主要介绍了iOS 8上的AVCaptureVideoDataOutput不会在指定的调度队列上发布样本缓冲区,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这在iOS7上按预期工作.
还有其他人经历过这个吗?
一个明显的解决方法是在回调中手动调用dispatch_sync以将处理同步到自定义调度队列,但奇怪的是,这会导致死锁……
产生此问题的示例代码:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view,typically from a nib. AVCaptureSession *session = [[AVCaptureSession alloc] init]; session.sessionPreset = AVCaptureSessionPresetMedium; AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session]; captureVideoPreviewLayer.frame = self.view.bounds; [self.view.layer addSublayer:captureVideoPreviewLayer]; [session addInput:[AVCaptureDeviceInput deviceInputWithDevice:[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] error:nil]]; AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init]; queue = dispatch_queue_create("our.dispatch.queue",DISPATCH_QUEUE_seriaL); [output setSampleBufferDelegate:self queue:queue]; [session addOutput:output]; [session startRunning]; } - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection { NSLog(@"Running on queue %@,queue that was set is %@,this is %s",dispatch_get_current_queue(),[captureOutput performSELEctor:@SELEctor(sampleBufferCallBACkQueuE)],queue == dispatch_get_current_queue() ? "our queue" : "not our queue!!!"); }
以上是大佬教程为你收集整理的iOS 8上的AVCaptureVideoDataOutput不会在指定的调度队列上发布样本缓冲区全部内容,希望文章能够帮你解决iOS 8上的AVCaptureVideoDataOutput不会在指定的调度队列上发布样本缓冲区所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。