Дома с Ксеомой (Видеонаблюдение и VMWARE ESXi)

Системы видеонаблюдения/видеофиксации сейчас очень популярны. И хотя на рынке их великое множество (https://habrahabr.ru/company/intems/blog/322634/) желание сэкономить, особенно для использования дома или в секторе SOHO, часто приводит к мукам выбора.
В частности у меня были следующие условия для домашнего NVR:


  1. работа серверной части NVR под управлением Linux в виртуальной машине VMWare ESXi;
  2. невысокая требовательность к ресурсам виртуальной машины при подключении 6–8 FullHD H.264 камер;
  3. возможность подключения и управления сервером NVR с Windows компьютера и смартфона (Android);
  4. невысокая стоимость (лучше бесплатно);


1. NVR с возможностью запуска серверной части в среде Linux


  • ZoneMinder (http://zoneminder.com/)
    бесплатно, OpenSource
  • Veyesys Rapidvms (http://www.veyesys.com/)
    бесплатно, OpenSource
  • Xeoma (http://felenasoft.com/ru/)
    до 8 ми камер бесплатно (невозможно использовать бесплатную версию в Linux без графического окружения)
    стоимость лицензии на 1 камеру 875 руб
  • AVReg (www.avreg.net)
    до 4-х камер бесплатно
    стоимость лицензии на 1 камеру 1000 руб
  • Линия (www.devline.ru)
    стоимость лицензии на 1 камеру 1008 руб
  • Trassir (www.dssl.ru)
    стоимость лицензии на 1 камеру 2990 руб
  • Orchid Core VMS (https://www.ipconfigure.com/products/orchid)
    до 4-х камер бесплатно
  • Ivideon (https://ru.ivideon.com)
    до 15 камер бесплатно
    невозможно устновить ivideon-сервер без графического окружения


2. ZoneMinder


Первая система видеонаблюдения, которая проработала чуть больше года и явлалась первым опытом использования систем видеонаблюдения была ZoneMinder. Честно сказать, ZoneMinder достаточно сложен в установке и настройке, но даже не это стало основной проблемой в его использовании. Основная проблема появилась, когда я стал потихоньку заменять старые MJPEG камеры, на H.264-видеокамеры. Не знаю как сейчас, но версия с которой я работал несколько лет назад (1.28) не поддерживала H.264 потоки «из коробки», а то что получалось сделать подключив ffmpeg, хоть и работало, но достаточно сильно нагружало процессор, а качество детектирования движения оставляла желать лучшего. Попросту получалось либо записывать видео с камер почти непрерывно, либо при «загрублении» детектирования движения приходилсоь мириться с пропуском «важных» кадров. Кроме того, видимо из-за бешеной нагрузки на процессор, процессы ffmpeg, декодирующие H.264, падали и часто запись не велась вовсе. Пришлось искать что-то другое.


3. AVReg


В общем, переехал на AVReg. Установка AVReg уже проще, однако все равно далеко не тривиальна. AVReg работал в бесплатном режиме, поэтому из 6ти установленных камер запись производилась только с 4-х, однако запись видеоданных уже была стабильной. AVreg стабильнее, чем ZoneMinder, видеопотоки не «отваливаются». Однако сложность и нетривиальность настроек и «аляповатый» интерфейс немного раздражаал. Качество детектирования движения также оставляло желать лучшего. AVReg записывал очень много, поиск в архиве нужных событий неудобен. В конечном счете как мне сейчас кажется цена лицензии 1000 рублей за одну камеру для этого проекта сильно завышена. Адекватный ценник для AVReg рублей 400 за канал, не больше.


В общем, при работе с указанными выше проектами, было потрачено уйма времени и то, что в итоге получалось, не вызывало восторга. Время от времени, обращаясь к Гуглу за советом, что же еще хорошего имеется по теме NVR для Linux, пришел к выводу что небольшая плата за качественный софт для организации системы видеонаблюдения не такая уж плохая мысль.


4. Xeoma


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


  • Система может работать в ОС Linux (так же как и в Windows, MacOS, Android, iOS и ARM)
  • Серверная часть может быть запущена отдельно от клиентской части (фактически кроме бесплатной версии, которая имеет ограничения на подключению к серверу по сети) в голой консоли.
  • Клиентский интерфейс может подключатся к серверу с любой ОС (Linux, Windows, MacOS, Android, iOS и ARM)
  • Поддержка огромного числа видеокамер.
  • Простая установка и настройка.
  • Управление PTZ.
  • Высококачественный детектор движения.
  • Можно включить и использовать Web-интерфейс для доступа к системе.
  • Большое количество и высокое качество модулей обработки видеопотока.


4.1. Установка XEOMA в виртуальную машину CentOS Linux.


Как я уже писал одним из ключевых условий для использования NVR — это возможность ее запуске в виртуальной среде (VMWare ESXi 6.5 на машине i5–3570 @ 3.40Ghz/RAM 32Gb), причем конечно же очень желательно обеспечить минимизацию потребляемых ресурсов системой.
В связи с этим для начала была создана ВМ с CentOS 7.3, которой были выделены достаточно скромные ресурсы:


  • CPU: 1 ядро
  • RAM: 2Gb
  • HDD1: 20 Gb (система)
  • HDD2: 200 Gb (видеоархив)


4.2. Запуск консольного сервера видеонаблюдения Xeoma


Сервер XEOMA запускается не просто, а предельно просто. Честно сказать я был очень удивлен процессом установки и запуска системы в Linux, особенно после мытарств с ZoneMinder и AVReg.
Тут все просто:


  • устанавливаем Linux в минимальном варианте;
  • выкачиваем нужную версию Xeoma (ссылки здесь: http://felenasoft.com/xeoma/ru/download/)
    wget http://felenasoft.com/xeoma/downloads/xeoma_trial_standard_linux64.tgz
  • распаковываем выкачанный архив;
    tar xzf xeoma_trial_standard_linux64.tgz
  • При необходимости устанавилваем атрибуты для приложения, разрешающие его запуск
    chmod u+x xeoma_trial_standard.app
  • Выясняем пароль администратора, чтобы подключится к серверу, например с рабочей станции Windows;
    ./xeoma_trial_standard.app -showpassword
  • запускаем Xeoma в режиме сервера (пока для проверки в интерактивном режиме):
    ./xeoma_trial_standard.app -core
  • настроить автозапуск Xeoma и выполнение серверной части в виде сервиса (демона) Linux также на удивление просто, нужно вместо предидущей команды выполнить следующую:
    ./xeoma_trial_standard.app -install -hiddenmode


4.3. Запуск клиентского приложения XEOMA


На рабочую станцию (работающей, к примеру, уже под Windows), также необходимо загрузить программный модуль XEOMA по указанной выше странице загрузки и запустить его командой:


xeoma_trial_standard_win64.exe -client

Программа, запущенная в режиме клиента, сама обнаружит xeoma-сервер, подключится к нему (если он находится в той же подсети), предложит на выбор автоматическое сканирование сети или ручной ввод камер. Адрес сервера Xeoma также можно ввести вручную при помощи меню «Удаленный доступ» > «Подключение к удаленному серверу»:


Xeoma remote access menu


Здесь вводим IP-Адрес и пароль доступа, полученный ранее (см раздел 4.2.):
Xeoma remote access dialog


В итоге получаем приблизительно следующую картинку:
Xeoma client


Собственно конфигурирование Xeoma такое же простое и интуитивно понятное как и установка этой системы. Полное руководство приведено на сайте производителя.


4.4. Потребление ресурсов виртуальной машины.


Честно сказать, учитывая то, что Xeoma самостоятельно производит детектирование движения на основании которого производит запись видеопотока, у меня были сомнения в достаточности 1 го ядра для виртуальной машины с запущенным Xeoma-сервером. Однако загрузка едиственного ядра при включенной детекции движения 6ти камерах составляла около 30–40% и оставалась в указанных пределах даже при активности на всех камерах. При отсутствии движения, загрузка опускалась ниже 20%:
CPU LOAD


Средняя HDD Latency при максимальной загрузке составляет 35–50ms, что достаточно много, однако такая задержка соответсвует одновременной записи видеопотока с 5–6 камер. Такая нагрузка случается нечасто, однако все таки стоит для записи видеопотоков выделить отдельный диск, подключив его как RDM-диск:
HDD Latency


Выделенного объема дискового пространства в 200 Гб оказалось достаточно для хранения видеоданных от 6ти HD видеокамер в течении 2х недель:
Xeoma Archive


4.5. Оптимизация настроек Xeoma.


4.5.1. Детектор движения.

В целом настройки детектирования и архива ведеоданных, предлагаемые Xeoma по умолчанию вполне нормально работают без каких либо изменений, однако учитывая ограничения ресурсов виртуальной машины с Xeoma-сервером, и отсутствие необходимости хранения излишней информации все-таки порекомендую сразу внести небольшие изменения в настройке модуля «детектор движения»:
Xeoma Motion Detection
Изменяем порог чуствительности. Нужно немного понаблюдать за показаниями текущего уровня чуствительности при различных изменениях видеокадра и принять решение о минимальном пороге чуствительности. Меня устраивает значение 10, при котором детектор не пропускает никакого движения в камере. Значение же 5, установленное по умолчанию, фактически фиксирует «шум» видеокамер и незначительные изменения освещенности, приводя к большому объему записи в видеоархив.
Изменяем область детектирования. При помощи кисти и режима «стереть» удаляем лишние области, фиксация движения в которых нам не интересно.
Изменяем минимальный размер объекта. Точнее, немного увеличиваем. Размер объекта «по умолчанию», очень мал, что также приводит к ошибочному срабатыванию детектора и избыточной записи кадров, не содержащих ничего полезного.


4.5.2. Просмотр и архив.

Настройки модуля «Просмотр и Архив» также возможно Вам стоит немного откорректировать. Мои настройки например выглядят так:
Xeoma Archive
Предзапись. Я установил 5 секунд, что гарантирует, что за счет буферизации видеопотоков в видеоархив будет записана информация, не только с начала обнаружения движения, но и за пять секунд до него.
Время хранения этого архива. Учитывая что общий доступный объем дискового пространства, выделенного под видеоархив равен 200Гб, 2 недели — оказались оптимальной глубиной хранения.


4.5.3. Настройки декодирования.

Для снижения нагрузки на сервер, при подключении к нему клиентов рекомендуется производить декодирование видеопотоков на клиентах. Для этого стоит установить настройки декодирования как показано на следующем рисунке:
Xeoma decode properties


4.6. Ограничения при использование виртуализации.


На работу Xeoma в виртуальной среде, производителем установлены ограничения, которые могут быть для кого-то критичными. В частности в полной инструкции на систему написано следующее:


Для лицензий Xeoma (Xeoma Standard), Xeoma Pro, перехода с Xeoma Standard на Xeoma Pro и продлений добавлена возможность активации на любых виртуальных машинах. Для этого нужен постоянный доступ в Интернет на виртуальной машине. При пропадании Интернета лицензия может деактивироваться, но восстановится при возобновлении связи с Интернетом.

Работает это следующим образом: При пропадании Интернет, сервер Xeoma на виртуальной машине в течении 2х суток продолжает работать как ни в чем не бывало, записывает архивы, разрешает подключение клиентом, но все это работает до перезапуска сервера.
Если при перезапуске сервер не сможет обратиться через интернет за Активацией лицензии, то продуктивная работа сервера будет прекращена, т.е. данные с камер поступать не будут, архив прекратит записываться. При попытке запустить клиент, вы увидите следующее предупреждение:
Xeoma deactivated
Теперь пока у Вас не появится Интернет Xeomу вы сможете использовать только для просмотра архива. Для этого нажмите кнопку «Продолжить работу».
Однако, после возобновления доступа к Интернет, вас ждет одна неприятность (по крайней мере в последней версии 17.11.24). Несмотря на то, что с возобновлением доступа к Интернет функционал Xeoма заработает в полном объеме, при просмотре информации о Вашей активной лицензии (Меню > Информация > Активные лицензии) вы увидите следующее:
Xeoma No Licenses
Ожидание в течении суток с небольшим, не исправило ситуацию, поэтому мне пришлось повторно ввести код активации лицензии вручную.
Учитывая не совсем понятную логику работы Xeoma, запущенной в виртуальной машине, я могу порекомедовать защитить себя от сброса настроек, которые вы сделали ранее, сохранив их одним из двух способов:


  • С использованием меню в GUI клинета Xeoma: Меню > Установить > Восстановление > Сохранить настройки (или Экспортировать настройки).
  • Сделать копию средствами Linux файла настроек /usr/local/Xeoma/settings.dat


Выводы.


Xeoma очень хорошая система видеорегистрации. Своих денег она безусловно стоит. Это, как было указано выше, 875 рублей за 1 камеру при использовании стандартной лицензии. Для 6ти камер ее использование обойдется около 5000 рублей. Учитывая, то, сколько времени вы потратите на то, чтобы добиться приемлемой работы бесплатных решений — это безусловно невысокая цена.
Хочу отметить превосходную систему обнаружения движения, которая позволяет сохранять и быстро находить все без исключения значимые события, попадающие под ваши видеокамеры, без боязни что-то упустить. За счет этого, для двухнедельной записи с 6ти FullHD-камер достаточно выделить всего 200Гб дискового пространства, тогда как во многих недорогих регистраторах (например на базе CMS), для того, чтобы не пропустить события, приходится включать непрерывную запись, что для той же двухнедельной глубины архива потребует уже порядка 2Тб.

© Habrahabr.ru