AVCaptureDevice's выставлениеДлительность и iso не соблюдается AVCapturePhotoOutput - PullRequest
0 голосов
/ 27 ноября 2018

Проблема: используйте AVCaptureDevice.setExposureModeCustom, чтобы установить быструю «выдержку затвора» (jectionDuration) и высокий ISO, позвоните AVCapturePhotoOutput, чтобы сделать снимок, и посмотрите на полученном изображении, что ExpositionDuration / ISO не используются (даже еслиПрямая трансляция видео показывает, что она использует длительность / ISO путем осветления / затемнения, как и ожидалось)

1 Ответ

0 голосов
/ 27 ноября 2018

Оказывается, что виноват AVCapturePhotoSettings.isAutoStillImageStabilizationEnabled: по умолчанию это правда, а когда истинно длительность экспозиции и настройки ISO можно игнорировать / сбросить .

Решение - установитьзначение false, когда вы используете пользовательскую настройку экспозиции, например:

        // self.customDuration is nil if we're on auto-exposure, non-nil if we are on manual exposure, ie. we called AVCaptureDevice.setExposureModeCustom
        let photoSettings: AVCapturePhotoSettings
        if self.photoOutput.availablePhotoCodecTypes.contains(.hevc), heicSupported {
            photoSettings = AVCapturePhotoSettings(format:
                [AVVideoCodecKey: AVVideoCodecType.hevc])
        } else {
            photoSettings = AVCapturePhotoSettings(format:
                [AVVideoCodecKey: AVVideoCodecType.jpeg])
        }
        // auto still image stabilization destroys our settings for custom exposure (iso, duration), so turn it off if we have any
        photoSettings.isAutoStillImageStabilizationEnabled = self.customDuration == nil ?
            self.photoOutput.isStillImageStabilizationSupported : false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...