AVCaptureSession在更改预设后捕获黑/暗帧

时间:2016-08-30 13:55:08

标签: ios avfoundation avcapturesession

我正在使用AVFoundation开发支持静止图像视频捕获的应用。捕获它们需要不同的AVCaptureSession预设。我检查canSetSessionPreset(),使用beginConfiguration()开始更改,使用sessionPreset设置所需的预设,然后使用commitConfiguration()结束。

我发现如果我在更改预设后立即使用AVCaptureStillImageOutput 捕获静态图像,则不会返回任何错误,但有时会产生黑色或非常暗的图像。

如果我在更改预设后立即开始使用AVCaptureMovieFileOutput 立即捕捉视频,则生成的文件中的前几帧有时也是黑色或非常暗。

更改预设后,屏幕可能会因相机调整曝光而闪烁。因此,在更改预设相机后立即开始从非常快的快门速度开始测量曝光,这会导致黑/暗帧。

如果我在更改预设和开始捕捉之间插入0.1秒的延迟,这两个问题都会消失,但这很难看,没有人能保证它会在所有设备上一直有效。

这个问题有一个干净的解决方案吗?

2 个答案:

答案 0 :(得分:0)

我曾经并且仍然遇到同样的问题。

经过几个小时的搜索,我发现了一个有趣的事情,即将观察者添加到" adjustExposure"关键,但由于我不了解的上下文参数,我无法使其发挥作用。

camera!.addObserver(self, forKeyPath: "adjustingExposure", options: NSKeyValueObservingOptions.new, context: context)

我的解决方法是使用像你这样的短计时器,但那确实很麻烦......

答案 1 :(得分:0)

这是给未来的用户...

当我将 sessionPreset 设置为 high 时发生了这种情况,并且在我开始录制时,我正在更改视频输出连接并设置焦点,然后我在设置时移到相机和它的工作!