Содержание

Дата написания:
версия 1.30.0 - октябрь 2016 г.
версия 1.35.4 - май 2020 г.
версия 1.36.32 на Slackware 15.0 - февраль 2023 г. ТУТ
Автор: Graf


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


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

Установка

Версия - 1.30.0

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

Устанавливаем ffmpeg от Alien, последний на день написания статьи 3.1.1.

# wget http://taper.alienbase.nl/mirrors/people/alien/restricted_slackbuilds/ffmpeg/pkg64/14.2/ffmpeg-3.1.1-x86_64-1alien.txz
# upgradepkg --install-new ./ffmpeg-3.1.1-x86_64-1alien.txz

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

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

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

# wget https://github.com/sbopkg/sbopkg/releases/download/0.38.1/sbopkg-0.38.1-noarch-1_wsr.tgz
# upgradepkg --install-new ./sbopkg-0.38.1-noarch-1_wsr.tgz
# sbopkg -r

Собираем и устанавливаем необходимые пакеты.

# sbopkg -Bi "perl-Test-Inter perl-Test-Pod perl-Devel-Symdump perl-Pod-Coverage perl-Test-Pod-Coverage \
perl-yaml perl-YAML-Syck perl-net-http perl-www-robotrules perl-http-date perl-file-listing perl-IO-HTML \
perl-encode-locale perl-http-date perl-lwp-mediatypes perl-html-tagset perl-html-parser perl-http-message \
perl-http-negotiate perl-http-cookies perl-http-daemon libwww-perl perl-Date-Manip perl-Time-modules \
perl-Astro-SunTime perl-Device-SerialPort perl-X10 perl-Capture-Tiny perl-Email-Date-Format perl-MIME-Lite \
perl-Sys-Mmap perl-IO-Socket-SSL Net-SSLeay perl-Mozilla-CA perl-LWP-Protocol-https perl-Sys-MemInfo"

Собираем и устанавливаем сам ZoneMinder.

# git clone https://github.com/ZoneMinder/ZoneMinder.git
# cd ZoneMinder
# git submodule update --init --recursive 
# cmake -DCMAKE_INSTALL_PREFIX=/usr -DZM_WEBDIR=/var/www/htdocs/zm -DZM_CGIDIR=/var/www/cgi-bin \
-DZM_CONTENTDIR=/var/www/htdocs/zm 

# make
# make install DESTDIR=/tmp/ZoneMinder-1.30.0
# cd /tmp/ZoneMinder-1.30.0/
# makepkg -l y -c n /tmp/ZoneMinder-1.30.0-x86_64-1.txz
# upgradepkg --install-new /tmp/ZoneMinder-1.30.0-x86_64-1.txz

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

# mkdir -p /var/{run/zm,log/zm,www/htdocs/zm/{events,images,sounds}}
# 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

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

Версия - 1.35.4


Используем Slackware Linux 14.2 64-bit без DE и всем, что с ними связанно.
Обновляем все доступные пакеты посредством slackpkg, в итоге получая ядро 4.4.217.
IP сервера куда всё устанавливаем и где настраиваем - 192.168.10.214
ZoneMinder версии 1.35.4
Веб-интерфейс сильно изменился!!!

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

# wget https://github.com/sbopkg/sbopkg/releases/download/0.38.1/sbopkg-0.38.1-noarch-1_wsr.tgz
# upgradepkg --install-new ./sbopkg-0.38.1-noarch-1_wsr.tgz
# sbopkg -r

Собираем и устанавливаем необходимые пакеты.

# sbopkg -Bki "perl-Test-Inter perl-Test-Pod perl-Devel-Symdump perl-Pod-Coverage perl-Test-Pod-Coverage \
perl-yaml perl-YAML-Syck perl-net-http perl-www-robotrules perl-http-date perl-file-listing perl-IO-HTML \
perl-encode-locale perl-http-date perl-lwp-mediatypes perl-html-tagset perl-html-parser perl-http-message \
perl-http-negotiate perl-http-cookies perl-http-daemon libwww-perl perl-Date-Manip perl-Time-modules \
perl-Astro-SunTime perl-Device-SerialPort perl-X10 perl-Capture-Tiny perl-Email-Date-Format perl-MIME-Lite \
perl-Sys-Mmap perl-IO-Socket-SSL Net-SSLeay perl-Mozilla-CA perl-Module-Runtime Crypt-SSLeay perl-Sys-MemInfo \
perl-Crypt-Eksblowfish \
speex lame x264 x265 opus libgme gsm libilbc xvidcore libass libmodplug rtmpdump jansson libjwt libmp4v2 php-apcu OpenAL"

