Дата написания: февраль 2023 г.
Автор: Graf

Сервер видеонаблюдения на базе ZoneMinder


Перед добавлением камер обязательно настраиваем аутентификацию, задаем пароль пользователю с правами админа, перезапускаем ZoneMinder и перезаходим под пользователем с правами админа, только потом добавляем камеры!

Установка

Используем Slackware Linux 15.0 64-bit без DE и всем, что с ними связанно.
Обновляем все доступные пакеты посредством slackpkg, в итоге получая ядро 5.15.80.
IP сервера куда всё устанавливаем и где настраиваем - 192.168.10.125
ZoneMinder версии 1.36.32

ffmpeg используем стоковый, идущий с дистрибутивом.

Устанавливаем vlc плеер от Alien, последний на день написания статьи 3.0.17.4.

# wget http://www.slackware.com/~alien/slackbuilds/vlc/pkg64/15.0/vlc-3.0.17.4-x86_64-1alien.txz
# upgradepkg --install-new ./vlc-3.0.17.4-x86_64-1alien.txz

Устанавливаем sbopkg, синхронизируемся с его репозиторием попутно соглашаясь с созданием отсутствующих каталогов. И устанавливаем необходимое.

# wget https://github.com/sbopkg/sbopkg/releases/download/0.38.2/sbopkg-0.38.2-noarch-1_wsr.tgz
# upgradepkg --install-new ./sbopkg-0.38.2-noarch-1_wsr.tgz
# sbopkg -r
# sbopkg -Bi "libjwt php-apcu"

Устанавливаем недостающие модули Perl.

# cpan Date::Manip LWP::UserAgent Sys::Mmap Sys::MemInfo Number::Bytes::Human Crypt::Eksblowfish::Bcrypt Data::Entropy::Algorithms

Собираем и устанавливаем сам ZoneMinder.
Смотрим релиз в https://github.com/ZoneMinder/zoneminder/releases
на сегодня это 1.36.32. Начинаем собирать и устанавливать пакет.

# git clone https://github.com/ZoneMinder/ZoneMinder.git
# cd ./ZoneMinder/
# git checkout 1.36.32
# git submodule update --init --recursive
# cmake -Wno-dev \ 
-DCMAKE_INSTALL_PREFIX=/usr \
-DZM_WEBDIR=/var/www/htdocs/zm \
-DZM_WEB_GROUP=apache \
-DZM_WEB_USER=apache \
-DZM_CGIDIR=/var/www/cgi-bin \
-DZM_CACHEDIR=/var/www/htdocs/zm/cache \
-DZM_CONTENTDIR=/var/www/htdocs/zm \
-DZM_CONFIG_DIR=/etc/zm \
-DZM_PATH_ZMS=/var/www/cgi-bin/nph-zms \
-DLIBJWT_INCLUDE_DIR=/usr/include \
-DLIBJWT_LIBRARY=/usr/lib64/libjwt.so \
# make
# make install DESTDIR=/tmp/ZoneMinder-1.36.32
# cd /tmp/ZoneMinder-1.36.32
# makepkg -l y -c n /tmp/ZoneMinder-1.36.32-x86_64-1.txz
# upgradepkg --install-new /tmp/ZoneMinder-1.36.32-x86_64-1.txz

Скачаем zm_1.36.32_indexphp.tar распакуем и заменим файл /var/www/htdocs/zm/index.php на файл из архива.
Файл взят с версии 1.36.26. При использовании родного index.php, во время добавления серверов, мониторов и прочего, вываливается ошибка:

web_php[1188].ERR [actions can no longer be performed without POST. Requested: save for server] at index.php line 200
web_php[1188].FAT [View 'server' does not exist] at index.php line 281

Создадим недостающие каталоги и дадим соответствующие права.

# mkdir -p /var/{run/zm,log/zm,www/htdocs/zm/{events,images,sounds,cache}}
# chown -R apache:apache /var/{run/zm,log/zm,www/htdocs/zm}

Скопируем скрипт старта-остановки и присвоим ему бит запуска.

# cp scripts/zm /etc/rc.d/rc.zm
# chmod +x /etc/rc.d/rc.zm

И, для автостарта при загрузке, пропишем в /etc/rc.d/rc.local

/etc/rc.d/rc.zm start

Всё необходимое поставили, перейдем к настройке.

Настройка

  • MySQL (MariaDB)

Так как MySQL (MariaDB) в Slackware Linux уже установлена, просто настроим ее и дадим пароль пользователю root

# mkdir /var/lib/mysql/mysql
# mysql_install_db
# chown -R mysql.mysql /var/lib/mysql
# chmod +x /etc/rc.d/rc.mysqld
# /etc/rc.d/rc.mysqld start
# mysql -u root
   MariaDB [(none)]> set password for 'root'@'localhost' = password('mypassword');
   Query OK, 0 rows affected (0.00 sec)
 
   MariaDB [(none)]> FLUSH PRIVILEGES;
   Query OK, 0 rows affected (0.00 sec)

   MariaDB [(none)]> \q
   Bye

Войдем под пользователем root, создадим базу ZoneMinder, для работы с базой дадим соответствующие права пользователю zmuser.

# mysql -u root -p
   Enter password: 
   MariaDB [(none)]> source /usr/share/zoneminder/db/zm_create.sql;
   …
   Query OK, 1 row affected (0.00 sec)
   Query OK, 1 row affected (0.00 sec)

   MariaDB [(none)]> use zm;
   
   Database changed
   MariaDB [zm]> 

   MariaDB [zm]> grant all privileges on zm.* to 'zmuser'@localhost identified by 'zmpass';
   Query OK, 0 rows affected (0.00 sec)

   MariaDB [zm]> FLUSH PRIVILEGES;
   Query OK, 0 rows affected (0.00 sec)

   MariaDB [zm]> \q
   Bye
  • Apache

Редактируем /etc/httpd/httpd.conf.

# Убираем знаки комментария со строк:
LoadModule cgid_module lib64/httpd/modules/mod_cgid.so
LoadModule cgi_module lib64/httpd/modules/mod_cgi.so
LoadModule rewrite_module lib64/httpd/modules/mod_rewrite.so
Include /etc/httpd/mod_php.conf

# Дописываем.
#
# В данном случае, если нет FQDN, значение ServerName для работы в локальной сети.
ServerName 127.0.0.1

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

Include /etc/httpd/extra/zm_httpd.conf

Создаем файл /etc/httpd/extra/zm_httpd.conf со содержимым:

<VirtualHost *:80>
    ServerName video-server.mydom.lan
    ServerAlias 192.168.10.125
 
    DocumentRoot /var/www/htdocs/zm
 
    ScriptAlias /cgi-bin /var/www/cgi-bin
    <Directory /var/www/cgi-bin>
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        AllowOverride None
        Require all granted
    </Directory>
 
    Alias /cache /var/www/htdocs/zm/cache
    <Directory /var/www/htdocs/zm/cache>
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
 
    <Directory /var/www/htdocs/zm>
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
        DirectoryIndex index.php
    </Directory>
 
    <Directory /var/www/htdocs/zm/api>
        RewriteEngine On
        RewriteRule ^$ app/webroot/ [L]
        RewriteRule (.*) app/webroot/$1 [L]
        RewriteBase /api
 
    </Directory>
        <Directory /var/www/htdocs/zm/api/app>
        RewriteEngine On
        RewriteRule ^$ webroot/ [L]
        RewriteRule (.*) webroot/$1 [L]
        RewriteBase /api
    </Directory>
 
    <Directory /var/www/htdocs/zm/api/app/webroot>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
        RewriteBase /api
    </Directory>
 
    ErrorLog "/var/log/zm/zm_error_log"
    CustomLog "/var/log/zm/zm_access_log" common
 
</VirtualHost>

Запускаем Apache и ZM.

# chmod +x /etc/rc.d/rc.httpd
# /etc/rc.d/rc.httpd start
# /etc/rc.d/rc.zm start

Проверяем работоспособность API:

http://192.168.10.125/api/host/getVersion.json — должны увидеть

{"version":"1.36.32","apiversion":"2.0"}

И донастраиваем ZoneMinder в веб-интерфейсе по адресу: http://192.168.10.125

Русификация

Архив ru-ru-php_1.36.tar содержит 1 файл - ru_ru.php, в котором перевод интерфейса, описание параметров и помощи по ним.

Заменяем файл ru_ru.php в zm/lang файлом из архива, не забыв сделать копию оригинала.
Затем, заходим в веб-интерфейс и устанавливаем язык и локаль. Options → System

