4

我从苹果网站下载了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 上对此进行测试。

4

3 回答 3

2

确保AVCaptureSession调用时正在运行captureStillImageAsynchronouslyFromConnection:stillImageConnection

于 2012-01-05T08:29:07.543 回答
1

好吧,我遇到了一个类似的问题,即captureStillImageAsynchronouslyFromConnection:stillImageConnection引发了一个异常,即通过connection无效。后来,我发现当我properties参加会议并stillImageOutPut保留价值观时,问题得到了解决。

于 2013-12-29T12:19:57.420 回答
0

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

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

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

dispatch_async(sessionQueue) {

    // do whatever before capturing

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

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

于 2015-01-28T05:57:14.407 回答