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

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

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

更改预设后,屏幕闪烁可能是由于相机调整曝光造成的。所以看起来在改变预设相机后立即开始以非常快的快门速度测量曝光,这会导致黑/暗帧。

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

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

最佳答案

这是为 future 的用户...
当我将 sessionPreset 设置为 high 时,它​​发生在我身上,一旦我开始录制,我就对视频输出连接进行更改并设置焦点,然后我在设置相机时移动到该焦点并且它起作用了!!!

关于ios - AVCaptureSession 在更改预设后捕获黑/暗帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39229477/

10-09 02:21