Как настроить AVCaptureSession для высококачественных фотографий и низкого разрешения (видео)?

Я хотел бы захватить неподвижные изображения с высоким разрешением, используя AVCaptureSession . Поэтому AVCaptureSession предустановки AVCaptureSession установлено значение « Photo .

Пока это хорошо работает. На iPhone 4 окончательное разрешение неподвижного изображения составляет максимально 2448×3264 пикселей, а разрешение предварительного просмотра (видео) – 852 × 640 пикселей.

Теперь, поскольку кадры предварительного просмотра анализируются для обнаружения объектов в сцене, я хотел бы снизить их разрешение. Как это может быть сделано? Я попытался установить AVVideoSettings с меньшей шириной / высотой в AVCaptureVideoDataOutput , но это приводит к следующему сообщению об ошибке:

 AVCaptureVideoDataOutput setVideoSettings:] - videoSettings dictionary contains one or more unsupported (ignored) keys: (AVVideoHeightKey, AVVideoWidthKey 

Таким образом, кажется, что это неправильный подход для настройки размера кадров предварительного просмотра, полученных AVCaptureVideoDataOutput / AVCaptureVideoDataOutputSampleBufferDelegate . У вас есть идеи, как можно настроить разрешение кадров предварительного просмотра?

Любые советы приветствуются, спасибо.

    3 Solutions collect form web for “Как настроить AVCaptureSession для высококачественных фотографий и низкого разрешения (видео)?”

    Если вы хотите указать параметры вручную, вам нужно установить activeFormat на AVCaptureDevice . Это будет неявно задано для предварительной настройки сеанса AVCaptureSessionPresetInputPriority .

    activeFormat принимает AVCaptureDeviceFormat но вы можете взять его только из списка AVCaptureDevice.formats . Вам нужно будет пройти через список и найти тот, который соответствует вашим потребностям. В частности, убедитесь, что highResolutionStillImageDimensions достаточно высока для желаемого захвата и formatDescription (который должен быть проверен с CMFormatDescription* функций CMFormatDescription* , например CMVideoFormatDescriptionGetDimensions ) соответствует вашим желаемым параметрам предварительного просмотра.

    Только для записей: я закончил настройку AVCaptureSession в предустановленном Low , нацелив камеру. Как только срабатывает затвор, приложение переключается на предустановленную Photo , выполняет фокусировку и снимает изображение. Этот способ занимает от 1 до 2,5 секунд, чтобы сделать снимок, что не так уж и велико, но это, по крайней мере, обходной путь.

    Чтобы уменьшить размер вывода AVCaptureVideoDataOutput вы можете установить, что AVCaptureVideoDataOutput будет ниже, тем самым создавая небольшой размер выборки.

    Обычно используемые ключи для AVCaptureVideoDataOutput :

     AVVideoAverageBitRateKey AVVideoProfileLevelKey AVVideoExpectedSourceFrameRateKey AVVideoMaxKeyFrameIntervalKey 

    Например:

     private static let videoCompressionOptionsMedium = [AVVideoAverageBitRateKey : 1750000, AVVideoProfileLevelKey : AVVideoProfileLevelH264BaselineAutoLevel, AVVideoExpectedSourceFrameRateKey : Int(30), AVVideoMaxKeyFrameIntervalKey : Int(30)] 
    Interesting Posts

    Проблема с UIPopoverController presentPopoverFromRect

    Как я могу разрешить приложение Cordova 6.1 встраивать iframe в iOS с веб-сайта?

    Создание и запуск Ionic iOS

    Отключить автозавершение кандзи (henkan) для японских клавиатур в iOS?

    `реакция-native run-ios` завершается с ошибкой (проблемы с PCH), но сборка выполняется в xcode

    UIScrollView с изображениями

    iOS UI-Test имитирует (меняет) местоположение

    Как правильно UITest приложение с UIImagePickerController (или любой другой родной VC)

    Информация о сборке в приложении iOS (приложение даты / времени было создано)

    Пробел между строками UICollectionViewCell

    Динамически получать высоту строки в UITableViewCell с несколькими наконечниками

    Отправить весь трафик через VPN-соединение Swift

    NSMutableURLRequest заменил «+» на пробел

    Идентификатор рекламы и идентификаторForVendor возвращают «00000000-0000-0000-0000-000000000000»,

    Досягаемость, работающая на симуляторе, но не на устройстве

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.