Download ZoneMinder
To get started, you’ll need to download ZoneMinder. Packages make it super easy to install, and we offer the source code for those that want full control.
Ubuntu
Isaac Connor is maintaining a PPA. The packages included in the default Ubuntu repos are out of date, so please don’t install ZoneMinder using Ubuntu’s repos.
RedHat
RHEL, Fedora, CentOS, SL and other compatible clones should refer to the Redhat — ZoneMinder Documentation to get and install ZoneMinder.
Debian
Bill Bunge maintains an updated Debian installation wiki which makes it very easy to install ZoneMinder on Debian.
Gentoo
ZoneMinder is available just by typing emerge zoneminder . Thanks to the Gentoo web-apps team for making this available.
Source
If you can’t use a package, or maybe you just prefer to build everything on your own, ZoneMinder uses the cmake system to build from source. See instructions here.
Mobile App
zmNinja is available for Android, iOS and a host of desktop platforms. zmNinja is a companion application developed by @pliablepixels.
Windows
ZoneMinder does not run on any, and is incompatible with, all versions of Windows. We have no plans to support Windows. It is possible to run ZoneMinder under Windows Subsystem for Linux.
ZoneMinder Viewer
ZoneMinder Viewer представляет из себя систему наблюдения с нескольких камер.
Домик в деревне. Картошечка, укропчик, помидорки.
Маленький магазинчик. Водочка, пивко, конфетки.
И пока никаких проблем.
Люди любят окружать себя материальными благами цивилизации.
Дорогие вещи, недвижимость, машины, о них нужно заботиться и охранять.
Попробуем сделать нашу жизнь немного легче – поставим виртуального сторожа, который никогда не спит.
Это ZoneMinder Viewer.
ZoneMinder Viewer является пакетом приложений, который предназначен для использования в системах видеонаблюдения, включая защиту от воров, а также наблюдение за детьми, членами семьи и домашними животными.
ZoneMinder Viewer поддерживает оцифровку, анализ, запись и наблюдение за видеоданными, поступающими с одной или нескольких видео или сетевых камер, подключенных в системе.
ZoneMinder Viewer характеризуется удобным Web интерфейсом, позволяющим просматривать текущую видеоинформацию, просматривать видеоархив и удалять изображения и видео, полученные с камеры.
ZoneMinder Viewer умеет не только записывать одновременно несколько видеопотоков, но и поддерживает технологию Live motion (определение движения в кадре) .
Захват видео возможен с аналоговых видеокамер, подключаемых через video4linux2 — совместимые платы видеозахвата, а также c сетевых ip-камер и видеосерверов работающих по протоколу Motion JPEG (MJPEG) over HTTP.
ZoneMinder на службе клиентской зоны
В данной заметке я хочю разобрать как поднять сервис видеонаблюдения за зоной где находятся клиентские автомобили которые они передали в центр на обслуживание. К примеру пришел человек в дилерский центр своей марки автомобиля, и пока он ждет к примеру сидя на диванчике в клиентской зоне или в баре он может на выведенном мониторе в режиме реального времени наблюдать за своим автомобилем. Достаточно удобно и этим мы выражаем клиенту что мы всячески заботимся о его сервисе и его автомобиль в зоне видимости.
Все дальнейшие действия я буду производить на системе Ubuntu 12.04.5 Server amd64
текущий характеристики которой в рамках моего сперва теста:
- RAM = 1Gb
- HDD = 25Gb
- CPU = 1Gb
используемые камеры: Acti ACM-5611 A1D-220-V3.14.19-AC
Обновляю информацию по репозитариям и установленным пакетам системы:
$ sudo apt-get update && sudo apt-get upgrade -y
Проверяю текущую версию разворачиваемого пакета ZoneMinder присутствующего в дефолтных репозитариях:
$ apt-cache show zoneminder | grep Version
Устанавливаю пакет ZoneMinder в систему:
$ sudo apt-get install zoneminder -y
в процессе если не установлен mysql придется создать пароль на учетную запись root применительно к БД:
New password for the MySQL «root» user:712mbddr@
Repeat password for the MySQL «root» user:712mbddr@
Mailname of your system: srv-mon_
Smarthosts:ничего не ввожу, просто удаляю что было введено установщиком
Настройку почты я разберу чуточку позже.
если же хочется использоваться саму последнюю версию программного обеспечения, то нужно подключить репозитарий PPA:
$ sudo nano /etc/apt/sources.list
deb http://ppa.launchpad.net/iconnor/zoneminder/ubuntu precise main
deb-src http://ppa.launchpad.net/iconnor/zoneminder/ubuntu precise main
P.S. Разработчики да оставили ссылку на этот репозитарий для Ubuntu Precise но внутри больше нет пакетов (deb-пакетов), так что уже пока не получится развернуть ZM по этой заметке. Мое уточнение от 21.03.2016.
P.S. Переработанная (работоспособная) заметка доступна здесь
$ sudo apt-get update
W: GPG error: http://ppa.launchpad.net precise Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 4D0BF748776FFB04
Добавляю данный публичный ключ в систему:
$ sudo apt-key adv —keyserver keyserver.ubuntu.com —recv 4D0BF748776FFB04
$ sudo apt-get update
Далее обновляю текущую версию пакета ZoneMinder 1.25.0-1 до самого последнего состояния:
$ apt-cache show zoneminder | grep Version
$ apt-cache policy zoneminder
500 http://ppa.launchpad.net/iconnor/zoneminder/ubuntu/ precise/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages
$ sudo apt-get install zoneminder=1.28.1-precise-1 -y
ZoneMinder is stopped
invoke-rc.d: initscript zoneminder, action «status» failed.
Previous versions of ZoneMinder used the MyISAM database engine.
However, the recommended database engine is InnoDB.
Hint: InnoDB tables are much less likely to be corrupted during an unclean shutdown.
Press ‘y’ to convert your tables to InnoDB or ‘n’ to skip : y
Converting MyISAM tables to InnoDB. Please wait.
Database already at version 1.28.1, update aborted.
Starting ZoneMinder: success
Setting up gs-cjk-resource (1.20100103-3) …
Setting up libgs9 (9.05
Setting up ghostscript (9.05
Processing triggers for libc-bin …
ldconfig deferred processing now taking place
После перехожу к настройке: — сайта
$ sudo ln -s /etc/zm/apache.conf /etc/apache2/sites-available/zoneminder.conf
$ sudo nano /etc/apache2/apache2.conf
$ sudo a2ensite zoneminder.conf
Перезапускаю Веб сервер Apache:
$ sudo service apache2 reload
После проверяю, что сайт ZoneMinder работает, для этого запускаем браузер где в строке URL адреса указываем: http://IP&DNS/zm и перед нами предстает Административная страница по организации видеонаблюдения:
Чтобы вам было проще ориентироваться включите русский язык оболочки. Для этого нажмите на Options и в строке LANG_DEFAULT установите значение ru-ru и нажмите на кнопку save внизу либо выставляем значение: en_us , как сделал я.
Теперь нужно в интерфейс ZoneMinder добавить камеры, для этого нажимаем: Add New Monitor открывается всплывающее окно мастера где определяются параметры на добавления видеоустройства (т.е. камеры):
В открывшемся окне вкладке General (Общее) указываем:
- Name: Camera1 (удобное имя камеры)
- Source Type: Remote (Тип источника камеры)
- Function: Monitor
- Варианты определяемых функций:
- Monitor: — обычное наблюдение за изображением без записи
- record: — постоянная запись
- modect – запись при наличии в видео ряде движения
- Enabled: отмечаем галочкой
После переходим на вкладку Source где задаем параметры подключения к IP камере:
- Remote Protocol: HTTP
- Remote Method: Simple
- Remote Host Name: ekzorchik:712mbddr@192.168.13.27
- Remote Host Port: 80 (Удаленный порт)
- Remote Host Path: /cgi-bin/cmd/encoder?GET_STREAM (Путь на удаленном устройстве)
- Target Colorspace: 24 bit colour
- Capture Width (pixels): 1280 (Размер по X (в пикселях))
- Capture Height (pixels): 1024 (Размер по Y (в пикселях))
- Orientation: Normal (Ориентация)
- Deinterlacing: Four field motion adaptive – Medium
- После переключаюсь на вкладку: Buffers (буферы)
- Image Buffer Size (frames): 50
- Warmup Frames: 25
- Pre Event Image Count: 25
- Post Event Image Count: 25
- Stream Replay Image Buffer: 200
- Alarm Frame Count: 1
На заметку: имя камеры должно быть не на русском написано, а на английском, в противном случае у Вас будет ошибка вида:
Names may only contain alphanumeric characters plus hyphen and underscore
После нажимаю Save текущего окна настроек камеры и в главном меня появится добавленная настроенная камера:
Щелкнув по именованию Camera1 откроется новое окно где будет показано изображения получаемое в режиме реального времени с видеокамеры в полный размер, а именно 1280 на 1024 именно такие настройки указаны на самой камере.
Варьируя параметром Scale, сейчас я выставил ¼ – можно регулировать размер отображаемой картинки в Web-представленном интерфейсе.
По такому же принципу как я добавил камеру выше добавляю остальные 3 штуки, но если же у Вас все таки видео по добавленной камере не отображается, а добавленная камера в Web-интерфейсе управления ZoneMinder
источник камеры 192.168.13.27 – отмечен красным, значит Вам дорога в правый угол где нужно нажать Log и анализировать проблемы почему такое произошло, хотя можно и обратить внимание на строку по середине: ZoneMinder Console — Stopped – v1.28.1 и щелкнуть по состоянию Stopped а далее выставить: Start – и нажать Apply
После этого строка добавленной камеры сменит свой статус на активированный:
Отлично, рассматриваю что у меня происходило когда я добавил все 4 камеры, две из них показывали, а вот остальные две нет:
Открыв логи, обнаружил, что присутствуют ошибки:
2015-06-27 09:01:53.921944 | zms | 2543 | WAR | Shared data not initialised by capture daemon, some query functions may not be available or produce invalid results for monitor Camera2 | zm_monitor.cpp |
2015-06-27 09:01:53.808429 | web_php | 2432 | ERR | socket_sendto( /tmp/zm/zms-427548s.sock ) failed: No such file or directory | /usr/share/zoneminder/includes/functions.php |
2015-06-27 09:01:35.547113 | zms | 2527 | WAR | Shared data not initialised by capture daemon, some query functions may not be available or produce invalid results for monitor Camera3 | zm_monitor.cpp |
2015-06-27 09:07:21.587530 | zmdc | 3014 | ERR | ‘zmc -m 4’ exited abnormally, exit status 255 | zmdc.pl |
2015-06-27 09:07:21.378150 | zmdc | 3014 | ERR | ‘zmc -m 3’ exited abnormally, exit status 255 | zmdc.pl |
Большую часть лога я опустил, но уже некоторая его часть дает понять, что при добавлении последующий каме р 3 и 4 сервис ZoneMinder начинает сбоить от поступающей информации .
При тестировании доступности камеры 3 & 4 получаю ответ
Unable to determine path for arp command, type -p arp returned ‘127’
В моем случае это просто с текущей системы нельзя сделать arp запрос к камере с целью определить MAC адрес устройства и только то, так что это никакой роли не играет.
Почитавши документацию и различные форумы пришел к выводу что у меня на системе нужно поправить параметр отвечающий за общую память (shared memory), отобразить текущий параметры системы:
—— Shared Memory Limits ———
max number of segments = 4096 (Максимум очередей для всей системы)
max seg size (kbytes) = 32768
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1
—— Semaphore Limits ——— (Пределы семафоров)
max number of arrays = 128 (Максимальное количество массивов)
max semaphores per array = 250 (Максимум семафоров на массив)
max semaphores system wide = 32000 (Максимум семафоров на всю систему)
max ops per semop call = 32 (Максимум операций на вызов семафора)
semaphore max value = 32767 (Максимальное значение семафора)
—— Messages Limits ———(Пределы совместного использования памяти)
max queues system wide = 1982
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384
Но вот как посчитать рекомендуемое значение shared memory для текущей системы, т.к. какие значения shmmax & shmall нужно предопределить в системе для корректной работы программы ZoneMinder, почитавши различных форумов остановился на этом варианте: Ниже скрипт который определит на основе текущей системы необходимые значения:
#!/bin/bash
# simple shmsetup script
page_size= getconf PAGE_SIZE
phys_pages= getconf _PHYS_PAGES
shmall= expr $phys_pages / 2
shmmax= expr $shmall \* $page_size
echo kernel.shmmax = $shmmax
echo kernel.shmall = $shmall
$ sudo bash -c «sh ./kernel >> /etc/sysctl.conf»
После перезапускаю систему:
Результат такой же, видимо 1Gb памяти системе не достаточно, из дальнейшей вычитки как расчитывается все-таки параметр
- для x86 архитектуры: 4*1024*1024*1024 – итого значение в байтах но не более 4Gb
- для x64 архитектуры: уже такого ограничения нет.
В документации к программе рекомендуется выставить значение в 127 Мегабайт переведя его в байты, но мне к слову это тоже не помогло.
Раз не получается, то увеличил просто размер оперативной памяти на системе с 1Gb до 4Gb и ни каких значения в /etc/sysctl.conf я не вносил
Система сама предопределила наиболее корректные для нее значения:
итог, все IP камеры успешно завелись и отображаются, в логах кстати всё чисто:
Теперь мне нужно чтобы с одной странички можно было наблюдать за всеми четырьмя камерами сразу, делается это с помощью плагина именованного как cambozola, устанавливаю его в систему:
$ sudo wget http://www.charliemouse.com:8080/code/cambozola/cambozola-latest.tar.gz
$ tar -xzf cambozola-latest.tar.gz
$ sudo cp cambozola-0.936/dist/cambozola.jar /usr/share/zoneminder/
Теперь щелкаем по Running и перезапускаем Zoneminder, как только процесс завершится – переход на ссылки именованной, как Montage позволит манипулировать процессом отображения всех 4 камер с одной страницы.
К примеру как-то так:, но придется подобрать значения:
Теперь имея полученное можно задействовать ссылку (ее вид: http://IP&DNS/zm/index.php?view=montage&group=0) на доступ к данной странице использовать на телевизорах подключенных к тонкому клиенту к примеру: HP EliteDesk800G1 (этот уже лучше чем всякие доисторические Tonk 1202,1207) в клиентской зоне.
Через неделю взглянув на экран с моим ZoneMinder обнаружил, что видеоизображение с камер не отображается
, в логах идут ошибки
Еще более внимательное чтение логов и форумов показало, что у меня файл сайт zoneminder.conf содержит не вполне корректные значения – изменил на:
$ sudo nano /etc/apache2/sites-available/zoneminder.conf
Alias /zm /usr/share/zoneminder
php_flag register_globals off
php_value short_open_tag 1
Options Indexes FollowSymLinks
ScriptAlias /cgi-bin /usr/lib/cgi-bin
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
# The code unfortunately uses short tags in many places
php_value short_open_tag 1
Сохранил внесенные изменения, а после перезапустил Web-сервис Apache & ZoneMinder
$ sudo service apache2 stop
$ sudo service zoneminder stop
Stopping ZoneMinder: success
$ sudo service zoneminder start
Starting ZoneMinder: success
$ sudo service apache2 start
и после действий выше ошибка была успешно исправлена и видео стена стала работать как и раньше. Вот так всегда сделаешь что-то, а потом потребуется улучшение к созданному. Считаю заметку выполненной. И прощаюсь с уважением, автор блога – ekzorchik.
Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:
Поблагодари автора и новые статьи
будут появляться чаще 🙂
Карта МКБ: 4432-7300-2472-8059
Yandex-деньги: 41001520055047
Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.