Всё, ZoneMinder русифицирован процентов на 95 :)
Перевод опций и помощи по ним, выполнен мной единолично, поэтому весьма вероятны не точности и ошибки. Пишите на форуме в специальной ветке обсуждения данной статьи, постараюсь своевременно их исправлять.

Обновление

Если есть старый рабочий ZoneMinder сервер , допустим 1.30.0 , то перед обновлением нужно сделать полную копию его базы:

# mysqldump -u root -p zm > zm-all-1300.sql

Полученный файл перенести на вновь установленную Slackware Linux 15.0 и ZoneMinder, по данной статье. Остановить ZoneMinder и Apache:

# /etc/rc.d/rc.zm stop
# /etc/rc.d/rc.httpd stop

Cкопировать кадры записей из /var/www/htdocs/zm/events

Если обновление делается на той же машине, то после полной копии базы, соблюдая версию Slackware Linux, обновить все необходимые пакеты - ffmpeg, vlc и весь список в sbopkg, собрать и обновить ZoneMinder.

«Подсунуть» данный файл мускулу:

# mysql -u root -p zm < /путь/до/файла/zm-all-1300.sql

или

# mysql -u root -p
   MariaDB [(none)]> use zm;
   MariaDB [zm]> source /путь/до/файла/zm-all-1300.sql;
   MariaDB [zm]> \q

и обновить базу

# zmupdate.pl

ответить на вопросы и получить базу равную 1.36.32 (на день написания статьи).

Обновить конфигурацию в базе данных.

# zmupdate.pl -f

Запустить Apache, ZoneMinder и проверить работоспособность.

# /etc/rc.d/rc.httpd start
# /etc/rc.d/rc.zm start

Заметки

Пользователи

Вновь хочу напомнить, что перед добавлением камер, включите аутентификацию, хеширование, API и TimeZone.
Всё это настраивается в «Параметры» → «Система». И настройте пользователя admin в «Параметры» → «Пользователи».


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

Камеры

Очередной раз напоминаю, перед добавлением камер, включите Аутентификацию.
После чего, заходим в «Параметры»→«Серверы». Здесь можно настроить нескольких серверов ZoneMinder, имеющих общую базу данных и использующих общий файловый ресурс для всех данных о событиях.
Один из вариантов использования данной вкладки, это обход ограничения браузеров в которых, при общем просмотре камер в прямой трансляции, показывается только 5-6 камер.
Т.е. используя один физический сервер (например: vm.mydom.ru) можно указать на него несколько поддоменов (например: vm1.mydom.ru, vm2.mydom.ru и т.д), путём настройки DNS.
А эти поддомены использовать в данной вкладке, как отдельные серверы. Причём, в таком случае, изменится только адрес сервера и его название.
Ну, и так как у нас всего один сервер без доменного имени, а только с IP-адресом, то его и добавляем нажав на кнопку «Добавить сервер».


Обратите внимание на пути! Они прописаны с учётом Настроек Apache. Т.е относительно пути в DocumentRoot и ScriptAlias для cgi-bin.
Название сервера может быть произвольным, латинскими буквами и цифрами.
Сохраняем настройки сервера и переходим к добавлению камер на главной странице или через меню «Сервер».
Нажимаем на «Добавить монитор» и попадаем во вкладку «Общие».

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


Где:

  • Название - Название монитора. Оно должно состоять только из буквенно-цифровых символов латинского алфавита (a-z,A-Z,0-9), дефиса (-) и подчеркивания (_). Пробелы не допускаются;
  • Примечания - Всё, что угодно, но исключительно латиницей;
  • Сервер - Список из серверов настроенных в «Параметры»→«Серверы»;
  • Тип источника - Определяет, является ли камера локальной, подключенной к физическому видео- или USB-порту на компьютере, удаленной сетевой камерой или источником изображения, представленным файлом (например, периодически загружаемым из альтернативного места). Выбор того или иного варианта влияет на то, какой набор опций отображается на вкладке "Источник";
  • Режим - может принимать одно из следующих значений:

Не выбран (None) - монитор в настоящее время отключен. Никакие потоки не могут быть просмотрены или сгенерированы события. Ничего не записывается.
Наблюдение (Monitor) - монитор доступен только для потокового вещания. Анализ изображения не производится, поэтому не генерируются сигналы тревоги или события, и ничего не записывается.
Запись при движении (Modect) - или MOtion DEteCTtion. Все захваченные изображения будут проанализированы, а при обнаружении движения будут сгенерированы события с записью видео.
Постоянная запись (Record) - монитор будет непрерывно записываться. События фиксированной длины будут генерироваться независимо от движения, аналогично обычному видеомагнитофону с временной задержкой. В этом режиме не происходит обнаружения движения.
Постоянная запись с обл. детекции (Mocord) - монитор будет вести непрерывную запись, при этом любое движение будет выделено в событиях.
Внешние триггеры (Nodect) - или No DEteCTtion. Это специальный режим, предназначенный для использования с внешними триггерами. В режиме Nodect не происходит обнаружения движения, но события записываются, если этого требуют внешние триггеры.
Если установлен режим отличный от Не выбран (None) и Наблюдение (Monitor), то появляются опции:

  1. Analysis Enabled - В режимах: «Запись при движении» (Modect), «Постоянная запись» (Record), «Постоянная запись с обл. детекции» (Mocord), «Внешние триггеры» (Nodect), процесс анализа может быть включен или выключен. Эта опция устанавливает состояние по умолчанию при запуске процесса. После запуска процесса эту опцию можно включить или выключить с помощью внешних триггеров zmtrigger, zmu или веб-интерфейса. Если опция не включена, то не будет выполняться обнаружение движения или проверка связанного монитора и не будут создаваться события.
  2. Decoding Enabled - В режиме «Постоянная запись» (Record) или «Внешние триггеры» (Nodect) и при использовании H264Passthrough без сохранения jpeg, есть возможность отключить декодирование пакетов H264/H265. Это значительно снизит потребление процессора, но сделает недоступным просмотр в реальном времени для текущего монитора. По умолчанию включено.
  • Привязанные мониторы - Позволяет выбрать другие мониторы в системе, которые действуют как триггеры для текущего монитора. Например, если у вас есть камера, охватывающая один аспект вашей собственности, вы можете заставить все камеры вести запись, пока эта камера обнаруживает движение или другие события. Для выбора связанных мониторов кликните на поле ввода рядом. Будьте очень осторожны, чтобы не создать круговые зависимости с помощью этой функции. Потому-что у вас появятся бесконечно сохраняющиеся сигналы тревоги. Чтобы связать несколько мониторов одновременно, при нажатой клавише «ctrl», кликните левой кнопкой мыши по нужным мониторам;
  • Группы - Отображается список групп в которые входит текущий монитор. Список формируется в основном меню, пункт «Группы»;
  • Частота анализа (к/с) - Для выполнения захвата движения и анализа, входящий видеопоток с камеры разбивается на отдельные кадры. И, если производить анализ со скоростью потока, то нагрузка на процессор будет колоссальной. Для снижения нагрузки на процессор, для анализа передаётся поток с пониженной частотой кадров, которая указывается в данном поле. Естественно, частота анализа не может превышать частоту потока;
  • Максимальная частота кадров - В случаях, когда у вас есть одна или несколько камер, способных обеспечить высокую скорость захвата, вы обнаружите, что вам не требуется такая производительность постоянно и вы предпочли бы снизить нагрузку на сервер, эта опция позволит ограничить максимальную скорость захвата заданным значением. Это даст возможность поддерживать больше камер в системе за счет снижения нагрузки на процессор или неравномерно распределять пропускную способность видео между камерами, использующими одно и то же видеоустройство. Значение, указанное здесь, является приблизительным и чем оно ниже, тем меньше приближается к нему фактическая скорость, особенно на общих устройствах, где может быть трудно точно синхронизировать две или более различных скоростей захвата. Эта опция контролирует максимальное значение частоты только в том случае, если не происходит тревоги и она будет работать только с локальными или удалёнными IP-камерами в режиме моментального снимка или jpeg. Для потоковых IP-камер не используйте данную функцию для уменьшения частоты кадров. Вместо этого установите частоту кадров в камере. В прошлом рекомендовалось устанавливать значение, превышающее частоту кадров камеры, но теперь в этом нет необходимости и это плохая идея.
    Если вы не знаете, что делать, оставьте это поле пустым, особенно, при настройке сетевых камер. Чаще всего, установка какого-либо значения здесь, отрицательно сказывается на записи;
  • Максимальная частота кадров для тревоги - Если не хотите, что бы применялось ограничение, указанное в параметре «Максимальная частота кадров», во время, когда монитор записывает движение или другое событие, то этот параметр позволяет его отменить. Если установлено значение в параметре «Максимальная частота кадров», то при возникновении тревоги это ограничение будет игнорироваться, и ZoneMinder будет вести запись с максимально возможной скоростью в течение всего времени тревоги, возвращаясь к ограниченному значению после ее окончания. В равной степени вы можете установить такое же или более высокое (или даже более низкое) значение, чем в параметре «Максимальная частота кадров», для более точного контроля над скоростью захвата в случае тревоги.
    Если вы не знаете, что делать, оставьте это поле пустым, особенно, при настройке сетевых камер. Чаще всего, установка какого-либо значения здесь, отрицательно сказывается на записи;
  • Смещение опорного кадра - Каждое анализируемое изображение является составным из предыдущих изображений и формируется путем применения текущего изображения как определенного процента от предыдущего, эталонного изображения. Т.е., если указать здесь значение 10, доля каждого изображения в опорном изображении будет уменьшаться с каждым разом на коэффициент 0,9. Таким образом, типичное эталонное изображение будет составлять 10% от предыдущего, 9% от предыдущего и затем 8,1%, 7,2%, 6,5% и так далее по всему пути. Фактически, изображение исчезнет, примерно, на 25 изображений позже, чем когда оно было добавлено. В этом параметре указывается значение смешивания и если оно большое, то медленно прогрессирующие события будут менее заметны, так как эталонное изображение будет меняться быстрее. Аналогичные события будут считаться закончившимися гораздо раньше, так как опорное изображение быстрее адаптируется к новым изображениям. С точки зрения обработки сигнала, чем выше это значение, тем круче атака события и затухание сигнала. Подходящее значение зависит от конкретных требований. Начните с 10 и при необходимости скорректируйте его (обычно в меньшую сторону);
  • Смещение опорного кадра тревоги - То же самое, что и параметр «Смещение опорного кадра», только для кадров событий.

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