# cpan LWP::Protocol::https
# cpan Data::Entropy::Algorithms
# cpan Crypt::JWT
# cpan Date::Format
# cpan Number::Bytes::Human

Собираем свой ffmpeg.Скачаем тарбол со Slackbuild'ом и иже с ним. Распакуем его, и сюда же скачаем последние исходники ffmpeg (на сегодня 4.2.2)

# wget https://slackware.su/forum/files/zm/ffmpeg.tar.gz
# tar xf ./ffmpeg.tar.gz
# cd ffmpeg
# wget http://www.ffmpeg.org/releases/ffmpeg-4.2.2.tar.xz

Файлам ./SlackBuild и ./ff_build присваиваем бит запуска и запускаем ./ff_build. После сборки устанавливаем получившийся пакет.

# chmod +x ./ffmpeg.SlackBuild
# chmod +x ./ff_build
# ./ff_build
...
...
Slackware package /tmp/ffmpeg-4.2.2-x86_64-1_SBo.tgz created.

# upgradepkg --install-new /tmp/ffmpeg-4.2.2-x86_64-1_SBo.tgz
...
...
Package ffmpeg-4.2.2-x86_64-1_SBo.tgz installed.

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

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

Собираем и устанавливаем сам ZoneMinder. Перед сборкой внесём изменения в файл src/zm_event.cpp которые позволять смотреть и записывать камеры в формате mp4 без ошибок.

# git clone https://github.com/ZoneMinder/ZoneMinder.git
# cd ZoneMinder
# git submodule update --init --recursive 
# wget https://slackware.su/forum/files/zm/fix_video_file_format.patch
# patch -p0 < ./fix_video_file_format.patch
# 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.35.4
# cd /tmp/ZoneMinder-1.35.4/
# makepkg -l y -c n /tmp/ZoneMinder-1.35.4-x86_64-1.txz
# upgradepkg --install-new /tmp/ZoneMinder-1.35.4-x86_64-1.txz

На всякий случай, содержимое файла fix_video_file_format.patch

