Vargus - программа видеонаблюдения, рассчитанная на модульность и расширяемость,
гибкость и применение недорогих компонентов.
В качестве бекенд-движка обработки видео используется VLC и ffmpeg, а
управляющая логика реализована на Perl.

Работа с видеоархивом, оперативный просмотр видеокамер и удаленный просмотр
через медленные интернет-подключения осуществляется через браузер.



Установка и настройка: 

Установите пакет vargus. 

Если к этой машине будет подключаться браузером для оперативного просмотра камер 
или архива, установите так же пакет vargus-web, и включите пользователя apache2 
в группу vargus.

В директорию /etc/vargus поместите конфигурационные файлы для ролей, которые
будут исполняться на этой машине (примеры см. в документации в разделе
examples/obj-style) и объектов (для ваших видеокамер, сетов и видов).

Создайте базу MySQL (на этой машине или на уже имеющемся MySQL-сервере) из шаблона 
vargus.sql в документации, пропишите доступ к базе в конфиги для ролей writer, 
checker, postprocess.

Создайте директорию для хранения видео и укажите её в конфигах для ролей writer,
checker, postprocess.

При желании, все эти действия можно проделать с помощью установочного скрипта 
vargus-simple-setup, но будьте осторожны, если у вас уже есть база данных vargus
или конфигурационные файлы в /etc/vargus, этот установочный скрипт уничтожит их.

Запустите демоны vargus, vargus-informer, и, при необходимости, vargus-events.

Просмотр камер по адресу http://host/vargus/view.php
Работа с архивом по адресу http://host/vargus/archive.php

Если вы используете тревоги или запись чеков, вам нужно включить соответствующие 
модули в веб-интерфейсе. Для этого сделайте в директории  
/var/www/webapps/vargus/modules-enabled/ символьные ссылки на файлы нужных вам 
модулей из /var/www/webapps/vargus/modules-available/.

Если настроены события, то при извлечении видео из архива они встраиваются в виде
субтитров. Для оптимального показа их VLC рекомендуются следующие настройки:
freetype-font=Arial
freetype-fontsize=18
freetype-effect=1
subsdec-align=1
sub-margin=1000
sub-track=0


Использование шаблонов камер:
В ситуации, когда сконфигурировано много однотипных камер, удобно использовать
шаблоны с их описанием. В шаблоне можно описать любые свойства камер, а в
camera.obj.cfg-файле для конкретной камеры подключить этот шаблон и изменить
любые параметры.
Например, создаём в /etc/vargus шаблон для какой нибудь модели камеры, с
именем camera-model.template. Он выглядит как обычный полноценный camera.obj.cfg-файл,
единственное, в нем бесполезно прописывать [main]/name, поскольку это
уникальный параметр. Очень удобно назначить имена камерам по их хостнеймам, и
описать в темплейте URLы в качестве макросов (source=http://(obj-name):8008).
Тогда минимальный конфиг камеры (например cam1.camera.obj.cfg) с включением
шаблона может выглядеть так:
----------------
#& template camera-model.template
[main]
name=cam1
description=My Camera
---------------
и всё.


Установка многосерверной конфигурации:
Несколько серверов Vargus может быть объединено в логический узел (кластер) для
единой точки просмотра камер всех серверов и распределенной пост-обработки
видео. Один сервер в узле назначается главным - с него будет осуществляться
просмотр всех камер, и на нём будет работать центральная база данных для
архивов всех серверов.

Для создания единой точки просмотра нужно на главном сервере, с которого будет
осуществляться просмотр:
- добавить в файл /etc/informer.cfg (если файла нет, создать его) в секцию
  [main] параметр slave-servers с перечислением хостнеймов всех подчиненных
  серверов через запятую;
  Например, у нас есть сервера vsrv1, vsrv2, vsrv3, vsrv4. Допустим, мы хотим
  сделать vsrv1 главным. Тогда мы прописываем на нём такой файл:
  ----------------
  [main]
  slave-servers=vserv2,vsrv3,vsrv4
  ----------------
- убедиться, что подчинённые сервера доступны по используемым хостнеймам;
- внести в файлы наборов камер (/etc/vargus/set*.set.obj.cfg) все необходимые
  камеры со всех серверов.
- установить (если еще нету) на главный сервер пакет vargus-web и
  сконфигурировать автозапуск веб-демона.

Для создания распределенной системы пост-обработки видео нужно:
- убедиться, что на всех серверах настроены правильные хостнеймы (команды
  hostname -f и hostname -s показывают правильные данные);
- сконфигурировать на главном сервере базу данных, принимающую подключения по
  сети (закомментировать или удалить в файле /var/lib/mysql/my.cnf параметр
  skip-networking, рекомендуются так же параметры max_connect_errors=1024,
  max_connections=512, connect_timeout=30);
- на подчинённых серверах в файлах, где прописывается подключение к базе
  данных (в /etc/vargus - *writer, *checker, *postprocess, *cleaner,
  events.cfg, get-archive.cfg) настроить реквизиты доступа к базе данных на
  главном сервере по сети, например:
  ------------------
  sql-host=vserv1
  sql-db=vargus
  sql-user=vargus
  sql-password=mYpa$$W0rd
  ------------------
- выбрать для каждого из серверов уникальное имя хранилища вместо стандартного
  /home/video (например, /home/video-srv1, /home/video-srv2, и т.д.). Создать
  на каждом сервере все директории для хранилищ со всех серверов, убедиться,
  что "родное" для каждого сервера хранилище имеет владельцем пользователя
  vargus;
- установить (если еще не установлены) на каждом сервере пакеты nfs-clients и
  nfs-server (возможно заменить на unfs3), и описать экспорт для "родного"
  хранилища в файле /etc/exports с параметрами
  rw,all_squash,anonuid=UID,anongid=GID, где UID - числовое значение uid
  пользователя vargus на данном сервере, а GID - gid группы vargus (можно
  посмотреть командой id vargus). Включить и запустить сервисы nfs и nfslock.
- прописать на каждом сервере в файл /etc/fstab данные для монтирования
  стораджей со всех серверов. Например:
  -------------------
  vserv2:/home/video-srv2	/home/video-srv2	nfs	soft	0	0
  vserv3:/home/video-srv3	/home/video-srv3	nfs	soft	0	0
  -------------------
  Смонтировать удалённые стораджи.
  Имена источников монтирования и точек монтирования должны совпадать.

Возможный сценарий организации видеонаблюдения:
Есть у нас по зданию штук 40 IP-видеокамер. Мы ставим пару видеосерверов c
vargus'ом, каждый записывает видео с 20 камер на быстрые RAID10 массивы. Если
видео с камер приходит слабосжатым (mpeg4 или mjpeg), оно софтверно
перекодируется в h264. Если такого видео, нуждающегося в обработке, много - мы в
помощь ставим еще пару вспомогательных перекодирующих серверов (например,
бездисковых, грузящихся по сети). 
Так как видеоархив нам надо хранить год, то окончательно сжатые файлы мы отсылаем
на NAS, выполненный на специализировом сервере с RAID6 на 16 дисках.
Оперативное видеонаблюдение осуществляют операторы из службы безопасности на
двух станциях видеонаблюдения, по два монитора каждая.