Тип источника "Локальный"


Используется, если камеры физически подключены к серверу ZoneMinder.
  • Путь к устройству - Полный путь к файлу устройства, к которому подключена камера, например, /dev/video0;
  • Метод захвата - Выбор версии набора драйверов устройств и API для поддержки захвата видео в реальном времени в системах Linux. Предлагается два варианта, Video For Linux Version 1 (поддержка прекращена в ядре 2.6.38) и Video For Linux Version 2 (начала появляться в ядрах 2.5.x.);
  • Канал - Номер канала для карт (например, карты BTTV) поддерживающих несколько камер на одном устройстве. Оставьте его равным нулю, если используется USB-камера или один канал;
  • Формат - Формат видеопотока. Предлагается много вариантов, PAL, SECAM, NTSC, ATSC и их модификации;
  • Палитра захвата - Выбор глубины цвета. Поддерживается несколько наиболее распространенных палитр. Если сомневаетесь, попробуйте сначала 32-битный цвет, затем 24-битный, затем серый. Если ни одна из них не работает, а камера локальная, то YUV422P, вероятно, подойдет. При использовании палитр, отличных от 32, 24 или серого, наблюдается небольшое снижение производительности, так как происходит внутреннее преобразование. Последние версии ZoneMinder поддерживают 32-битный цвет. Эта палитра захвата обеспечивает прирост производительности при использовании на всех современных процессорах на базе Intel;
  • Мультибуферизация - При использовании устройств Video4Linux производительность лучше, когда используется несколько буферов, позволяющих захватывать следующее изображение, пока предыдущее обрабатывается. Если на карте имеется несколько устройств с одним входом, требующим переключения, то такой подход может привести к тому, что кадры из одного источника будут смешиваться с кадрами из другого. Выключение этой опции предотвращает мультибуферизацию, что приводит к более медленному, но стабильному захвату изображения. Эта опция игнорируется для нелокальных камер или, если на устройстве захвата присутствует только один вход;
  • Кол-во захватов за 1 кадр - Если вы используете камеры, подключенные к плате видеозахвата у которой несколько входов использующих один чип захвата, то могут получаться изображения с чересстрочной разверткой кадров, что приводит к низкому качеству изображения и характерному виду гребенчатого края. Увеличение этого параметра позволяет принудительно выполнять дополнительные захваты изображения, прежде чем один из них будет выбран в качестве захваченного кадра. Это позволяет аппаратуре захвата «успокоиться» и получить изображения лучшего качества ценой меньшей скорости захвата. Этот параметр не влияет на сетевые камеры или на те, где несколько входов имеют разные чипы захвата;
  • Глубина цвета - Глубина цвета, 24 битная, 32 битная или 256 оттенков серого;
  • Захват разрешения - Размеры видеопотока, с которым будет идти трансляция с камеры в приложении. Если у камеры самое большое поддерживаемое разрешение 720Р (1280×720), то нельзя здесь устанавливать разрешение в FullHD (1920×1080), так как изображения, просто, не будет. Данный параметр влияет на производительность. Обычно, установка разрешения в 640×480, достаточна;
  • Сохранять пропорции - При установке флажка, ширина остаётся в правильном соотношении с высотой, или наоборот. Это позволяет автоматически рассчитывать высоту исходя из ширины (или наоборот) в соответствии с заданным соотношением сторон. По умолчанию оно задано как 4:3, но может быть изменено глобально в «Параметры»→«Настройка»→DEFAULT_ASPECT_RATIO. Помимо соотношения 4:3, которое является обычным для сетевых и аналоговых камер, другим распространенным параметром является соотношение 11:9, например, для источников, основанных на CIF (352×288);
  • Ориентация - Если камера установлена вверх ногами или под прямым углом, здесь можно задать поворот, который будет применен к изображению при съемке. Это влечет за собой дополнительные затраты на обработку, поэтому, если есть возможность, лучше установить камеру правильно. Если вы выбрали один из вариантов поворота, не забудьте изменить пропорции в параметре «Сохранять пропорции». Также можно выбрать «Инвертировать» изображение, если камера обеспечивает зеркальное отображение;
  • Устранение чересстрочности - Параметры устранения чересстрочночти (деинтерлейсинга (Deinterlacing)).

Тип источника "Удаленный"


  • Удалённый протокол - Выбор протокола по которому будет идти передача потокового видео, HTTP или RTSP. До того как RTSP стал промышленным стандартом, многие ip-камеры передавали потоковое видео непосредственно со своего веб-портала. Если ip-камера не поддерживает RTSP, выберите здесь HTTP. Если камера поддерживает RTSP, то лучше изменить тип источника на «ffmpeg», а не выбирать RTSP. Работа протокола RTSP, в типе источника «Удалённый», больше не поддерживается и может исчезнуть в будущем;
  • Удалённый метод - Если, в параметре «Удалённый протокол», выбран HTTP, то доступны два метода написания URL-запроса: «Simple» (Простой) и «Regexp» (регулярные выражения). Т.е. указывается каким методом будет записан URL-запрос в следующих пунктах. Обычно, указывают метод «Simple» и примеры ниже записаны этим же методом.
    Если, в параметре «Удалённый протокол», выбран RTSP, то будут доступны несколько вариантов выбора. Большинство камер используют либо RTP/Unicast (UDP), либо RTP/RTSP (TCP);
  • Удалённый хост - Если полный URL, это - http://admin:1234567@192.168.10.182:80/cameras/camera1.jpg , где для аутентификации используется логин-admin, а пароль-1234567 , то в это поле вводится admin:1234567@192.168.10.182. Если аутентификация не требуется, то только полное доменное имя (если есть). В данном случае, это IP-адрес;
  • Порт на удалённом хосте - Если полный URL, это - http://admin:1234567@192.168.10.182:80/cameras/camera1.jpg , где для аутентификации используется логин-admin, а пароль-1234567 , то в это поле вводится номер порта, в данном случае, это порт 80;
  • Путь на удалённом хосте - Если полный URL, это - http://admin:1234567@192.168.10.182:80/cameras/camera1.jpg , где для аутентификации используется логин-admin, а пароль-1234567 , то в это поле вводится путь к источнику изображения, т.е. всё остальное без части указанной в параметре «Удалённый хост», в данном случае, /cameras/camera1.jpg;
  • Глубина цвета - Глубина цвета, 24 битная, 32 битная или 256 оттенков серого;
  • Захват разрешения - Размеры видеопотока, с которым будет идти трансляция с камеры в приложении. Если у камеры самое большое поддерживаемое разрешение 720Р (1280×720), то нельзя здесь устанавливать разрешение в FullHD (1920×1080), так как изображения, просто, не будет. Данный параметр влияет на производительность. Обычно, установка разрешения в 640×480, достаточна;
  • Сохранять пропорции - При установке флажка, ширина остаётся в правильном соотношении с высотой, или наоборот. Это позволяет автоматически рассчитывать высоту исходя из ширины (или наоборот) в соответствии с заданным соотношением сторон. По умолчанию оно задано как 4:3, но может быть изменено глобально в «Параметры»→«Настройка»→DEFAULT_ASPECT_RATIO. Помимо соотношения 4:3, которое является обычным для сетевых и аналоговых камер, другим распространенным параметром является соотношение 11:9, например, для источников, основанных на CIF (352×288);
  • Ориентация - Если камера установлена вверх ногами или под прямым углом, здесь можно задать поворот, который будет применен к изображению при съемке. Это влечет за собой дополнительные затраты на обработку, поэтому, если есть возможность, лучше установить камеру правильно. Если вы выбрали один из вариантов поворота, не забудьте изменить пропорции в параметре «Сохранять пропорции». Также можно выбрать «Инвертировать» изображение, если камера обеспечивает зеркальное отображение;
  • Устранение чересстрочности - Параметры устранения чересстрочночти (деинтерлейсинга (Deinterlacing)).

