Ios AVFoundation:进入摄影机视图时滞后

Ios AVFoundation:进入摄影机视图时滞后,ios,objective-c,iphone,camera,avfoundation,Ios,Objective C,Iphone,Camera,Avfoundation,我已经成功地在我的应用程序中实现了QRCode扫描仪,一切都很好,性能也很好。然而,在我的应用程序的主屏幕上,当你按下按钮切换到实际的视图控制器进行扫描时,至少有750ms/1秒的延迟 以下是摄像头设置: - (void)setupCaptureSession { // 1 if (_captureSession) return; // 2 _videoDevice = [self frontCamera];//[AVCaptureDevice defaultDevice

我已经成功地在我的应用程序中实现了QRCode扫描仪,一切都很好,性能也很好。然而,在我的应用程序的主屏幕上,当你按下按钮切换到实际的视图控制器进行扫描时,至少有750ms/1秒的延迟

以下是摄像头设置:

- (void)setupCaptureSession { // 1
    if (_captureSession) return;
    // 2
    _videoDevice = [self frontCamera];//[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    if (!_videoDevice) {
        DDLogWarn(@"No video camera on this device!"); return;
    }
    // 3
    _captureSession = [[AVCaptureSession alloc] init];
    // 4
    _videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:_videoDevice error:nil];
    // 5
    if ([_captureSession canAddInput:_videoInput]) { [_captureSession addInput:_videoInput];
    }
    // 6
    _previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:_captureSession];
    _previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;

    _metadataOutput = [[AVCaptureMetadataOutput alloc] init];

    //dispatch_queue_t metadataQueue = dispatch_queue_create("org.iso.QRCode.metadata", 0);
    dispatch_queue_t metadataQueue = dispatch_get_main_queue();
    [_metadataOutput setMetadataObjectsDelegate:self queue:metadataQueue];
    if ([_captureSession canAddOutput:_metadataOutput]) {
        //DDLogNotice(@"WE ARE OUTPUTING METADATA!");
        [_captureSession addOutput:_metadataOutput];
        _metadataOutput.metadataObjectTypes = @[AVMetadataObjectTypeQRCode];
    }
//    [self startRunning];
}
此方法正在
viewDidLoad
中激发,并且在
视图中将出现
fire
[自启动]
(它刚刚启动相机会话)

这里最大的问题看起来像是
dispatch\u queue\u t metadataQueue=dispatch\u get\u main\u queue();
是不是当我从上一个视图控制器启动segue时,主线程被阻止启动相机,并暂时阻止UI?最好在不同的线程中设置相机

编辑
我移动了
[自启动耳轴]
视图确实出现了
,这极大地帮助了segue延迟,但是在加载相机预览之前需要很长的一秒钟。有什么优雅的方法可以减少相机实时预览时间吗?

你能解决这个问题吗?我也面临同样的延迟。@KunalShrivastava到目前为止,我使用的是完全相同的代码,并且在VIEWDID中,您正在执行[自启动滚动]。性能似乎非常出色,如果您还有任何问题,请告诉我,我们可以尝试解决它!我能够解决问题。非常感谢。