2016-09-15 7 views
2

enter image description hereКак избежать AVCaptureVideoPreviewLayer мигать при изменении AVCaptureOutput

У меня есть бегущие сессии и предварительный просмотр слой, что представлено в моем представлении.

Мне нужно изменить вывод несколько раз в моем приложении среди AVCaptureStillImageOutput, AVCaptureMetadataOutput и AVCaptureVideoDataOutput, в то время как мой просмотр должен выглядеть гладко, не мигая.

Проблема: когда я добавляю вывод к этой сессии, тогда предварительный просмотр мигает (пожалуйста, найдите мой прикрепленный gif).

Конкретная линий вызывает проблему:

self.stillImageOutput = AVCaptureStillImageOutput() 
self.stillImageOutput?.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG] 
if session.canAddOutput(self.stillImageOutput) { 
    session.addOutput(self.stillImageOutput) 
} 

Мой вопрос: Как избежать AVCaptureVideoPreviewLayer мигать при добавлении вывода на текущую сессию?

ответ

0

Я нашел решение для iPhone 6 и выше в этом article, который описывает, как захватить высокое разрешение неподвижных изображений во время видеосъемки:

Новый фонд AV Особенности камеры для iPhone 6 и iPhone 6 Plus

...

..capture full resolution неподвижные изображения без прерывания предварительного просмотра и переконфигурации устройства.

Решение:

Вместо добавления и удаления выходов, я добавляю все выходы к сессии.

Для захвата видео я установил необходимое разрешение (1280x720) на сессии пресета:

session.sessionPreset = AVCaptureSessionPreset1280x720 

Результатом этой линии является то, что активный формат устройства захвата (задняя камера в моем случае) изменен ,

Каждый формат имеет HDSI (высокое разрешение), в котором описаны размеры изображений с высоким разрешением.

Эта функция отключена по умолчанию. Чтобы включить его, вы вызываете AVCaptureStillImageOutput setHighResolutionStillImageOutputEnabled :.

Для принятия высокого разрешения неподвижного изображений флага highResolutionStillImageOutputEnabled должен установить истину:

self.stillImageOutput?.highResolutionStillImageOutputEnabled = true 

для iPhone 6, например, до сих пор разрешение изображения: 3264x1836 и предварительный просмотр камеры не мигает ,