Тип источника "Файл"


Особенность этого типа в том, что в качестве источника изображений указывается один единственный файл в который идёт запись всех кадров изображений с камеры (например, в /home/images/camera1.jpg).
Помните!
Каждый кадр перезаписывает этот файл изображения. Указывается один файл, а не каталог со множеством файлов!
  • Путь к источнику - Полный путь к файлу, который будет использоваться в качестве источника изображения;
  • Глубина цвета - Глубина цвета, 24 битная, 32 битная или 256 оттенков серого;
  • Захват разрешения - Размеры видеопотока, с которым будет идти трансляция с камеры в приложении. Если у камеры самое большое поддерживаемое разрешение 720Р (1280×720), то нельзя здесь устанавливать разрешение в FullHD (1920×1080), так как изображения, просто, не будет. Данный параметр влияет на производительность. Обычно, установка разрешения в 640×480, достаточна;
  • Сохранять пропорции - При установке флажка, ширина остаётся в правильном соотношении с высотой, или наоборот. Это позволяет автоматически рассчитывать высоту исходя из ширины (или наоборот) в соответствии с заданным соотношением сторон. По умолчанию оно задано как 4:3, но может быть изменено глобально в «Параметры»→«Настройка»→DEFAULT_ASPECT_RATIO. Помимо соотношения 4:3, которое является обычным для сетевых и аналоговых камер, другим распространенным параметром является соотношение 11:9, например, для источников, основанных на CIF (352×288);
  • Ориентация - Если камера установлена вверх ногами или под прямым углом, здесь можно задать поворот, который будет применен к изображению при съемке. Это влечет за собой дополнительные затраты на обработку, поэтому, если есть возможность, лучше установить камеру правильно. Если вы выбрали один из вариантов поворота, не забудьте изменить пропорции в параметре «Сохранять пропорции». Также можно выбрать «Инвертировать» изображение, если камера обеспечивает зеркальное отображение;
  • Устранение чересстрочности - Параметры устранения чересстрочночти (деинтерлейсинга (Deinterlacing)).

Тип источника "FFmpeg"


Рекомендуемый тип источника!
  • Путь к источнику - Полный URL потока или файла на камере. Обычно, это RTSP-строка. Существует несколько способов узнать правильность написания:
  1. В документации к камере;
  2. Попробовать новую функцию ONVIF в ZoneMinder;
  3. Использовать поисковые системы в Интернете для поиска сайтов, которые документируют такую информацию. Например, такие как ispyconnect.com;
  • Удалённый метод - Задается транспортный протокол RTSP для FFmpeg.
  1. TCP - Использовать TCP (чередование в канале управления RTSP) в качестве транспортного протокола;
  2. UDP - Использовать UDP в качестве транспортного протокола. Камеры с высоким разрешением испытывают некоторые «размазывания» при использовании UDP, в этом случае поменяйте на TCP;
  3. UDP Multicast - Использовать UDP Multicast в качестве транспортного протокола;
  4. HTTP Tunnel - Использовать туннелирование HTTP в качестве транспортного протокола, полезно для прохождения прокси-серверов.
  • Параметры - Параметры FFmpeg. Несколько параметров могут быть разделены запятой. Например:
  1. allowed_media_types=video - набор типов данных запрашиваемых у камеры (audio, video, data);
  2. reorder_queue_size=nnn - количество пакетов в буфере для обработки переупорядочивания пакетов;
  3. loglevel=debug - уровень журналирования FFmpeg (quiet, panic, fatal, error, warning, info, verbose, debug).
  • Дополнительный путь к источнику - Путь к дополнительному потоку. На случай, если основной поток будет не доступен;
  • HW-декодер - Аппаратный декодер. Параметр используется ТОЛЬКО, для работы с дискретной видеокартой. Эквивалентен опции командной строки ffmpeg -hwaccel. Например, для поддержки графики intel попробуйте «vaapi», для NVIDIA GeForce GTX1050i попробуйте «cuda». Если у вас нет дискретной видеокарты или вы не знаете, как настроить ffmpeg, оставьте этот параметр пустым;
  • Устройство для HW-декодера - Устройство на котором будет работать аппаратный декодер. Параметр используется ТОЛЬКО, если установлено несколько дискретных видеокарт. Т.е. в этом параметре указывается какую из видеокарт использовать. Например, типичным значением для Intel VAAPI будет /dev/dri/renderD128. Эквивалентен опции командной строки ffmpeg -hwaccel_device. Если у вас нет дискретной видеокарты или вы не знаете, как настроить ffmpeg, оставьте этот параметр пустым;
  • Глубина цвета - Глубина цвета, 24 битная, 32 битная или 256 оттенков серого;
  • Захват разрешения - Размеры видеопотока, с которым будет идти трансляция с камеры в приложении. Если у камеры самое большое поддерживаемое разрешение 720Р (1280×720), то нельзя здесь устанавливать разрешение в FullHD (1920×1080), так как изображения, просто, не будет. Данный параметр влияет на производительность. Обычно, установка разрешения в 640×480, достаточна;
  • Сохранять пропорции - При установке флажка, ширина остаётся в правильном соотношении с высотой, или наоборот. Это позволяет автоматически рассчитывать высоту исходя из ширины (или наоборот) в соответствии с заданным соотношением сторон. По умолчанию оно задано как 4:3, но может быть изменено глобально в «Параметры»→«Настройка»→DEFAULT_ASPECT_RATIO. Помимо соотношения 4:3, которое является обычным для сетевых и аналоговых камер, другим распространенным параметром является соотношение 11:9, например, для источников, основанных на CIF (352×288);
  • Ориентация - Если камера установлена вверх ногами или под прямым углом, здесь можно задать поворот, который будет применен к изображению при съемке. Это влечет за собой дополнительные затраты на обработку, поэтому, если есть возможность, лучше установить камеру правильно. Если вы выбрали один из вариантов поворота, не забудьте изменить пропорции в параметре «Сохранять пропорции». Также можно выбрать «Инвертировать» изображение, если камера обеспечивает зеркальное отображение;
  • Устранение чересстрочности - Параметры устранения чересстрочночти (деинтерлейсинга (Deinterlacing)).

Тип источника "cURL"


Тип источника «cURL» никак не зависит от ffmpeg!
Он поддерживает только камеры, передающие потоки по HTTP(s) используя библиотеку Libcurl!
  • URL - Полный URL-запрос;
  • Username - Имя пользователя для аутентификации;
  • Password - Пароль для аутентификации;
  • Глубина цвета - Глубина цвета, 24 битная, 32 битная или 256 оттенков серого;
  • Захват разрешения - Размеры видеопотока, с которым будет идти трансляция с камеры в приложении. Если у камеры самое большое поддерживаемое разрешение 720Р (1280×720), то нельзя здесь устанавливать разрешение в FullHD (1920×1080), так как изображения, просто, не будет. Данный параметр влияет на производительность. Обычно, установка разрешения в 640×480, достаточна;
  • Сохранять пропорции - При установке флажка, ширина остаётся в правильном соотношении с высотой, или наоборот. Это позволяет автоматически рассчитывать высоту исходя из ширины (или наоборот) в соответствии с заданным соотношением сторон. По умолчанию оно задано как 4:3, но может быть изменено глобально в «Параметры»→«Настройка»→DEFAULT_ASPECT_RATIO. Помимо соотношения 4:3, которое является обычным для сетевых и аналоговых камер, другим распространенным параметром является соотношение 11:9, например, для источников, основанных на CIF (352×288);
  • Ориентация - Если камера установлена вверх ногами или под прямым углом, здесь можно задать поворот, который будет применен к изображению при съемке. Это влечет за собой дополнительные затраты на обработку, поэтому, если есть возможность, лучше установить камеру правильно. Если вы выбрали один из вариантов поворота, не забудьте изменить пропорции в параметре «Сохранять пропорции». Также можно выбрать «Инвертировать» изображение, если камера обеспечивает зеркальное отображение;
  • Устранение чересстрочности - Параметры устранения чересстрочночти (деинтерлейсинга (Deinterlacing)).

