2015-12-14 4 views
0

Я в настоящее время ищу способ создания «живых фотографий» в iOS, но с использованием видео. Цель состоит в том, чтобы хранить приложение на несколько секунд до начала видео. Я думаю, что круговой буфер будет хорошо служить здесь, но большинство библиотек, которые я видел, предназначены только для аудио. Учитывая, что функциональность живых фотографий является эксклюзивной для iPhone 6S, мне интересно, возможна ли такая функциональность на устройстве с равным объемом оперативной памяти, например iPad Air 2 или устройстве с меньшей оперативной памятью, например iPhone 6Можно ли использовать круговой буфер для видеокадров на iOS?

ответ

1

Теоретически, можно было бы хранить и воспроизводить видео, но на практике вы обнаружите, что вряд ли он действительно работает для полноэкранного видео с быстрой скоростью FPS, например, 30 FPS. Проблема заключается в общем объеме памяти, используемой для видео. Каждый пиксель представляет собой 32 бита данных (RGBX), каждый пиксель в основном представляет собой слово, и вам нужно умножить W x H, чтобы выяснить, насколько велика эта величина для данного разрешения камеры. Короче говоря, для очень больших W и H слишком много данных для процессора и шины памяти, чтобы идти в ногу с чтением и записью. Теперь у iOS-устройств есть аппаратное обеспечение, помогающее с этой задачей, например, вы можете кодировать фильмы с помощью встроенного оборудования, но это, вероятно, будет единственным способом, которым вы сможете заставить его работать при работе с очень большими значениями W x H и быстрая частота кадров. Вы также должны быть осторожны с пропорциями, потому что ваша камера, скорее всего, будет снимать изображения в пропорциях, которые не поддерживают аппаратное кодирование h.264.

+0

Я думаю, что это был консенсус между моими коллегами. Они беспокоились о памяти. Мне было интересно, возможно ли VGA. Другое дело, что если мы отправляем только кадры в буфер, и видео записывается с использованием функциональных возможностей, предлагаемых API-интерфейсом Apple, как мы консолидируем предварительно захваченные кадры? – IBG

+0

При использовании памяти вы можете легко вычислить общий объем памяти с помощью калькулятора и некоторых ручных вычислений. Я написал сообщение в блоге об этом конкретном предмете, связанном с этим ответом: http://stackoverflow.com/a/18136428/763355 – MoDJ

+0

Это отличный ресурс. Благодарю. В настоящее время я смотрю AVAsset и AVAssetWriter. Во время нашей очередной встречи мои коллеги согласились с тем, что подавление кругового буфера для видео бессмысленно, поскольку оно вызывает больше проблем, чем решений. – IBG

1

Давным-давно я работал над автомобильным видеорегистратором/dashcam для iOS. Необходимо было сохранить до 30 минут последнего видео, и его, очевидно, было невозможно сохранить в ОЗУ.

Задача была решена путем записи видео в файл до требуемой длины, затем записи во второй файл, затем снова переключения на первый (перезаписать) и т. Д. С таким процессом я смог вырезать & клеем последние тридцать минут из этих двух файлов в любой момент времени.

Как я помню, проблем с производительностью не было.

Возможно, этот подход будет вам полезен.

Смежные вопросы