Когда возникло желание организовать видеонаблюдение на территории своего участка, я довольно долго и вдумчиво изучал существующее ПО и хочу поделиться результатами исследования.

Требования к программе видеонаблюдения были следующие:

  • локальная установка;
  • работа на Linux;
  • поддержка современных кодеков h264/h265;
  • удобный интерфейс и гибкость настройки;
  • желательно opensource;

К сожалению, большинство программ отпали еще на начальном этапе из-за несоответствия второму пункту (работа на Linux). Поскольку я и дома и на работе уже много лет как полностью перешел на эту ОС, покупать ради видеонаблюдения лицензию Windows совсем не хотелось.

После длительного поиска осталось только два кандидата:

  1. ZoneMinder (http://www.zoneminder.com/)

У меня уже был опыт использования ZM для видеонаблюдения, примерно 2-3 года назад, поэтому я ограничился в этот раз только изучением нововведений за прошедшее время (а их, к сожалению, не так уж много), поэтому могу в чем-то ошибаться, прошу в комментариях поправить в этом случае.

Плюсы:

  • opensource;
  • достаточно продвинутый детектор движения;
  • гибкая настройка;
  • мобильное приложение;
  • веб-интерфейс;

Минусы:

  • не поддерживает из коробки современные кодеки h264/h265, только через предварительную переконвертацию в mjpeg;
  • сложность в настройке (добавление камер и пр.);
  • жадность до ресурсов;
  • некоторая нестабильность в работе (в процессе экспериментов пару раз ядро падало по непонятной причине);

2. Xeoma (https://felenasoft.com/xeoma/ru/)

Плюсы:

  • очень простая первоначальная настройка (но, к слову, дальнейшая тонкая настройка все же требует изучения матчасти, а порой просто подбора значений параметров);
  • поддержка h264/h265 "из коробки" как для потока аналитики, так и для записи в архив;
  • низкие требования к ресурсам (по моим замерам, меньше 10% от одного ядра процессора на камеру при использовании программного детектора движения);
  • большое количество различных детекторов, возможность выстраивать цепочки детекторов, хранилищ, действий - причем, наглядно и удобно;
  • мобильное приложение;
  • железобетонная стабильность;

Минусы:

  • ПО коммерческое, не opensource, хотя и демократичное по цене;

В результате, взвесив все за и против, сделал выбор в пользу Xeoma, хотя и являюсь сторонником свободного ПО. В принципе, цена адекватная (в районе 1000 рублей за камеру), да и разработчики из России, что особенно приятно. Лицензия бессрочная, но через год заканчивается период бесплатных обновлений, дальше снова платить, если хочется иметь свежую версию, хоть и меньше.

В качестве сервера видеонаблюдения я приобрел б/у стоечный сервер HP DL360 G5 с двумя процессорами Xeon за смешную сумму в районе 5000 рублей, причем полностью укомплектованный (советую присмотреться к таким предложениям на барахолках, можно весьма достойную железку отхватить за копейки). Единственная проблема такого решения - сильный шум, поэтому нужно иметь отдельное помещение для установки подобного сервера.

Камеры приобетал на Али, 4-мегапиксельные IP-камеры Dahua IPC-HFW4431R-Z. Качество картинки отличное, поддерживают питание по PoE, прошли испытания зимой на улице (морозы до -30), так что могу рекомендовать к покупке.

Пришлось немного поработать над подбором параметров видеопотоков, в итоге пришел к следующим настройкам для камеры при которых все работает хорошо и не сильно грузит канал и сервер:

Настрока видеопотоков

В целях безопасности, особенно зная, что китайские изделия склонны без спроса передавать данные на свои серверы, камеры живут внутри своей локальной сети на отдельном PoE-свиче без выхода в интернет. Для взаимодействия с внешним миром используется сервер Xeoma внутри OpenVPN сети.

Ну а теперь к самому главному - как пользоваться системой видеонаблюдения, и зачем она вообще нужна. Понятно, что в частном доме никто не будет сидеть и круглосуточно смотреть в камеры, поэтому такая система в основном может быть использована для разбора полетов постфактум и сигнализировании о подозрительной активности (различные детекторы) во время отсутствия дома или в ночное время.

Первое время может быть и интересно посмотреть что там назаписывала система по детектору движения, но это быстро надоедает, т.к. даже в таком случае объем видео существенный.

Для облегчения себе жизни я придумал одну интересную фишку. Помимо записи высококачественного видео в архив, настроил сохранение фото-снимков в низком разрешении с некоторым интервалом (1 кадр в секунду) по детектору движения и каждый день примерно перед приходом с работы, с помощью внешней утилиты mencoder, набор файлов за день превращается в timelapse-видеофайл, который можно просмотреть за пару минут. Он дает полное представление о том, что творилось вокруг дома во время отсутствия и не отнимает много времени. В случае обнаружения подозрительной активности, ищется необходимый фрагмент в основном архиве.

Вот пример скрипта, который формирует видеофайл из набора JPG-картинок, после чего удаляет старые. Запускать его можно с помощью cron.

date=`date +"%Y%m%d_%H%M%N"`
filename_local="/home/levap/VideoServer/Timelapse/101/${date}.avi"
mencoder mf:///home/levap/VideoServer/Pictures/101/*.jpg -mf w=704:h=576:fps=25:type=jpg -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=2000:keyint=15:mbd=2:trell -oac copy -o $filename_local > /dev/null
rm -f /home/levap/VideoServer/Pictures/101/*.jpg

Также, при наличии нескольких камер, можно склеивать видеофайлы матрицей для еще более удобного и быстрого просмотра.

Пример команды объединения видеофайлов в один кадр:

ffmpeg -i 20180920_2000992848711.avi -i 20180921_2000818282348.avi -i 20180922_2000640399923.avi -i 20180923_2000424370320.avi -filter_complex "[0:v][1:v]vstack,pad=iw+10:ih[l]; [2:v][3:v]vstack[r]; [l][r]hstack" output.avi

Ну и напоследок добавлю скриншоты своей стандартной конфигурации для видеокамер, которая выработалась за год использования системы.

Цепочка детекторов
Настройки детектора движения (уличная камера)
Сохранение фото-изображений для дальнейшего формирования timelapse-видео

Дальнейшие идеи, которые можно попробовать реализовать с помощью системы:

  • автоматический видеодомофон - человек подходит к калитке, срабатывает датчик движения, включается монитор с трансляцией видео и звуковой сигналв доме;
  • распознование лиц - замок открывается сам при "узнавании" человека;
  • ночная сигнализация о нарушении периметра;
  • слежение за домашними животными, чтобы не заходили в "запретные" зоны участка - вопрос в том, как передавать на них воздействие, электроошейник как-то негуманно :)

Если у вас есть еще идеи как использовать домашнее видеонаблюдение - буду рад услышать и реализовать, пишите в комментарии!