У меня есть программа для съемки видео с параметрами по умолчанию, а экспозиция, фокус и баланс белого будут регулироваться автоматически при перемещении камеры. Хочу добавить в программу 2 кнопки: LOCK и PRESET. При нажатии кнопки LOCK экспозиция, фокус и баланс белого фиксируются, а их значения сохраняются как пользовательские настройки. Кнопка PRESET предназначена для установки пользовательских настроек камеры, чтобы убедиться, что мы можем снимать все видео с одинаковыми значениями экспозиции, фокуса и баланса белого.
Часть блокировки проста, мне просто нужно изменить режим, поэтому я хотел бы знать, есть ли способ получить и установить значения для экспозиции, фокуса и баланса белого.
Возьмем, к примеру, экспозицию. По умолчанию для параметра ExposureMode установлено значение AVCaptureExposureModeContinuousAutoExposure. Это означает, что когда я держу iPhone, чтобы снять видео, экспозиция будет регулироваться автоматически, чтобы мы могли четко видеть сцену в яркой или темной среде.
AVCaptureDevice* pCaptureDevice = [self videoDeviceWithPosition:AVCaptureDevicePositionBack];
[pCaptureDevice lockForConfiguration:nil];
[pCaptureDevice setExposureMode:AVCaptureExposureModeContinuousAutoExposure];
[pCaptureDevice unlockForConfiguration];
Когда кнопка LOCK нажата, я изменяю ExposureMode на AVCaptureExposureModeLocked, поэтому текущее значение экспозиции больше не будет изменяться.
[pCaptureDevice lockForConfiguration:nil];
[pCaptureDevice setExposureMode:AVCaptureExposureModeLocked];
[pCaptureDevice unlockForConfiguration];
Однако как мне получить значение экспозиции в тот момент, когда кнопка нажата? И что более важно, как я могу установить значение экспозиции обратно в AVCaptureDevice при нажатии PRESET.
Я искал на форуме и нашел только сообщение Майкла Гринича: Доступ к новым API iOS 6 для экспозиции камеры и скорости затвора. Я последовал его находке и попытался использовать частные API для получения и установки параметров ExposureGain и ExposureDuration, но обнаружил, что в режиме AVCaptureExposureModeContinuousAutoExposure эти два значения никогда не менялись, когда я перемещал камеру из темной среды в яркую (exposureGain = 1,0 и ExposureDuration = {1, 30, 1, 0}). И их установка никак не повлияла на экспозицию.
[pCaptureDevice lockForConfiguration:nil];
[pCaptureDevice setExposureMode:AVCaptureExposureModeLocked];
[pCaptureDevice setManualExposureSupportEnabled:YES];
NSLog(@"exposure gain: %f", [pCaptureDevice exposureGain]);
[pCaptureDevice setExposureGain:3.0];
NSLog(@"exposure gain: %f", [pCaptureDevice exposureGain]);
[pCaptureDevice unlockForConfiguration];
Может ли кто-нибудь помочь мне решить эту проблему? Большое спасибо заранее!