Тип источника "Web Site"


Этот тип источника позволяет использовать произвольный веб-сайт в качестве интерактивного монитора. При этом типе источника, видео не записывается (не сохраняется) в ZoneMinder. Так же, сайты с самоподписанными сертификатами не будут отображаться, пока пользователь вручную не перейдет на сайт и не получит неподписанный сертификат. Обратите внимание, что некоторые сайты устанавливают опцию X-Frame в заголовке, что препятствует отображению таких сайтов во фрейме. ZoneMinder обнаружит это и выдаст предупреждение в журнале. В таком случае, пользователь может установить плагин или расширение для браузера, чтобы обойти эту проблему.
  • URL веб-сайта - Полный адрес веб-сайта;
  • Ширина (в пикселях) - Ширина фрейма в пикселях;
  • Высота (в пикселях) - Высота фрейма в пикселях;
  • Обновление веб-сайта - Если рассматриваемый веб-сайт имеет статическое содержимое, то введите в это поле период времени в секундах, в течение которого ZoneMinder будет обновлять содержимое.
    (Почему-то подпись к полю не отображается в браузере - прим. Graf).

Тип источника "NVSocket"


Данный тип специально предназначен для работы с платформами NVIDIA Jetson (и, возможно, более новыми). Он берет необработанный видеопоток из сокета библиотек nvidia.
  • Хост - адрес хоста для доступа к платформе NVIDIA;
  • Порт - порт для доступа к платформе NVIDIA;
  • Глубина цвета - Глубина цвета, 24 битная, 32 битная или 256 оттенков серого;
  • Размер по X (в пикселях) - Ширина транслируемого видео в приложении;
  • Размер по Y (в пикселях) - Высота транслируемого видео в приложении;
  • Сохранять пропорции - При установке флажка, ширина остаётся в правильном соотношении с высотой, или наоборот. Это позволяет автоматически рассчитывать высоту исходя из ширины (или наоборот) в соответствии с заданным соотношением сторон. По умолчанию оно задано как 4:3, но может быть изменено глобально в «Параметры»→«Настройка»→DEFAULT_ASPECT_RATIO. Помимо соотношения 4:3, которое является обычным для сетевых и аналоговых камер, другим распространенным параметром является соотношение 11:9, например, для источников, основанных на CIF (352×288);
  • Ориентация - Если камера установлена вверх ногами или под прямым углом, здесь можно задать поворот, который будет применен к изображению при съемке. Это влечет за собой дополнительные затраты на обработку, поэтому, если есть возможность, лучше установить камеру правильно. Если вы выбрали один из вариантов поворота, не забудьте изменить пропорции в параметре «Сохранять пропорции». Также можно выбрать «Инвертировать» изображение, если камера обеспечивает зеркальное отображение;
  • Устранение чересстрочности - Параметры устранения чересстрочночти (деинтерлейсинга (Deinterlacing)).

Тип источника "VNC"


Данный тип источника позволяет выполнять запись экрана Windows/Linux/Mac или любого другого компьютера на котором установлен VNC-сервер. Вам придётся самостоятельно подобрать частоту кадров в параметрах: Частота анализа (к/с), Максимальная частота кадров и Максимальная частота кадров для тревоги на вкладке "Общие". Обычно, 2-5 к/с достаточно.
Также обратите внимание, что для соединения, часто, имя пользователя не используется, достаточно только пароля. Это зависит от настроек на стороне VNC-сервера. Установка слишком большого разрешения может повлиять на производительность.
  • Удалённый хост - Адрес компьютера, с которого будет идти трансляция с экрана;
  • Порт на удалённом хосте - Порт на котором установлен VNC-сервер;
  • Имя пользователя - Имя пользователя для аутентификации на VNC-сервере (опционально);
  • Пароль - Пароль для аутентификации на VNC-сервере;
  • Глубина цвета - Глубина цвета, 24 битная, 32 битная или 256 оттенков серого;
  • Захват разрешения - Размеры изображения, с которым будет идти трансляция экрана в приложении;
  • Сохранять пропорции - При установке флажка, ширина остаётся в правильном соотношении с высотой, или наоборот. Это позволяет автоматически рассчитывать высоту исходя из ширины (или наоборот) в соответствии с заданным соотношением сторон. По умолчанию оно задано как 4:3, но может быть изменено глобально в «Параметры»→«Настройка»→DEFAULT_ASPECT_RATIO. Помимо соотношения 4:3, которое является обычным для сетевых и аналоговых камер, другим распространенным параметром является соотношение 11:9, например, для источников, основанных на CIF (352×288);
  • Ориентация - Здесь можно задать поворот, который будет применен к изображению. Это влечет за собой дополнительные затраты на обработку. Если вы выбрали один из вариантов поворота, не забудьте изменить пропорции в параметре «Сохранять пропорции». Также можно выбрать «Инвертировать» изображение, если нужно зеркальное отображение;
  • Устранение чересстрочности - Параметры устранения чересстрочночти (деинтерлейсинга (Deinterlacing)).

Вкладка "ONVIF"


Протокола ONVIF (Open Network Video Interface Forum) — это общепринятый протокол для совместной работы IP-камер, видеорегистраторов и программного обеспечения, например, если все устройства разных производителей.
Нужно убедиться:
- что подключаемые устройства имеют поддержку ONVIF, на некоторых устройствах он может быть выключен по умолчанию;
- что может быть отключена авторизация по ONVIF. Это значит, что логин/пароль будет всегда по умолчанию, независимо от логина/пароля для WEB-интерфейса;
- какой используется порт для работы по протоколу ONVIF;
- какой используется пароль для ONVIF-соединения. Иногда, он отличаться от пароля для WEB-доступа.
  • ONVIF URL - Адрес до устройства с поддержкой ONVIF;
  • Имя пользователя - Имя пользователя для аутентификации ONVIF;
  • Пароль - Пароль пользователя для аутентификации ONVIF;
  • Параметры ONVIF - Дополнительные параметры,например параметр G726Reversed=1, позволяет декодеру обрабатывать те случаи, когда потоки были закодированы неправильно (обратно). По умолчанию G726Reversed=0.

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


Раздел позволяет настроить разрешения на запись видео и аудио, а также каким образом оно будет записываться и куда.
  • Область хранения - Выбор места хранения видеозаписей. Выпадающий список из хранилищ, настроенных в «Параметры»→«Хранилище»;
  • Сохранить JPEG-и - Видео записывается как отдельный кадр в JPEG-файл. Т.е. один кадр - один файл. Хранение кадров в JPEG-файле требует много места на диске, но позволяет просматривать событие в любое время, даже во время записи. На выбор доступно несколько вариантов:
  1. Отключено - Видео не записывается в JPEG-файлы. Если выбран этот вариант, то необходимо включить параметр «Записывать видео», иначе запись видео не будет производиться, вообще;
  2. Только кадры - Видео записывается в виде отдельных кадров в формате JPEG;
  3. Только аналитические изображения (при наличии) - Видео записывается в виде отдельных кадров JPEG с наложением информации об анализе обнаружения движения. Обратите внимание, что это наложение остается постоянно видимым в кадрах;
  4. Кадры + аналитические изображения (при наличии) - Видео записывается дважды: один раз в виде обычных отдельных кадров JPEG, а другой раз в виде отдельных кадров JPEG с наложенной аналитической информацией.
  • Записывать видео - Запись в формате реального видео. Обеспечивает, гораздо, лучшие результаты сжатия по сравнению с сохранением в JPEG-файлы, что позволяет хранить более длительную историю видео. Доступны варианты выбора:
  1. Отключено - Видео не записывается. Если выбран этот вариант, то должен быть включён параметр «Сохранить JPEG-и», иначе запись видео не будет производиться, вообще;
  2. Кодировать - Видео или кадры изображения, полученные с камеры, перекодируются в выбранный кодек и сохраняются как видео. Этот параметр полезен, если камера не может передавать потоковое видео в формате h264. При выборе этого варианта, становятся доступны опции:
    1. Кодек - Выбор необходимого кодека из списка;
    2. Кодировщик - Выбор необходимого кодировщика. Например, выбрать кодировщик с аппаратным ускорением.
  3. Прямо с камеры - Предполагается, что камера уже отправляет поток h264. Видео будет записано как есть, без какой-либо постобработки в ZoneMinder. Такие характеристики видео, как битрейт, режим кодирования и т.д., должны быть установлены непосредственно на камере. А так же полученное видео не будет включать наложение временной метки ZoneMinder, поэтому, если на видео нужно отображение даты и времени, то их необходимо включить и настроить на камере;
  • Необязательные параметры кодировщика - В основном, полезен при кодировании, поскольку каждый кодировщик может принимает различные параметры. Придется обратиться к документации ffmpeg, чтобы узнать, какие доступны параметры и для какого кодировщика;
  • Записывать звук - Установите флажок, чтобы сохранять аудио (если доступно) при записи видео.

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


