/**
// 表示曝光应锁定在其当前值。
AVCaptureExposureModeLocked = 0,
// 指示设备应自动调整曝光一次,然后改变曝光模式 AVCaptureExposureModeLocked
AVCaptureExposureModeAutoExpose = 1,
// 指示设备在需要时自动调整曝光量。
AVCaptureExposureModeContinuousAutoExposure = 2,
// 表示设备应根据用户提供的ISO调整曝光值,早期。
AVCaptureExposureModeCustom NS_ENUM_AVAILABLE_IOS(8_0) = 3,
======================== AVCaptureExposureDurationCurrent
一个特殊的值,可以作为setexposuremodecustomwithduration时间参数传递:ISO:completionhandler:到
表明调用者不希望指定的早期属性的值,它应该被设置为它的
电流值。值得注意的是,该装置可以在通话时间调整的早期,在这种情况下,它的价值
早期设置可能不同于早期的财产查询得到的值。
======================== AVCaptureISOCurrent
一个特殊的值,可以作为setexposuremodecustomwithduration ISO参数传递:ISO:completionhandler:指示
该调用方不希望为该等属性指定一个值,并且它应该被设置为它的当前值。请注意
设备可以在调用时调整国际标准,在这种情况下,国际标准化组织的值可能与查询所获得的值不同
异属性。
对于ISO(感光度)
self.videoDeviceInput.device.activeFormat.maxISO = 736
self.videoDeviceInput.device.activeFormat.minISO = 46;
对于曝光时间(ExposureDuration)
@typedef CMTime
@abstract 时间 int64/int32.
typedef struct
{
CMTimeValue value; 字段值 value/timescale = seconds.
CMTimeScale timescale; 时间表
CMTimeFlags flags;
CMTimeEpoch epoch;
} CMTime;
self.videoDeviceInput.device.activeFormat.maxExposureDuration =
(1, 1, 1, 0d); ------> 1.000000
self.videoDeviceInput.device.activeFormat.minExposureDuration =
(18, 1000000, 1, 0d); ------> 0.000018
A:在Objective-C转换CMTime以人类可读的时间
CMTime duration = self.videoDeviceInput.device.activeFormat.minExposureDuration;
float durationFloat = CMTimeGetSeconds(duration);
B:把float转换成CMTime
CMTime mTime = CMTimeMake(floatValue, 1000000)
// 自动获取
8333000, 1000000000, 1, 0d ------> 0.008333
41666000, 1000000000, 1, 0d ------> 0.041666
33333000, 1000000000, 1, 0d ------> 0.033333
曝光补偿: (-8.0 ~ 8.0)通过设置曝光补偿 (compensation) 修改自动曝光,也就是曝光档位的目标偏移。目标偏移在曝光档数里有讲到,它的范围在 minExposureTargetBias 与 maxExposureTargetBias 之间,0为默认值 (即没有“补偿”)。
曝光偏移: (-8.0 ~ 8.0) 这个属性只能读取不能修改 指示测量的曝光水平与当前场景和目标的曝光值之间的差异。
曝光时间: (1 ~ 18)activeformat.minexposureduration和activeformat.maxexposureduration之间只有曝光时间值的支持
感光度 : (46~736)此属性控制传感器的灵敏度,通过一个增益值施加到信号灯。只有等值的值
activeformat.miniso和activeformat.maxiso之间的支持。较高的值会导致噪声图像。
*/