0

我在应用商店中有三个基于相机的应用(拍摄静态照片),并且收到反馈说 UIImagePickerController 界面非常慢 - 我不能否认这一点。因此,为了提高应用程序的性能,我开始尝试使用 WWDC 2010 中的 AVCam Demo 源代码。

由于 AVFoundation 框架不与 UI Kit 交互,因此我成功地围绕演示包装了一个视图。我能够成功地在视图控制器之间转换。我唯一修改的是将 Record 按钮替换为 Exit 按钮(退出到包装视图控制器)

修改后的应用程序在第一个会话期间运行良好(包装器 -> 演示)如果我将演示退出到包装器,然后第二次返回演示,预览层中的视频帧会在一两秒后冻结。应用程序本身不会冻结 - 只是视频被冻结。此时,所有 UI 按钮都处于活动状态。但是,当我点击“静止”按钮捕捉图像时,我在警报中收到以下错误:

操作无法完成(AVFoundationErrorDomain 错误 - 11800。)

这不能在原始演示代码中复制 - 因为您无法关闭并重新打开会话。所以,我想知道这是否与我在测试中“退出”会话的方式有关。这是我在演示代码中添加的“退出”操作:

- (IBAction)exit:(id)sender
{
    [[self captureManager] stopRecording];
    [self dismissModalViewControllerAnimated:YES];
}

这是否足够 - 或者我错过了什么?

问候,山姆。

4

1 回答 1

1

以有序的方式清理捕获会话存在一个小问题,因为有一些异步调用没有关于何时完成的警报。

尝试按照此问题中的建议停止和释放: 如何正确释放 AVCaptureSession (获得最多票的解决方案)

如果这没有帮助,您可能需要在此处发布更多代码。你确定这就是你改变的全部吗?

祝你好运!

奥德。

于 2011-05-08T16:59:22.100 回答