Давайте напишем программу для создания своих собственных фильмов в технике
Time Lapse. Завораживающее видео, снятое в этой технике с борта МКС, можно посмотреть
здесь, более доступный вариант, который можно повторить с помощью описываемой программы —
здесь.
Программа имеет простой интерфейс и несложный принцип работы:
• пользователь задает периодичность снимков встроенной камерой (например, 10 с) и желаемую частоту кадров генерируемого видео (например, 25 кадров в секунду);
• после нажатия кнопки «Старт» программа каждые 10 секунд делает фотографию и записывает jpg-файл на SD-карту;
• процедура повторяется до нажатия кнопки «Стоп» и «Создать видео», после чего последовательность фотографий превращается в видео файл формата
Motion JPEG, который показывает отснятый материал в 250 раз (25 * 10) быстрее реальной скорости происходивших событий.
В программе два основных класса —
MainActivity, занимающийся взаимодействием с пользователем и накоплением снимков и
MJPEGGenerator, ответственный за превращение последовательности изображений в видео файл.
Класс
MJPEGGenerator, взятый с
code.google.com, был слегка переделан в связи с тем, что в Android Java отсутствует пакет java.awt.
Процедуры работы с камерой были преимущественно взяты из материала
Работа с камерой в Android, где есть хорошее описание примененных решений, проблема «залипаний» камеры после лока/анлока Android-устройства была устранена благодаря
stackoverflow.
Программа была отлажена на планшете Prestigio MultiPad 7.0 Prime под Android 4.0.