AVCaptureSession 暂停?

Posted

技术标签:

【中文标题】AVCaptureSession 暂停?【英文标题】:AVCaptureSession pause? 【发布时间】:2010-09-02 07:28:50 【问题描述】:

在 Apple 发布 ios 4.0 后,我正在使用 AV Foundation 连续捕获图像,遵循以下代码: http://developer.apple.com/iphone/library/qa/qa2010/qa1702.html

但是,当我调用“[session startRunning];”时启动相机预览大约需要 1-2 秒。因此,这让最终用户感到沮丧,因为他需要等待一段时间。

有没有办法暂停会话而不是停止它,因为我可以在程序启动时初始化会话并让它暂停,直到用户导航到相机屏幕并开始在那里运行它?谢谢你的帮助。

【问题讨论】:

【参考方案1】:

您可以禁用输入连接,而不是暂停会话。

例如

<your_video_preview_layer>.connection.enabled = NO;

这样它就不会消耗来自输入设备的数据。

希望这就是你要找的。​​p>

【讨论】:

【参考方案2】:

没有办法“暂停”会话,但您可以随时启动捕获会话并让它继续运行。如果您正在捕获静止图像,只需在准备好时调用 captureStillImageAsynchronouslyFromConnection。如果你正在捕捉视频,你可以让你的 captureOutput:didOutputSampleBuffer:fromConnection: 方法在委托中丢弃帧,直到你想对它们做些什么。您甚至可以在没有输出设备的情况下开始捕获会话,直到您准备好(尚未尝试过)。

【讨论】:

【参考方案3】:

这是我为防止 UI 在调用 -startRunning 时锁定最初的 1-2 秒所做的。

1) Add UIActivityIndicator
2) Add observer to AVCaptureSession
3) call -startRunning in a background thread
4) Resume the UI in the notification callback

【讨论】:

以上是关于AVCaptureSession 暂停?的主要内容,如果未能解决你的问题,请参考以下文章

离开 ViewController 时停止 AVCaptureSession

从后台返回后的 AVCapturesession 处理

使用 AVCaptureSession 录制视频

使用 AVAsset/AVCaptureSession 裁剪视频

只有背景音乐的 AVCaptureSession

CoreML 使用 AVCaptureSession 返回不同的值