Найти в Дзене
Обо всем на свете

Бесплатный видеосервер - ZoneMinder

Оглавление

В ходе роста и развития бизнеса мы доросли до того, чтобы обзавестись видеонаблюдением на территории. Нам смонтировали 10 камер и дошло дело до регистратора. Но мы ж любим компьютеры, Linux и бесплатный софт, поэтому начали искать решение, которое объединило бы все это. Ставить обычный видеорегистратор как-то не хотелось, по мне это решение для дома, которое работает из коробки, но абсолютно не гибкое и не масштабируемое.

В нашем сервере еще оставались свободные мощности и мы решили сделать сервер видеонаблюдения (NVR) как у больших. 160 Гб места на жестком диске должно было хватить для тестирования. Вообще мы планировали установить дополнительную дисковую полку и держать 30 дневный архив. Для этого нам надо около 8 Тб свободного места.

В ходе изучения опыта старших товарищей, мы решили, что ZoneMinder нам полностью подходит. Нам требовалась круглосуточная запись со всех камер. Плюс есть дальнейшее желание экспериментов с исходящим видеопотоком. Информацию о всех возможностях программы можете почитать на сайте разработчиков - https://zoneminder.com/

В качестве системы виртуализации на сервере у нас стоит Proxmox. Для NVR было выделено 4 ядра на процессоре, 16 ГБ ОЗУ и 160 Гб на диске (на первое время).

Устанавливаем операционную систему c Apache, MySQL и PHP

Ставим чистый Debian 10 без оболочки. С сайта https://www.debian.org/ качаем минимальный дистрибутив и устанавливаем без рабочего стола.

Рекомендую воспользоваться инструкцией - https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mariadb-php-lamp-stack-on-debian-10

Устанавливаем ZoneMinder

Инструкция на сайте разработчика- https://wiki.zoneminder.com/Debian_10_Buster_with_Zoneminder_1.34.x_from_ZM_Repo

Русификация ZoneMinder

Скачиваем файл с русским языком по данной ссылке - Руссификация.

Заменяем файл ru_ru.php из папки /usr/share/zm/lang на скачанный нами файл

Настройка ZoneMinder

После установки ZM надо его немного настроить. Открываем в браузере - http://ipАдресМашины/zm попадаем в ZoneMinder.

По умолчанию, доступ в ZM осуществляется без пароля, что не очень безопасно, поэтому надо включить аутентификацию. Выбираем в верхнем меню options - system и ставим галочку рядом с OPT_USE_AUTH. Логин: пароль по умолчанию admin:admin. Его можно поменять в разделе Users/Пользователи.

Включаем русский язык - Options - System в поле LANG_DEFAULT выбираем RU-RU. Нажимаем сохранить внизу страницы. При изменении любых параметров они вступят в силу только после того как вы их сохраните.

Обзор ZoneMinder

Главная страница

Главная страница
Главная страница

Верхнее меню

Сервер - страница, где отображаются, подключаются и настраиваются камеры видеонаблюдения.

Опции - страница с настройками.

Журнал - страница с логами, отображаются различные ошибки и события на которые стоит обратить внимание.

Группы - при добавлении камер вы можете их группировать. Когда у вас их 10 - это не нужно, но когда у вас их 300, то логично их как-то объединить.

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

Цикл - показывает изображение с одной камеры, потом с другой и т.д. Смена происходит через определенных интервал.

Общий вид - показывает изображение со всех ваших камер на одной странице.

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

Отчет о событиях аудита - в ZM можно настроить, что бы программа анализировала запись и находила разрывы в записях, если кто-то отключал камеры. На этой странице он будет отображать эти события.

Строка состояния.

Чуть ниже Верхнего меню есть строка с информацией о состоянии сервера.

Строка состояния сервера
Строка состояния сервера

Нагрузка - показывает условную цифру в попугаях нагрузки на сервер. Чем она меньше тем лучше.

DB - состояние базы данных, но что значит 24/151 для меня загадка. Подозреваю, что когда будет 151/151 база будет переполнена.

Хранилище - показывает название хранилища (их можно быть несколько и названия могут быть разные) и сколько места занято в каждом хранилище.

/dev/shm - отображает объем занятой оперативной памяти в %.

Добавление новой камеры

Zoneminder умеет работать как с usb, так и с IP-камерами. Но USB на не интересуют, мы будем настраивать IP-камеры.

ZM может автоматически находить камеры, что очень упрощает их установку и настройку. Для этого камеры должны находиться в той же подсети, что и регистратор.

Нажимаем кнопку "Добавить монитор" (почему ZM называет камеру монитором для меня загадка). В правом верхнем углу нажимаем "Поиск камер ONVIF". ZM не всегда с первого раза может найти все камеры. Пробуйте несколько раз.

Поиск камер
Поиск камер

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

