1 заметка с тегом

time lapse

Снимаем time-lapse видео на Raspberry Pi

12 декабря 2015, 18:43

Сегодня поговорим, как сделать вот такое time-lapse видео.

А сделать его очень просто. Нам потребуется Raspberry Pi, модуль камеры вот такой и как можно больше по объему карту памяти. От объема карты памяти зависит продолжительность полученного видео. Я использовал карту на 8 Гб и снимал с интервалом раз в минуту, свободного места хватило на 3 суток съемки.
Одна из малинок у меня всегда подключена к камере и выполняет роль веб-камеры. На нее установлено Raspbian и RPi-Cam-Web-Interface. О установке последнего рассказывать не буду, т. к. все подробно описано по ссылке выше. Скажу только, что это очень гибкий инструмент с большими возможностями, с помощью которого можно очень просто создать сложные вещи.

Настройка

Определимся с размеров видео, если хотим HD то выставляем Image res. 1280х720 и нажимаем ОК, для FullHD же выставим 1920х1080 px. Следующий немаловажный параметр — это интервал между снимками, я использовал 60 секунд. В итоге получал за сутки 1440 снимков. Остальные настройки оставил по умолчанию.
Для начала записи time-lapse видео необходимо нажать кнопку timelapse start и дождаться терпения, останавливать этой же кнопкой timelapse stop.

Подготовка

После окончания записи нажимаем кнопку Download Videos and Images и выбираем превью с tima-lapse.

Можно собрать видео прямо на малинке, но не советую, т. к. это выйдет очень долго, лучше выкачать фотки на компьютер. Это можно сделать тоже несколькими способами.
Первый, нажать Download, но в этом случае будет создан архив со всеми фотографиями, а это тоже занимает продолжительное время, и к тому же необходимо в 2 раза больше свободного места на карте памяти. Второй, подключиться с помощью любого удобного способа (FTP, SFTP, SSH, USB Flash, ...) к Raspberry Pi и выкачать все фотографии.
После копирования необходимо запустить скрипт для переименовывания фотографий:

#! /usr/bin/env bash
i=0
for file in *.jpg
do
    printf -v counter "%05d" $i
    mv $file photo$counter.jpg
    i=$((i+1))
done

Создание

Собирать видео из полученных фотографий будем с помощью FFmpeg.
С какой частотой кадров в секунду собирать видео? Тут все зависит от общего количества фотографий, картинки, которую вы хотите получить и устройства на котором это видео смотреть.
Все свои фотографии за 3 дня я собрал в видео с 50 кадрами в секунду, пробовал и 30 и 12, но больше всего понравилось 50. А сделать это можно всего одной строчкой:

ffmpeg -r 50 -i photo%05d.jpg -s hd1080 -vcodec libx264 -crf 25 output.mp4

В результате, у меня кодирование 4500 фотографий заняло всего несколько минут, вы получите файл output.mp4. Мой результат можете посмотреть в начале статьи.
Экспериментируйте и делитесь своими результатами.

camera   raspberry pi   time lapse