Раздел относится к метке времени, которая отображается на каждом кадре.
  • Формат метки - Это строка в стиле strftime с несколькими дополнительными лексемами. Например, %f покажет десятичные сотые доли секунды к временной метке кадра, поэтому %H:%M:%S.%f выведет время 10:45:37.45. %N покажет название монитора, %Q будет заполнен текстом из «show text», описанного в разделе zmtriggers.pl;
  • X-координата метки - Значение места размещения временной метки относительно левой части изображения. 0 - помещает метку вплотную к левой части изображения;
  • Y-координата метки - Значение места размещения временной метки относительно верхней части изображения. 0 - помещает метку вплотную к верхней части изображения. Для размещения метки времени в нижней части изображения используйте здесь значение на восемь меньше высоты изображения. Например, если отображаемое в приложении разрешение видео 640х480, где 480 пикселей и есть высота изображения, то в данном параметре нужно указать значение равное 480-8, т.е. 472. Тогда метка будет в нижней части изображения;
  • Размер шрифта - На выбор доступны 4 размера шрифта. «Небольшой» подходит для разрешения 640×480. «По умолчанию» подходит для 720p. «Большой» подходит для 1080p. «Огромный» подходит для более высоких разрешений.

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


  • Размер буфера изображения - Определяет, сколько кадров будет храниться в кольцевом буфере на рамдиске в /dev/shm. Этот кольцевой буфер используется для хранения необработанных RGB-изображений, которые zms превращает в jpeg при просмотре в реальном времени. Раньше, указанное здесь значение, должно было быть большим, так как в этот буфер, поочерёдно, помещались кадры для анализа. Теперь это заменено динамической очередью пакетов и значение от 3 до 5 должно подойти;
  • Макс. кол-во видеопакетов в буфере - Определяет максимальное количество видеопакетов, которые будут храниться в очереди пакетов. В идеале этот параметр должен быть пустым, но если в базе данных или на дисках будет замедление, очередь будет заполняться и потреблять всю оперативную память. Значение, например, в 2 раза больше интервала между ключевыми кадрами, вполне разумное. По сути, значение может быть любым, однако оно хранится в общей памяти, и если сделать его слишком большим, особенно для больших изображений с высокой глубиной цвета, оно может занимать много памяти. Значение не более 50, обычно, является нормальным. Если вы обнаружили, что система не позволяет использовать нужное значение, даже если у вас много свободной памяти, то, скорее всего, это связано с тем, что в системе есть произвольное ограничение на размер общей памяти для использования. Это ограничение легко изменить;
  • Кадры разогрева - Определяет, сколько кадров должен обработать аналитический демон без исследования при запуске. Это позволяет ему сгенерировать точное эталонное изображение из серии изображений, прежде чем тщательно искать какие-либо изменения. Если указать слишком большое значение, то запуск аналитического демона займет много времени, если слишком маленькое, то можно получить ложные срабатывания при его запуске;
  • Буфер до события - Определяет, сколько кадров должно быть сохранено до события вместе с ним. Что позволит просмотреть произошедшее, непосредственно, до события. Значение не должно превышать половины размера кольцевого буфера на рамдиске в /dev/shm;
  • Буфер после события - Определяет, сколько кадров должно быть сохранено после события вместе с ним. Что позволит просмотреть произошедшее, непосредственно, после события. По сути, просто счетчик, который применяется к захваченным кадрам. Если вы получаете много коротких событий и хотите, чтобы они шли вместе, образуя меньшее количество длинных, то увеличьте значение в этом параметре;
  • Буфер потокового воспроизведения - Количество буферизованных кадров, позволяющее приостанавливать и перематывать поток при просмотре монитора в реальном времени. Значение «0» отключает эту функцию. Кадры буферизуются по пути ZM_PATH_SWAP указанному в /etc/zm/conf.d/01-system-paths.conf. Если этот путь указывает на физический диск, то во время просмотра в реальном времени будет происходить много операций ввода-вывода, что может привести к высокой нагрузке на систему. В таком случае, либо отключите эту функцию, либо пропишите в ZM_PATH_SWAP рамдиск в /dev/shm;
  • Количество кадров тревоги - Сколько последовательных кадров тревоги должно произойти, прежде чем будет сгенерировано тревожное событие. Значение по умолчанию равно «1», это означает, что любой кадр тревоги вызовет событие или будет участвовать в нем. Можно указать любое значение до «16», чтобы исключить фиктивные события, вызванные, возможно, мерцанием экрана или другими переходными процессами. Однако, значения более «3» или «4» вряд ли будут полезны. Обратите внимание, что если включена запись статистики, то в настоящее время статистика не записывается для первых «Количество кадров тревоги-1» кадров события. Поэтому, если установить значение равное «5», то первые 4 кадра не будут содержать статистику, в то время как значение равное «1» обеспечит запись статистики для всех тревожных кадров;

Вкладка "Управление"


Эта вкладка и ее параметры появятся только в том случае, если вы выбрали опцию «Параметры» → «Система» → OPT_CONTROL, указывающую на то, что у вас подключены камеры, которыми можно управлять с помощью панорамирования/наклона/зума (PTZ) или других механизмов.
  • Управляемая - Установите здесь флажок для указания того, что камерой можно управлять;
  • Тип управления - Выбор типа управления, подходящий для камеры. В ZoneMinder уже есть небольшое количество предопределенных протоколов управления, которые будут работать с некоторыми камерами без изменений, но могут быть изменены для работы с другими. Перейдите по ссылке «Редактировать» для создания новых типов управления или редактирования существующих;
  • Устройство управления - Устройство используемое для управления камерой. Обычно, это последовательный или аналогичный порт. Если камера является сетевой, то не требуется указывать устройство управления;
  • Адрес управляемой камеры - Некоторые протоколы управления требуют, чтобы каждая камера была идентифицирована определенным, обычно, цифровым идентификатором (id). Если камера использует адресацию, введите здесь её идентификатор (id). Если камера является сетевой, то здесь нужно ввести имя хоста или IP-адрес камеры;
  • Обнаружение движения при PTZ - Установите флажок, если нужна детекция движения во время управления камерой;
  • Тайм-аут автоостановки - Тайм-аут автоматической остановки движения. Например, если вручную дать команду камере повернуть вправо и остановить её в нужный момент, то сложно точно определить такой момент с помощью веб-интерфейса. Если указать здесь, например, значение «0.25», то камера будет автоматически остановлена через четверть секунды после запуска. Если это значение оставить пустым или равным нулю, оно будет проигнорировано. Так же имейте ввиду, что указанное тут значение будет применяться только для 25% нижних возможных диапазонов скоростей. Другими словами, если камера имеет диапазон скоростей панорамирования от 1 до 100, то выбор скорости перемещения 26 или более будет означать, что вы хотите увеличить скорость перемещения, которую будете контролировать самостоятельно и тайм-аут не будет применен. Выбор движения на более низких скоростях будет интерпретирован как требующий более точного управления и будет вызван автоматический тайм-аут;
  • Следить за движением - Установите флажок, если необходимо, чтобы камера двигалась вслед за двигающимся объектом. Убедитесь, что камера поддерживает режимы отображения движения, в которых точка на изображении может быть сопоставлена с командой управления. Следующие четыре параметра будут обрабатываться только при включении данного параметра;
  • Задержка обнаружения (сек.) - Это количество секунд, на которое приостанавливается обнаружение движения (отключается детекция движения) для слежки за объектом движения;
  • Точка возврата - Точка возврата камеры после завершения слежки за двигающимся объектом. Можно выбрать, при поддержке камерой, установок «Исходное положение» или «Предустановки». Либо отключить (не использовать) возврат камеры, выбрав пункт «Отсутствует»;
  • Задержка возврата (сек.) - Задержка в секундах после прекращения слежки за двигающимся объектом, прежде чем камера вернется в любое определенное место возврата.

