Это старая версия документа!
Содержание
Дата написания:
версия 1.30.0 - октябрь 2016 г.
версия 1.35.4 - май 2020 г.
Автор: Graf
Сервер видеонаблюдения на базе 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)
Так как 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
Правим необходимые секции:
Было | Стало |
---|---|
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)
Так как 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 # Дописываем 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/httpd/zm/zm_error_log" CustomLog "/var/log/httpd/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
«Подсунуть» данный файл мускулу:
# 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.4
Аналогично Версии - 1.30.0
Русификация
Версия - 1.30.*
Архив 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 :)
Перевод опций и помощи по ним, выполнен мной единолично, поэтому весьма вероятны не точности и ошибки. Пишите на форуме в специальной ветке обсуждения данной статьи, постараюсь своевременно их исправлять.
Версия - 1.36.*
Архив ru-ru-php_1.36.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