Как настроить 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

    iPhone «подсчет» разочарования?

    Частная ключевая подпись, отличная от iOS и MacOSX

    Как получить этот бар в Safari на iOS 6?

    Освобождение мобильного приложения ios, встроенного в Flash Builder 4.5 без сертификата Apple

    Изменение изображения представления UIImage с помощью кнопки

    iPhone, почему не работает UITableView reloadData?

    Как установить статическую ячейку UITableView на пользовательскую высоту?

    Эмулировать панель поиска в приложении «Календарь»

    Использование If-Let и проверка вывода в одной строке

    Совместное использование изображения с расширением share в ios8

    @synthesize «слабого» свойства разрешается только в режиме ARC или GC с первой компиляцией urbanship

    Как использовать действия в SceneKit Editor

    UIControl с прозрачным фоном

    Видеопроигрыватель iOS для HTML5 next / prev

    Центрирование представления в своем супервизоре с использованием языка Visual Format

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