Вкладка "Х10"


Эта вкладка и ее опции появятся только в том случае, если установлен флажок в «Параметры» → «Х10» → «OPT_X10» указывающий о включении поддержки протокола домашней автоматизации «X10».
  • Строка активации X10 - Содержимое этого поля определяет, когда монитор начинает и/или прекращает быть активным при работе с триггерами X10 (включается во вкладке "Общие"). Здесь можно комбинировать несколько выражений, разделив их запятой. Формат этой строки следующий:
    • n - Код устройства для которого, при обнаружении сигнала X10 «ON», монитор будет активирован и, при обнаружении сигнала «OFF», деактивирован;
    • !n - Инвертирует предыдущий формат. Например, «!5» означает, что монитор активируется при обнаружении сигнала «OFF» для кода устройства 5 и деактивируется при сигнале «ON»;
    • n+ - Код устройства для которого активируется монитор при получении сигнала «ON», но игнорирует сигнал «OFF» и, соответственно, не будет деактивирован этой инструкцией. Если добавите в начало «!», то это инвертирует режим, т.е. сигнал «ON» деактивирует монитор;
    • n+<seconds> - Как и в предыдущем режиме, за исключением того, что монитор отключится через заданное количество секунд;
    • n- - Код устройства для которого деактивируется монитор при получении сигнала «OFF», но игнорирует сигнал «ON» и, соответственно, не будет активирован этой инструкцией. Если добавите в начало «!», то это инвертирует режим, т.е. сигнал «OFF» активирует монитор;
    • n-<seconds> - Как и в предыдущем режиме, за исключением того, что монитор активируется через заданное количество секунд.
  • Входящая строка тревоги X10 - Имеет тот же формат, что и предыдущий параметр, но вместо активации монитора вызывает принудительную тревогу и запись события, если монитор активен. Применяется то же определение, что и в предыдущем параметре, за исключением того, что слово «активирован» читается как «включить тревогу», а «деактивирован» - «отключить тревогу»;
  • Исходящая строка тревоги X10 - Имеет тот же формат, что и два вышеуказанных параметра. Однако, работает немного по-другому. Вместо того, чтобы ZoneMinder реагировал на события X10, этот параметр управляет тем, как ZoneMinder посылает сигналы X10, когда текущий монитор переходит в состояние тревоги или выходит из него. Например, простой ввод числа приведет к отправке сигнала «ON» для этого кода устройства при переходе в состояние тревоги и сигнала «OFF» при выходе из состояния тревоги. Аналогично «7+30» пошлет сигнал «ON» для кода устройства 7 при переходе в состояние тревоги и сигнал «OFF» через 30 секунд, независимо от состояния. Комбинация инструкций X10 позволяет ZoneMinder разумно реагировать на другие устройства, а также брать на себя управление ими, когда это необходимо. Но беспорядочное использование сигналов входящей и исходящей тревоги может привести к ужасной гонке, например, включение света в ответ на сигнал тревоги, который затем сам вызывает тревогу и так далее. Поэтому, здесь требуется некоторая осмотрительность.

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


  • Префикс события - Изменить префикс события. По умолчанию события называются «Event - <id события>», в данном параметре можно переименовывать часть «Event-», на значение по вашему выбору. Например, на название монитора, который генерирует эти события;
  • Длина секции - Длительность записи (в секундах) всех событий фиксированной длины, создаваемых, когда режим монитора, во вкладке «Общие», установлен в «Постоянная запись (Record)» или «Постоянная запись с обл. детекции (Mocord)». В противном случае это значение игнорируется. Этот параметр не должен быть слишком длинным, а то по событиям будет трудно ориентироваться и не должен быть слишком коротким, а то сгенерируется слишком много событий. Рекомендуемая длина от 300 до 900 секунд;
  • Минимальная длина секции - Длительность записи (в секундах) при обнаружении события, создаваемого, когда режим монитора, во вкладке «Общие», установлен в «Постоянная запись с обл. детекции (Mocord)». Например, если в этом параметре установлено значение «180», то когда произойдёт «событие», оно будет записываться в течение 3 минут;
  • Пропускать кадры - Количество кадров, которое должно быть пропущено в записанных событиях. Параметр применяется только тогда, когда режим монитора, во вкладке «Общие», установлен в «Постоянная запись (Record)» или «Постоянная запись с обл. детекции (Mocord)». Значение по умолчанию, равное нулю, приводит к сохранению каждого захваченного кадра. При значении «1» будет пропускаться один кадр между каждым сохраненным кадром, т.е будет записываться каждый второй кадр. При значении «2», два кадра пропускаются между каждым сохраненным кадром, т.е будет записываться каждый третий кадр и т.д. Иными словами, данный способ сохраняет каждый «указанное здесь значение + 1» кадр. Смысл этого параметра в том, чтобы гарантировать, что сохраненные события не займут слишком много места, в то же время позволяя камере снимать с довольно высокой частотой кадров. Правда, это может повлияет на скорость сохранения кадров;
  • Пропустить кадры движения - Количество кадров, которое должно быть пропущено при обнаружении движения. Работает аналогично параметру Пропускать кадры. То есть, если значение равно «5», то на наличие движения будет анализироваться каждое 6-е изображение . Эталонное изображение будет обновляться каждый кадр, чтобы не изменять эффект текущих настроек наложения. По умолчанию значение равно нулю, т.е. параметр не активен;
  • Задержка обновления анализа - Описание параметра найти не удалось. (прим. Graf)
  • Интервал отчета - Как часто, в пересчете на кадры в секунду, выводится текущая производительность в системный журнал. Не используется каким-либо функциональным образом, поэтому здесь можно прописать значение, допустим, равное «100». Если посмотреть в системный журнал, то можно увидеть, что данные, при захвате видео и при обработке, выдаются с частотой указанной в этом параметре;
  • Скорость по умолчанию - Скорость воспроизведения, по умолчанию, при просмотре событий;
  • Масштаб по умолчанию - Масштаб картинки, по умолчанию, при воспроизведении потока в веб-интерфейсе;
  • Кодек по умолчанию - Кодек, по умолчанию, при просмотре событий;
  • Точки контроля сигнала - Количество точек, проверяемых в захваченном кадре, для определения потери сигнала. Для камер, подключенных локально, ZoneMinder может проверить отсутствие сигнала проверяя определенное количество случайных точек в каждом полученном кадре. Если при проверке все эти точки будут одного и того же цвета, то это расценивается как потеря сигнала от камеры. Когда это происходит, закрываются все открытые события и генерируется короткое событие потери сигнала в один кадр до возврата сигнала. В данном параметре указывается количество точек необходимых для проверки. Обратите внимание, что здесь указывается максимум, не все найденные точки проверяются по цвету и прекращают любые дальнейшие проверки, на самом деле, в большинстве случаев проверяется лишь несколько точек. Сетевые камеры и камеры основанные на файлах, никогда не проверяются;
  • Цвет контроля сигнала - Выбор цвета точек для параметра «Точки контроля сигнала». Цвет можно выбрать через палитру цветов или вести вручную в форматах RGB, HSL или HEX-код нажав на поле с цветной линией. Рядом, в прямоугольнике, отображается выбранный цвет;
  • Цвет в Web-интерфейсе - Цвет для идентификации мониторов на определенных видах. Цвет можно выбрать через палитру цветов или вести вручную в форматах RGB, HSL или HEX-код нажав на поле с цветной линией. Рядом, в прямоугольнике, отображается выбранный цвет;
  • Включить EXIF информацию в изображение - Встраивает данные EXIF ​​в каждый JPEG-кадр;
  • Встроенный в ZoneMinder RTSP-сервер - Активация встроенного в ZoneMinder RTSP-сервера, который может повторно передавать RTSP или пытаться преобразовать поток монитора в RTSP. Применяется в случаях, если вы хотите использовать ресурсы хост-машины, на котором установлен ZoneMinder, вместо множества клиентов, получающих сигнал с одной камеры. Начальный RTSP-порт настраивается в «Параметры» → «Сеть» → MIN_RTSP_PORT;
  • Название RTSP-потока - Если параметр «Встроенный в ZoneMinder RTSP сервер» включен, то здесь вводится произвольное название, по которому будет доступен поток при формировании rtsp-строки. Например, если адрес хост-машины с ZoneMinder равен 192.168.1.10, ID настраиваемого монитора равен 6, «Параметры» → «Сеть» → MIN_RTSP_PORT = 20000 и в данном параметре введено значение «my_camera», то доступ к потоку будет осуществляться по адресу rtsp://192.168.1.10:20006/my_camera;
  • Важность - Описание параметра найти не удалось. (прим. Graf)

