立即冻结AVCaptureSession框架

Zep*_*dio 14 iphone avfoundation

我正在构建一个应用程序,允许用户使用iPhone相机拍照,并在可用时使用AVFoundation(iOS4),这样用户即使使用自定义叠加也可以使用点击对焦功能.

我遇到的问题是captureStillImageAsynchronouslyFromConnection需要几秒钟才能完成,在此期间我想对主视频源进行冻结,这样就不会出现视频仍在运行的混乱状态,但用户已经拍摄了一个照片(相机快门声已关闭).

我在请求静态图像捕获后立即尝试调用[session stopRunning],但这会导致无法预测的结果; 在这种情况下,静止图像完成块通常不会被触发.

关于如何在快门被击中后让视频预览图层"暂停"的任何想法?

Eug*_*nyk 18

你只需要设置你的 captureVideoPreviewLayer.connection.enabled = NO;

有关详细信息,请参阅我的答案:

AVCaptureSession暂停?


Ode*_*Dov 5

我正在尝试同样的事情.虽然在我的情况下captureStillImageAsynchronouslyFromConnection需要0.5秒才能返回,所以也许你在完成处理程序中进行一些处理?

如果是这样的话,我想出了两个选项,这两个选项对我来说都不够,但也可能适合你

我想出的是:
*在调用完成处理程序时调用stopRunning(再次,在我的情况下为0.5秒),然后再次处理调用startRunning之后.
*在叠加层顶部有一个UIImageView,并在您进行处理时将相机或视频流中的最后一张照片存储在此imageview中.

从这两个解决方案中劝阻我的是,他们都为这个过程添加了几秒钟.但我希望它有所帮助,或给出方向.

干杯,奥得河.