Tool for merging video files from Xiaomi Xiaofang Smart Camera
Камера Xiaomi Xiaofang Smart Camera - замечательный девайс, который снимает в хорошем качестве и позволяет сохраняться отснятый материал видеонаблюдения на SD карту или сетевое хранилище. Проблема в том, что видеопоток сохраняется в виде множества файлов, каждый из которых длиной в минуту. Это делает крайне неудобным просмотр видео.
Поэтому было решено написать программу, которая бы склеивала видеоматериалы с учётом структуры хранения файлов с камеры за заданный период времени. Кроме того, для беглого просмотра хочется дополнительных функций создания timelapse'ов и алгоритмов обнаружения движения. Такая программа поможет многим пользователям получить инструмент под строго определённую задачу в формате plug-in-play.
Структура файлов следующая. Камера пишет файлы длительностью по 1 минуте с именами 00-59, что соответствует минуте часа. Минутные файлы складываются в папки 00-24 по часам в сутках. Папки по часам складываются в папки с датами YYYY-MM-DD. Папки с датами в папку record, папка record в XiaomiXXXX, где XXXX - часть MAC адреса камеры.
Запись ведётся с частотой 10 кадров в секунду. Режим ИК-подсветки может включаться автоматически.
- Возможность задать корневой каталог с файлами камеры
- Возможность склейки видео за заданный временной интервал
- Возможность построения таймлапса с заданной частотой и временной интервал
- Командострочный и графический интерфейс
- Python
- OpenCV
- Построение списка файлов в хронологическом порядке по заданному корневому каталогу
- Построение списка файлов, попадающих в заданный временной интервал (с точностью до минуты, включительно)
- Обработка ошибок и исключений при составлении списка файлов (нет файлов, не та структура, не тот интервал
- Открытие файлов и чтение их метаданных (длительность, размер и т.д.)
- Оценка размера выходного файла и длительности
- Склейка видео файлов
- Определение видео файлов и определение кадров в них исходя из настроек таймлапса
- Построение таймлапса с заданными параметрами
- Ограничение выходных файлов по размеру и дробление на несколько
- Командрострочный интерфейс
- Графический интерфейс
- Поиск "интересных" моментов на основе change detection (как видео, так и звука) с таймстампами
- Время "остывания интереса" для таких моментов
- Поиск пересечения временных интервалов
- Создание таймлапсов или склееных видео на основе этого
- Многопоточность