Настройка камеры. Вкладка Общие
Настройка камеры. Вкладка Общие

Окно настройки камеры

Окно имеет 6 вкладок.

Вкладка Общее

Название -пишите название английскими буками. С русскими происходит какая-то проблема - они потом пропадают.

Примечание - тут можно указывать все что вам хочется.

Сервер - имеет смысл, когда у вас ZM разнесен по разным серверам и вы хотите, что бы за эту камеру отвечал конкретный сервер.

Тип источника - для IP камер лучше выбрать FFmpeg.

Функции - это то, в каком режиме у вас будет работать камеры. Наблюдение - просто в режиме просмотра, без записи. Запись при движении и постоянная запись понятно из названия. Постоянная запись с областью детекции - в настройках ZM можно задать область за которой должна будет следить камера, вот они и будет писать только из этой области. Внешние триггеры - это дополнительные датчики, которые можно подключить к камере, и запись будет идти при срабатывании этих датчиков.

Разрешен - ставим галочку.

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

Группы - группировка камер.

Ограничение скорости записи - можно задать что бы ZM писал например со скоростью 15 кадров в секунду, но при этом ваша камера должно уметь писать больше 15 к/с иначе толку от настройки не будет.

Максимальный FPS для тревоги - можно настроить частоту кадров в режиме обычной записи например 5 к/с, а в режиме когда сработала тревога, например по движению, 25 к/с и записать каждый шаг нарушителя вашего спокойствия.

Смещение опорного кадра - пока таинственная для меня настройка.

Триггеры - различные датчики, которые поддерживает камера.

Вкладка "Источник"

Вкладка Источник
Вкладка Источник

На вкладке Источник настраивается параметры подключения к камере. Если вы добавляли камеру через автоматический поиск то все параметры у вас будут заполнены и дополнительно делать ничего не нужно.

Вкладка "Хранилище"

Вкладка Хранилище
Вкладка Хранилище

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

Область хранения - если у вас несколько дисков для хранения информации, то вы можете выбрать на какой диск будет сохраняться запись с камеры.

Сохранить JPEG-и - по умолчанию ZM сохраняет все записи в jpeg файлах. Это быстрее, их можно просматривать сразу в процессе записи, но они занимают существенно больше места чем mpg. Есть несколько вариантов этой настройки. Disabled - запись в JPEG отключена (нужна, когда вы пишете сразу в формате видео). Frames only - пишет только изображение с камеры. Analysis images only - запись делается в отдельных кадрах JPEG с наложением информации анализа обнаружения движения. Frames+ analysis ... - когда пишется 2 файла с анализом движения и без него.

Записывать видео - в этом режиме ZM пишет сразу в видео, оно меньше по размеру, но требует больших процессорных мощностей и его нельзя просматривать в процессе записи. Тут два варианта. X264 - запись видео когда ZM сжимает его сам. H264 Camera Passthrough - это когда запись с камеры уже идет в сжатом виде и дополнительной обработки ZM не требуется.

Необязательные параметры кодировщика - если вы хотите, настроить более конкретно кодирование видео под себя.

Записывать звук - ставите галочку, если хотите писать звук и в камере есть микрофон.

Вкладка "Метка времени"

Вкладка Метка времени
Вкладка Метка времени

Настройка формата, размера и места нахождения метки времени на записи.

В общем-то все довольно понятно на этой вкладке.

Вкладка "Буферы"

Вкладка буферы
Вкладка буферы

Более тонкая настройка буферизации записи. По умолчанию оставляйте как есть.

Вкладка "Разное"

Вкладка Разное
Вкладка Разное

Здесь масса параметров, которые не вошли в предыдущие вкладки, но которые могут быть вам полезны.

Префикс события - то как будут называться записи у вас в регистраторе, например Even-1234

Длина секции - по умолчанию длительность записи 10 минут, но вы можете установить свою продолжительность.

Остальные параметры это более тонкая настройка под себя, пробуйте и выбирайте. Я лишь посоветую установить Масштаб по умолчанию - Scale to Fit. Иначе размер видеозаписи на небольшом экране уйдет далеко за пределы экрана.

Параметры

Рекомендую зайти во вкладку Пользователи и сменить пароль администратора.

Вообще ZoneMinder очень гибкая программа. Настроить в ней можно очень многое. Пробуйте.

В процессе работы нам понадобилось добавить еще одно хранилище и разнести камеры для записи на разные хранилища. И в процессе столкнулись с такой проблемой - новое хранилище переполнялось и не очищалось. Проблема решается редактированием фильтра PurgeWhenFull.
Система просто не знала, что надо очищать и этот диск тоже. Поэтому переходим в Меню Фильтры - выбираем фильтр PurgeWhenFull и добавляем условие, что надо проверять новое хранилище на наличие свободного места.