--- src/zm_event.cpp    2019-01-21 23:17:19.881961455 -0500
+++ src/zm_event.cpp.new        2019-01-21 23:17:38.452315254 -0500
@@ -196,7 +196,7 @@
 
   if ( monitor->GetOptVideoWriter() != 0 ) {
     snprintf(video_name, sizeof(video_name), "%" PRIu64 "-%s", id, "video.mp4");
-    snprintf(video_file, sizeof(video_file), staticConfig.video_file_format, path, video_name);
+    snprintf(video_file, sizeof(video_file), "%s/%s", path, video_name);
     Debug(1,"Writing video file to %s", video_file );
 
     /* X264 MP4 video writer */

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

# 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

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

Настройка

Версия - 1.30.0

Так как 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

Редактируем /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

Правим необходимые секции:

Было Стало
DocumentRoot "/srv/httpd/htdocs"
<Directory "/srv/httpd/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
DocumentRoot "/srv/httpd/htdocs"
<Directory "/var/www/htdocs">
    Options Indexes FollowSymLinks IncludesNOEXEC
    AllowOverride All
    Require all granted
    <RequireAll>
      <RequireAny>
          Require user apache
      </RequireAny>
    </RequireAll>
</Directory>
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php
</IfModule>
<Directory "/srv/httpd/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>
<Directory "/srv/httpd/cgi-bin">
    AllowOverride None
    Options FollowSymLinks
    Require all granted
</Directory>

В /etc/php.ini убираем знак комментария и редактируем timezone:

[Date]
date.timezone = Europe/Moscow

Для работы сторонних приложений (например, мобильных) отредактируем файлы:

Файл Содержимое
/var/www/htdocs/zm/api/.htaccess
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule ^$ app/webroot/ [L]
   RewriteRule (.*) app/webroot/$1 [L]
#   RewriteBase /zm/api
</IfModule>
/var/www/htdocs/zm/api/app/.htaccess
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
#    RewriteBase /zm/api
</IfModule>
/var/www/htdocs/zm/api/app/webroot/.htaccess
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
#    RewriteBase /zm/api
</IfModule>

Запускаем Apache.

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

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

http://192.168.10.214/zm/api/ - должно быть все зеленым.



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

{
    "version": "1.30.0",
    "apiversion": "1.0"
}

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

Версия - 1.35.4


Так как 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

Редактируем /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

# Дописываем
Include /etc/httpd/extra/zm_httpd.conf

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

<VirtualHost *:80>
    ServerName video-server.mydom.lan
    ServerAlias 192.168.10.214
 
    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.214/api/host/getVersion.json — должны увидеть

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

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

Обновление

Версия - 1.30.0

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

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

Полученный файл перенести на вновь установленную Slackware Linux 14.2 и ZM-1.30.0 по данной статье. Остановить ZM и апач:

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

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

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

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

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

или

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

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

# zmupdate.pl

ответить на вопросы и получить базу равную 1.30.0

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

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

Версии - 1.35.*


Аналогично Версии - 1.30.0

Русификация

Версия - 1.30.*

После русификации опций и помощи по ним, параметр Система→AUTH_HASH_SECRET будет перезаписан! Необходимо ввести его заново.

Архив zm_ru_ru_utf8-1.30.0.tar.gz содержит 4 файла: database.php, ru_ru.php, ru_ru_utf8.sql и functions.php.
Необходимо:
1. заменить файл database.php и functions.php в zm/includes.
Или внести изменения в ручную в database.php, поменяв строку (в ZM-1.30.0 46-ю) с

$dbConn = new PDO( ZM_DB_TYPE . $socket . ';dbname='.ZM_DB_NAME, ZM_DB_USER, ZM_DB_PASS );

на

$dbConn = new PDO( ZM_DB_TYPE . $socket . ';dbname='.ZM_DB_NAME, ZM_DB_USER, ZM_DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") );

Файл functions.php не влияет на русификацию, но в нем исправлена ошибка постоянно появляющаяся в логах - disk_total_space returned false for events.

2. заменить файл ru_ru.php в zm/lang;
3. «Скормить» MySQL ru_ru_utf8.sql

# mysql -u root -p zm < где/оно/лежит/ru_ru_utf8.sql

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

Версия - 1.35.*


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

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

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

Фильтры, zmNinja и прочее

Применение фильтров

Опишу работу с фильтрами на основе 2 примеров:

1. отправка сообщений по e-mail.
Заходим в «Параметры» → «Email» и настраиваем под себя (пример на картинке), сохраняем; заходим в «Фильтры» и настраиваем под себя (пример на картинке), сохраняем; вводим название фильтра, помечаем его на работу в фоне и сохраняем (пример на картинке). 2. удаление записей старше 7 дней.
Заходим в «Фильтры» и настраиваем под себя (пример на картинке). Для добавления новой строки с условием (и/или) нужно нажать на знак «+». Сохраняем; вводим название фильтра, помечаем его на работу в фоне и сохраняем (пример на картинке).

zmNinja

Как говорят на официальном сайте, zmNinja является потрясающим приложением для домашней безопасности, которое работает с ZoneMinder. zmNinja не поддерживается большой корпорацией. Это всего лишь один чувак, занимающийся им с 22:00 до 02:00.
Это приложение для просмотра и настройки камер на ZoneMinder. Есть мобильная (платная) версия и бесплатная для работы на компьютере. Бинарники и исходники можно скачать ТУТ.
Про самостоятельную сборку zmNinja из исходников написано ТУТ.
Для того, чтобы в zmNinja отображались камеры нужно в ZoneMinder разрешить использование API.

Если планируется только смотреть, а не управлять, то у пользователя должны быть права на просмотр монитора и поток.

Cambozola

Cambozola — это ароматизированный обезжиренный сыр, удобный Java-апплет для ZoneMinder, который используется для просмотра потока изображений в браузерах, таких как Internet Explorer, которые изначально не корректно работают с данным форматом. Рекомендуется установить данный апплет, во избежания проблем при просмотре потока в IE. Однако, если он не установлен, то изображения можно просматривать при более низкой скорости обновления.

Для сборки данного апплета необходим JDK и ant.
Собираем JDK. Переходим на сайт Oracle выбираем загрузку JDK, соглашаемся с лицензией и скачиваем архив для нашей платформы.
В моем случае, на сегодня — это jdk-8u102-linux-x64.tar.gz
Скопируем этот файл в /tmp/jdk/ и запустим java.SlackBuild с загрузочного DVD Slackware64 из extra/java или после распаковки файла java.tar.gz

# ./java.SlackBuild /tmp/jdk/jdk-8u102-linux-x64.tar.gz
...
Slackware package /tmp/jdk-8u102-x86_64-1.txz created.

Установим пакет

# upgradepkg --install-new /tmp/jdk-8u102-x86_64-1.txz
...
Package jdk-8u102-x86_64-1.txz installed.

После установки JDK, лучше повторно войти в систему или перезагрузиться.

Далее собираем и устанавливаем ant при помощи sbopkg.

# sbopkg -Bi apache-ant

Скачиваем с официального сайта cambozola-latest.tar.gz, распаковываем, переходим в каталог (на сегодня это cambozola-0.936) и запускаем ant:

# cd cambozola-0.936
# ant

В каталоге cambozola-0.936/dist/ получаем 3 файла: cambozola.jar, cambozola-unsigned.jar, cambozola-server.jar
Копируем файл cambozola.jar в каталог с установленным ZoneMinder, по статье это /var/www/htdocs/zm.

# cp cambozola-0.936/dist/cambozola.jar /var/www/htdocs/zm/

И разрешаем использование данного апплета в «Параметры» → «Изображения»

Заметки по работе с видео

1. Сглаживание видео

Если у вас идет вещание и запись с не большой скоростью, допустим, 6 к/с, то передав некоторые параметры ffmpeg, можно получить на выходе видео файл (например, avi) несколько сглаженным, без рывков. Для этого заходим «Параметры» → «Изображения» и прописываем входные и выходные параметры для ffmpeg


Большинство параметров ffmpeg на русском, хорошо описаны ТУТ.

Правда, в таком случае, при генерации видео прямо из ZoneMinder, выбранные параметры в окне генерации не повлияют на создаваемый видео файл. Обратите внимание на картинку, размер видео файла в реальном времени и увеличенном на 50, одинаков. Т.е. в любом случае видео получается со скоростью 25 к/с, которая задана в FFMPEG_OUTPUT_OPTIONS (ключ -r 25).


2. Особенности настройки мониторов

Я покажу настройку мониторов для 2 типов подключений, ffmpeg и удаленный.

FFMPEG (RTSP)
Удаленный (RTSP)
Удаленный (HTTP)


3. В большинстве браузеров не показывается одновременно более 5-6 камер

При клике на «Общий вид» показывается 5-6 камер, на местах остальных, лишь пустые квадраты. При этом Chromium/Chrome показывает в строке сообщений «Ожидание свободного сокета…». Решается путем правки DNS и указания ZoneMinder, якобы, дополнительных серверов. (Спасибо hokum13). Проверялось на браузерах Chromium/Chrome/Firefox/SeaMonkey/встроенный в WebOS на телевизоре. У тех, кто пользуется приложением zmNinja или браузером Safari, такой проблемы нет.

Если к серверу ZoneMinder, кроме локальных пользователей, подключаются еще и удалённые, то править лучше свои глобальные DNS записи, т.е. у хостеров, провайдеров, регистраторов и т.д., там где у вас есть права на изменения записей в DNS. Если сервер ZoneMinder только для нужд локалки, то соответственно, править локальный DNS или файл /etc/hosts и на сервере, и на каждом подключаемом компьютере.

В моем случае к серверу ZoneMinder есть доступ удалённым пользователям по URL, допустим, vm.mydom.ru. Для решения нашей проблемы нужно создать количество CNAME записей равных количеству камер/5. Допустим, у меня их 12 штук, значить я создам 3 CNAME записи (округлил до 15, разделил на 5, получил 3). (Пример для bind)

...
...
vm      IN      A       22.33.44.55
vm1     IN      CNAME   vm
vm2     IN      CNAME   vm
vm3     IN      CNAME   vm
...
...

Всё, записи обновятся не сразу, надо подождать. Настраиваем ZoneMinder. Переходим в «Параметры→Серверы» и добавляем наши «сервера».


Теперь проходим по каждому монитору и выбираем по каждому свой сервер, на 5 мониторов один.


В итоге получаем:


Теперь показывают все камеры.

4. Перезагрузка камер

Иногда картинка зависает или вообще нет изображения. Помогает открытие свойства камеры и клик по кнопке «сохранить», по сути, тот же рестарт. Можно создать скрипт и поместить в крон. Пример для монитора №28.

/usr/bin/zmdc.pl restart zmc -m 28

Создано по мотивам ветки Форума
Обсуждаем на форуме