【问题标题】:captureStillImageAsynchronouslyFromConnection:stillImageConnection completionHandler not always getting calledcaptureStillImageAsynchronouslyFromConnection:stillImageConnection completionHandler 并不总是被调用
【发布时间】:2012-01-05 07:54:09
【问题描述】:

我从苹果网站下载了AVCam 演示并尝试添加一个简单的开始屏幕(我添加了一个 StartViewController.{h,m,nib})和一个按钮,然后启动 AVCam 演示。按钮的代码如下(其他的只是xcode创建的默认东西):

-(IBAction) btnClicked:(id) sender {
    viewController =
    [[AVCamViewController alloc]
        initWithNibName: @"AVCamViewController"
        bundle:nil];

    [UIView beginAnimations:@"flipping view" context:nil];
    [UIView setAnimationDuration:1];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp
                       forView:self.view
                         cache:YES];
    [self.view addSubview:viewController.view];
    [UIView commitAnimations];
}

不知何故,添加这个笔尖后,拍照并不能一直有效(有时相机胶卷中没有照片)。我在 captureStillImageAsynchronouslyFromConnection:stillImageConnection completionHandler 中向captureStillImage 添加了一些日志语句,并注意到这个completionHandler 并不总是被调用。奇怪的是它在某些时候确实有效。我的猜测是我做错了什么但不确定是什么?我正在运行 4.2.1 的 iPhone 上对此进行测试。

【问题讨论】:

    标签: ios avcam


    【解决方案1】:

    确保在调用captureStillImageAsynchronouslyFromConnection:stillImageConnectionAVCaptureSession 正在运行

    【讨论】:

    • 它肯定在运行。我有以下检查: if (![session isRunning]) NSLog(@"sesion is not running!?!", nil); AVCam 的代码基本没动过。唯一改变的是添加了开始视图。
    【解决方案2】:

    好吧,我遇到了类似的问题,captureStillImageAsynchronouslyFromConnection:stillImageConnection 引发了一个异常,即传递的connection 无效。后来,我发现当我为会话创建properties 并为保留值创建stillImageOutPut 时,问题得到了解决。

    【讨论】:

      【解决方案3】:

      对我来说,这个问题只发生在单核 iPhone 4 上,并且当我尝试使用 AVCaptureSessionPresetHigh 捕获静止图像时。

      我试过 AVCaptureSessionPresetPhoto,这个问题就消失了。但我不需要全尺寸照片,所以我选择了另一种解决方案。

      我将 captureStillImageAsynchronouslyFromConnection 放在主队列中。像这样的

      dispatch_async(sessionQueue) {
      
          // do whatever before capturing
      
          dispatch_async(dispatch_get_main_queue) {
              captureStillImageAsynchronouslyFromConnection {
                  // do whatever after capturing
              }
          }
      }
      

      不知道为什么会出现这个问题,也不知道为什么可以避免它。但我希望这可以帮助某人。

      【讨论】:

        猜你喜欢
        • 2014-08-23
        • 2015-12-06
        • 1970-01-01
        • 1970-01-01
        • 2020-11-16
        • 2021-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多