小编jos*_*rth的帖子

iOS AVFoundation captureStillImageAsynchronouslyFromConnection:completionHandler:无限期悬挂

我已经使用iOS 4和5中提供的AVFoundation框架实现了一个摄像头,但是在captureStillImageAsynchronouslyFromConnection:completionHandler:从未调用完成处理程序块的函数中遇到了一个不一致的问题.在这种情况下,快门声音不会启动并且预览会冻结.

我跟随Apple(WWDC 2010和2011视频)和非Apple指南(博客和SO帖子)在Photo分辨率下实现静态图像捕获,几乎没有改进.在以下条件下,我能够一致地重现:

  • 如果我将闪光灯设置为AVCaptureFlashModeAuto并在低光照条件下拍摄,它会挂起并且永远不会运行完成块.闪光灯闪光,但快门声没有.使用相同的代码,我可以在正常光线下拍摄照片,快门声音会闪光,闪光灯不闪光,完成程序段运行.
  • 如果我没有设置flashMode或关闭它,我可以拍摄一些照片,但是在一小部分(通常在1到5之间)之后,完成程序段会停止发射.为了澄清,一个场景可能是:
    1. 在确认屏幕上拍照并查看
    2. 回去拍照片
    3. 重复1和2几次
    4. 点击拍照并在完成块之前挂起.

我的实施

我在ViewController中处理接口,并在单独的类中处理所有AVFoundation的东西.处理AVFoundation内容的单独类的实例变量位于ViewController中.它与示例实现不同,但我不明白为什么它会导致这种偶然的错误.

更多观察

  • 即使在检查时[stillImageOutput isCapturingStillImage],它仍将继续返回false并继续运行该captureStillImageAsynchronouslyFromConnection功能
  • 如果我切换到另一个应用程序,锁定手机,在应用程序中执行某些其他操作,或点击"拍照"按钮一百万次,我可以获得完成块以返回错误.它们根据哪个动作而不同.常见的是11800,11801和11830.它们似乎与悬挂无关.
  • 我让我们的测试手机(iPhone 4 GSM)坐了一个小时,看它是否会最终处理.没有骰子.

我很想知道是否有一些我可能会遗漏的东西,一个未设置的属性,或一个已解决的问题.

谢谢.

(我看到了类似的帖子,但没有一个答案解决了我的问题.我需要在应用程序中使用Photo res.供参考: iPhone SDK 4 AVFoundation - 如何正确使用captureStillImageAsynchronouslyFromConnection?)

objective-c avfoundation ios

6
推荐指数
1
解决办法
2912
查看次数

标签 统计

avfoundation ×1

ios ×1

objective-c ×1