我正在开发一个应用程序,支持使用AVFoundation捕获静态图像和视频。捕获它们需要不同的AVCaptureSession预设。我通过检查canSetSessionPreset(),开始使用beginConfiguration()更改,使用sessionPreset设置所需预设,并使用commitConfiguration()结束。
如果我在更改预设后立即使用AVCaptureStillImageOutput捕获静态图像,它返回没有错误,但有时结果图像是黑色或非常暗淡的。
如果我在更改预设后立即使用AVCaptureMovieFileOutput捕获视频,结果文件中的前几帧也有时是黑色或非常暗淡的。
在更改预设后立即进行捕获后,屏幕会闪烁,可能是由于相机调整曝光造成的。因此,看起来在更改预设后,相机从非常快的快门速度开始测量曝光,这导致黑色/暗淡的帧。
如果在更改预设和开始捕获之间插入0.1秒延迟,两个问题都会消失,但这很丑陋,并且无法保证在所有设备上始终有效。
有没有解决这个问题的干净方法?
如果我在更改预设后立即使用AVCaptureStillImageOutput捕获静态图像,它返回没有错误,但有时结果图像是黑色或非常暗淡的。
如果我在更改预设后立即使用AVCaptureMovieFileOutput捕获视频,结果文件中的前几帧也有时是黑色或非常暗淡的。
在更改预设后立即进行捕获后,屏幕会闪烁,可能是由于相机调整曝光造成的。因此,看起来在更改预设后,相机从非常快的快门速度开始测量曝光,这导致黑色/暗淡的帧。
如果在更改预设和开始捕获之间插入0.1秒延迟,两个问题都会消失,但这很丑陋,并且无法保证在所有设备上始终有效。
有没有解决这个问题的干净方法?