Вкладка "Расположение"


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

Почта

Для отправки сообщений, при работе фильтров, необходимо настроить такую отправку и сам фильтр.
Но перед этим установим и настроим ssmtp в замен стокового sendmail при помощи которого будем отсылать сообщение на e-mail.
В данном примере показана настройка для корпоративной почты (@mydom.ru) на стороннем сервере (mailserver.ru) по защищённому протоколу SMTPS на порту 465.
По сути, аналог известных почтовых сервисов от yandex.ru, mail.ru и иже с ними для корпоративной почты.
Если будете использовать эти сервера «на прямую» (т.е. ваша почта @yandex.ru, @mail.ru и т.д.), то не забывайте, что теперь нужно создать «пароль для приложения» в этих сервисах, и вводить его в конфигурационный файл ssmtp.
Если у вас вой сервер, то настройки будут, соответственно, другими.

# sbopkg -i ssmtp
# /usr/sbin/generate_config /etc/ssmtp/ssmtp.conf
Please enter the mail name of your system.
This is the hostname portion of the address to be shown
on outgoing news and mail messages headers.
The default is srv1.mydom.lan, your system's host name.

Mail name [srv1.mydom.lan]: localhost
Please enter the SMTP port number [25]: 465

Please check the configuration file /etc/ssmtp/ssmtp.conf for correctness.

Переходим в каталог /etc/ssmtp и заполним ssmtp.conf

# Пользователь, который получает всю почту для userids < 1000
root=postmaster

# Полное имя машины
hostname=localhost

# Поле From: будет выставляться самим smtp переписывая значение вводимое скриптами
FromLineOverride=YES

# Пользователь на smtp-сервере (от кого шлем почту)
AuthUser=fromserver@mydom.ru

# Пароль входа на smtp-сервер для пользователя указанного в AuthUser
AuthPass=passwordforlogin

# Адрес и порт smtp-сервера
mailhub=smtp.mailserver.ru:465

# Перезапись домена на свой (если используется сторонний сервер, например от yandex)
rewriteDomain=mydom.ru

# Использовать SSL/TLS для аутентификации на smtp-сервере
UseTLS=YES

Тут же, в каталоге /etc/ssmtp изменим файл revaliases, если нет, то создадим.

# Некая защита от спама.
# root:ОТ_КОГО:ЧЕРЕЗ_КАКОЙ_SMTP_СЕРВЕР:SMTP_ПОРТ

root:fromserver@mydom.ru:smtp.mailserver.ru:465

Подменяем sendmail.

# mv /usr/sbin/sendmail /usr/sbin/sendmail.org 
# ln -s /usr/sbin/ssmtp /usr/sbin/sendmail

Проверим работу отправив тестовое письмо:

# echo test | mail -v -s "testing ssmtp" kakoyto-mail@yandex.ru
[<-] 220 smtp.mailserver.ru ESMTP
[->] EHLO localhost
[<-] 250 HELP
[->] AUTH LOGIN
[<-] 334 VXNlcm7hbWU7
[->] ZnJvbXNlcnZlckBtaWcta5NiLnJ5
[<-] 334 UGFzc7dvciQ7
[<-] 235 Authentication succeeded
[->] MAIL FROM:<fromserver@mydom.ru>
[<-] 250 OK
[->] RCPT TO:<kakoyto-mail@yandex.ru>
[<-] 250 Accepted
[->] DATA
[<-] 354 Enter message, ending with "." on a line by itself
[->] Received: by localhost (sSMTP sendmail emulation); Tue, 10 Jan 2023 12:58:41 +0300
[->] From: fromserver@mydom.ru
[->] Date: Tue, 10 Jan 2023 12:58:41 +0300
[->] To: kakoyto-mail@yandex.ru
[->] Subject: testing ssmtp
[->] User-Agent: Heirloom mailx 12.5 7/5/10
[->] MIME-Version: 1.0
[->] Content-Type: text/plain; charset=us-ascii
[->] Content-Transfer-Encoding: 7bit
[->] 
[->] test
[->] .
[<-] 250 OK id=1ewm7I-0004QJ-2Y
[->] QUIT

Работает.
Теперь заходим в ZoneMinder, переходим в «Параметры» → «Email» и настраиваем почту.
Пример на картинке демонстрирует настройки при наличии локального МТА, таких как sendmail(мы подменили ssmtp), postfix и т.д.
Если таковых нет локально и(или) не планируется использовать, то для отправки почтовых сообщений можно использовать ssmtp без подмены sendmail.
При этом, необходимо настроить адрес удалённого почтового сервера и последние пункты:


Макросы которые можно использовать не только в настройке почтовых сообщений, но и в фильтрах и прочих параметрах.

%EI%   Id события
%EN%   Название события
%EC%   Причина события
%ED%   Описание события
%ET%   Время события
%EL%   Длина события
%EF%   Количество кадров в событии
%EFA%  Количество кадров тревоги в событии
%EST%  Общая оценка события
%ESA%  Средний балл события
%ESM%  Максимальная оценка события
%EP%   Путь к событию
%EPS%  Путь к потоку событий
%EPI%  Путь к изображениям события
%EPI1% Путь к первому тревожному изображению события
%EPIM% Путь к (первому) изображению события с наивысшей оценкой
%EI1%  Прикрепить изображение первого тревожного события
%EIM%  Прикрепить (первое) изображение события с наивысшей оценкой
%EV%   Прикрепить видеозапись события в формате mpeg
%MN%   Название монитора
%MET%  Общее количество событий для монитора
%MEH%  Количество событий для монитора за последний час
%MED%  Количество событий для монитора за последний день
%MEW%  Количество событий для монитора за последнюю неделю
%MEM%  Количество событий для монитора за последний месяц
%MEA%  Количество архивных событий для монитора
%MOD%  Путь к изображению, содержащему обнаружение объекта
%MP%   Путь к окну монитора
%MPS%  Путь к потоку монитора
%MPI%  Путь к последнему изображению монитора
%FN%   Имя текущего фильтра, с которым произошло совпадение
%FP%   Путь к текущему фильтру, который совпал
%ZP%   Путь к консоли ZoneMinder

Теперь, для оправки сообщений по определённому расписанию и(или) событию, нужно настроить фильтр.
В меню выбираем «Фильтры» и создаем новый фильтр с названием «Send Email».
Тут же можно переопределить Получателя,Тему и Содержимое письма.

zmNinja

По сути, единственное приложение, которое работает с ZoneMinder. Начинал его писать и поддерживал, всего один человек, который занимался им с 22:00 до 02:00. Теперь zmNinja на попечении у команды ZoneMinder. Правда, с 2021 г. в приложение не внесено ни одной правки. Но, как утверждают разработчики ZoneMinder, ничего править не требуется, приложение работает со всеми версиями ZoneMonder, до сих пор, замечательно.
Бинарники и исходники можно скачать ТУТ.
Заметки:

  • если нужно запустить несколько экземпляров zmNinja на рабочем столе(ах):
zmninja-pro-1.6.9-linux-x86_64.AppImage --path=/path/to/instance1
zmninja-pro-1.6.9-linux-x86_64.AppImage --path=/path/to/instance2
  • запуск в полноэкранном режиме даёт ключ –fs. Ключи можно комбинировать.

Документация по zmNinja.

Полезное

  • Отладка

Например, в журнале, бывают сообщения такого характера:

zmdc		1933	ERR     'zmc -m 5' exited abnormally, exit status 11	zmdc.pl
zmc_m5		464	ERR	Got signal 11 (Segmentation fault), crashing

Чтобы посмотреть подробно, что происходит, можно в консоли запустить отладчик и посмотреть:

# gdb --args zmc "-m 5"
(gdb) r
  • Перезагрузка камеры с id=5
# /usr/bin/zmdc.pl restart zmc -m 5

Обсуждаем на форуме

Ссылки

Навигация
Печать/экспорт
QR Code
QR Code wiki:articles:zm15 (generated for current page)