0

我正在使用相机设置自定义曝光/iso:

AVCaptureDevice* cd = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
[cd setExposureModeCustomWithDuration:cmtime ISO:iso completionHandler:nil];

这工作正常。但是,在应用程序会话期间,这些自定义设置仍然存在。有没有办法重置捕获设备的曝光/iso 设置?我试过类似的东西:

if([captureDevice lockForConfiguration:&error]){
    [captureDevice setExposureModeCustomWithDuration:captureDevice.activeFormat.minExposureDuration ISO:captureDevice.activeFormat.minISO completionHandler:nil];
    [captureDevice unlockForConfiguration];
}

但这不会将相机重置为默认设置。

4

1 回答 1

0

您可以在自定义之前存储曝光模式

AVCaptureDevice* cd = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

self.defaultExposureMode = cd.exposureMode; // store in some property

if([cd lockForConfiguration:&error]){
    [cd setExposureModeCustomWithDuration:cmtime ISO:iso completionHandler:nil];
    [cd unlockForConfiguration];
}

然后在需要时恢复它

AVCaptureDevice* cd = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if([cd lockForConfiguration:&error]){
    cd.exposureMode = self.defaultExposureMode;
    [cd unlockForConfiguration];
}
于 2020-05-26T05:43:46.333 回答