Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> Zoneminder

Установка системы видеонаблюдения Zoneminder на FreeBSD 7.0

Автор: densan.


Имеем
media# uname -vFreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008
root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC

Чуть позже ставил на 7.1 установка аналогичная
Ставим апач
media# cd /usr/ports/www/apache22

оставляю все без изменеий
media# make showconfig
     APR_FROM_PORTS=off "Use devel/apr as APR (beware!)"
     THREADS=off "Enable threads support in APR"
     MYSQL=off "Enable MySQL support for apr-dbd"
     PGSQL=off "Enable PostgreSQL support for apr-dbd"
     SQLITE=off "Enable SQLite support for apr-dbd"
     IPV6=off "Enable IPv6 support"
     BDB=off "Enable BerkeleyDB dbm"
     AUTH_BASIC=on "Enable mod_auth_basic"
     AUTH_DIGEST=on "Enable mod_auth_digest"
     AUTHN_FILE=on "Enable mod_authn_file"
     AUTHN_DBD=off "Enable mod_authn_dbd"
     AUTHN_DBM=on "Enable mod_authn_dbm"
     AUTHN_ANON=on "Enable mod_authn_anon"
     AUTHN_DEFAULT=on "Enable mod_authn_default"
     AUTHN_ALIAS=on "Enable mod_authn_alias"
     AUTHZ_HOST=on "Enable mod_authz_host"
     AUTHZ_GROUPFILE=on "Enable mod_authz_groupfile"
     AUTHZ_USER=on "Enable mod_authz_user"
     AUTHZ_DBM=on "Enable mod_authz_dbm"
     AUTHZ_OWNER=on "Enable mod_authz_owner"
     AUTHZ_DEFAULT=on "Enable mod_authz_default"
     CACHE=on "Enable mod_cache"
     DISK_CACHE=on "Enable mod_disk_cache"
     FILE_CACHE=on "Enable mod_file_cache"
     MEM_CACHE=off "Enable mod_mem_cache"
     DAV=on "Enable mod_dav"
     DAV_FS=on "Enable mod_dav_fs"
     BUCKETEER=off "Enable mod_bucketeer"
     CASE_FILTER=off "Enable mod_case_filter"
     CASE_FILTER_IN=off "Enable mod_case_filter_in"
     EXT_FILTER=off "Enable mod_ext_filter"
     LOG_FORENSIC=off "Enable mod_log_forensic"
     OPTIONAL_HOOK_EXPORT=off "Enable mod_optional_hook_export"
     OPTIONAL_HOOK_IMPORT=off "Enable mod_optional_hook_import"
     OPTIONAL_FN_IMPORT=off "Enable mod_optional_fn_import"
     OPTIONAL_FN_EXPORT=off "Enable mod_optional_fn_export"
     LDAP=off "Enable mod_ldap"
     AUTHNZ_LDAP=off "Enable mod_authnz_ldap"
     ACTIONS=on "Enable mod_actions"
     ALIAS=on "Enable mod_alias"
     ASIS=on "Enable mod_asis"
     AUTOINDEX=on "Enable mod_autoindex"
     CERN_META=on "Enable mod_cern_meta"
     CGI=on "Enable mod_cgi"
     CHARSET_LITE=on "Enable mod_charset_lite"
     DBD=off "Enable mod_dbd"
     DEFLATE=on "Enable mod_deflate"
     DIR=on "Enable mod_dir"
     DUMPIO=on "Enable mod_dumpio"
     ENV=on "Enable mod_env"
     EXPIRES=on "Enable mod_expires"
     HEADERS=on "Enable mod_headers"
     IMAGEMAP=on "Enable mod_imagemap"
     INCLUDE=on "Enable mod_include"
     INFO=on "Enable mod_info"
     LOG_CONFIG=on "Enable mod_log_config"
     LOGIO=on "Enable mod_logio"
     MIME=on "Enable mod_mime"
     MIME_MAGIC=on "Enable mod_mime_magic"
     NEGOTIATION=on "Enable mod_negotiation"
     REWRITE=on "Enable mod_rewrite"
     SETENVIF=on "Enable mod_setenvif"
     SPELING=on "Enable mod_speling"
     STATUS=on "Enable mod_status"
     UNIQUE_ID=on "Enable mod_unique_id"
     USERDIR=on "Enable mod_userdir"
     USERTRACK=on "Enable mod_usertrack"
     VHOST_ALIAS=on "Enable mod_vhost_alias"
     FILTER=on "Enable mod_filter"
     VERSION=on "Enable mod_version"
     PROXY=off "Enable mod_proxy"
     PROXY_CONNECT=off "Enable mod_proxy_connect"
     PROXY_FTP=off "Enable mod_proxy_ftp"
     PROXY_HTTP=off "Enable mod_proxy_http"
     PROXY_AJP=off "Enable mod_proxy_ajp"
     PROXY_BALANCER=off "Enable mod_proxy_balancer"
     SSL=on "Enable mod_ssl"
     SUEXEC=off "Enable mod_suexec"
     CGID=off "Enable mod_cgid"
===> Use 'make config' to modify these settings
media# make install clean

Ставим php5
media# cd /usr/ports/lang/php5

Я выбрал такой конфиг.

media# make showconfig
===> The following configuration options are available for php5-5.2.8:
CLI=on "Build CLI version"
CGI=on "Build CGI version"
APACHE=on "Build Apache module"
DEBUG=off "Enable debug"
SUHOSIN=on "Enable Suhosin protection system (not for jails)"
MULTIBYTE=off "Enable zend multibyte support"
IPV6=on "Enable ipv6 support"
MAILHEAD=off "Enable mail header patch"
REDIRECT=off "Enable force-cgi-redirect support (CGI only)"
DISCARD=off "Enable discard-path support (CGI only)"
FASTCGI=on "Enable fastcgi support (CGI only)"
PATHINFO=on "Enable path-info-check support (CGI only)"
media# make install clean

в /usr/local/etc/apache22/httpd.conf добавляем строки
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Ставим mysql
media# cd /usr/ports/databases/mysql51-server
media# make install clean

Ставим php5-extentions
media# cd /usr/ports/lang/php5-extensions
media# make install clean

у меня такой конфиг

media# make showconfig
===> The following configuration options are available for php5-extensions-1.2:
     BCMATH=off "bc style precision math functions"
     BZ2=off "bzip2 library support"
     CALENDAR=off "calendar conversion support"
     CTYPE=on "ctype functions"
     CURL=off "CURL support"
     DBA=off "dba support"
     DBASE=off "dBase library support"
     DOM=on "DOM support"
     EXIF=off "EXIF support"
     FILEINFO=off "fileinfo support"
     FILTER=on "input filter support"
     FRIBIDI=off "FriBidi support"
     FTP=off "FTP support"
     GD=off "GD library support"
     GETTEXT=off "gettext library support"
     GMP=off "GNU MP support"
     HASH=on "HASH Message Digest Framework"
     ICONV=on "iconv support"
     IMAP=off "IMAP support"
     INTERBASE=off "Interbase 6 database support (Firebird)"
     JSON=on "JavaScript Object Serialization support"
     LDAP=off "OpenLDAP support"
     MBSTRING=off "multibyte string support"
     MCRYPT=on "Encryption support"
     MHASH=on "Crypto-hashing support"
     MING=off "ming shockwave flash support"
     MSSQL=off "MS-SQL database support"
     MYSQL=on "MySQL database support"
     MYSQLI=off "MySQLi database support"
     NCURSES=off "ncurses support (CLI only)"
     ODBC=off "unixODBC support"
     OPENSSL=off "OpenSSL support"
     PCNTL=off "pcntl support (CLI only)"
     PDF=off "PDFlib support (implies GD)"
     PDO=on "PHP Data Objects Interface (PDO)"
     PDO_SQLITE=on "PDO sqlite driver"
     PGSQL=off "PostgreSQL database support"
     POSIX=on "POSIX-like functions"
     PSPELL=off "pspell support"
     READLINE=off "readline support (CLI only)"
     RECODE=off "recode support"
     SESSION=on "session support"
     SHMOP=off "shmop support"
     SIMPLEXML=on "simplexml support"
     SNMP=off "SNMP support"
     SOAP=off "SOAP support"
     SOCKETS=off "sockets support"
     SPL=on "Standard PHP Library"
     SQLITE=on "sqlite support"
     SYBASE_CT=off "Sybase database support"
     SYSVMSG=off "System V message support"
     SYSVSEM=off "System V semaphore support"
     SYSVSHM=off "System V shared memory support"
     TIDY=off "TIDY support"
     TOKENIZER=on "tokenizer support"
     WDDX=off "WDDX support (implies XML)"
     XML=on "XML support"
     XMLREADER=on "XMLReader support"
     XMLRPC=off "XMLRPC-EPI support"
     XMLWRITER=on "XMLWriter support"
     XSL=off "XSL support (Implies DOM)"
     YAZ=off "YAZ support (ANSI/NISO Z39.50)"
     ZIP=on "ZIP support"
     ZLIB=off "ZLIB support"
===> Use 'make config' to modify these settings

Создаем файл /usr/local/www/apache22/data/info.php такого содержания.
cat /usr/local/www/apache22/data/info.php
<?
phpinfo();
?>

добавляем в /etc/rc.conf
apache22_enable="YES"
mysql_enable="YES"

Стартуем апач
/usr/local/etc/rc.d/apache22 start

проверяем работу апача с PHP. Входим на страницу http://IP-сервера/info.php. Должны увидеть страницу с информацией об установленом PHP.
Скачиваем Zoneminder, распаковываем и переносим в /usr/ports/multimedia/

media# cd /tmp/media
# fetch http://matrix.gatewaynet.com/panix/zoneminder.tar.gz
media# tar zxvf zoneminder.tar.gz
 zoneminder/x
 zoneminder/files/x
 zoneminder/files/patch-configurex
 zoneminder/files/zm_fbsd_camera.cppx
 zoneminder/files/videodev.h
...
media# mv zoneminder /usr/ports/multimedia/
media# cd /usr/ports/multimedia/zoneminder/

Правим Makefile
т.к. стоит Апач2 исправим mod_perl на mod_perl2, mysql50-server на mysql51-server, p5-DBD-mysql50 на p5-DBD-mysql51. Правим строку WEBBASE= ${LOCALBASE}/www/apache22
выбрал такой конфиг для ffmpeg (снял галки на счет аудиокодеков)

 make showconfig
===> The following configuration options are available for ffmpeg-2008.07.27_7:
     AMR_NB=off "AMR narrowband encoder"
     AMR_WB=off "AMR wideband encoder"
     FAAC=off "FAAC mp4/aac audio encoder"
     FAAD=off "FAAD mp4/aac audio decoder"
     GSM=off "gsm audio codec"
     IPV6=off "IPV6 network support"
     LAME=off "lame MP3 codec"
     LIBA52=on "liba52 support"
     OPTIMIZED_CFLAGS=off "Additional optimizations"
     SDL=off "SDL support (build ffplay)"
     THEORA=on "libtheora support (implies OGG)"
     VORBIS=on "libvorbisenc support (implies OGG)"
     X264=on "X.264 codec"
     XVID=off "XVID codec"
===> Use 'make config' to modify these settings

после установки ffmpeg вывалилась ошибка
aclocal-1.10: not found
WARNING: `aclocal-1.10' is missing on your system.  You should only need it if
         you modified `acinclude.m4' or `configure.in'.  You might want
         to install the `Automake' and `Perl' packages.  Grab them from
         any GNU archive site. 
cd . && /bin/sh /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3/missing --run automake-1.10 --gnu
automake-1.10: not found
WARNING: `automake-1.10' is missing on your system.
	You should only need it if
	you modified `Makefile.am', `acinclude.m4' or `configure.in'.
	You might want to install the `Automake' and `Perl' packages.
	Grab them from any GNU archive site.
cd . && /bin/sh /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3/missing --run autoconf
aclocal.m4:14: error: this file was generated for autoconf 2.61.
You have another version of autoconf.  If you want to use that,
you should regenerate the build system entirely.
aclocal.m4:14: the top level
autom4te-2.62: /usr/local/bin/gm4 failed with exit status: 63
*** Error code 1
Stop in /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3.
*** Error code 1
Stop in /usr/ports/multimedia/zoneminder.

Проблема в том что порт был построен с использованием autoconf 2.61 и автор порта не хочет его переделывать. Предложили следующее решение. Скачать файлы aclocal.m4 и acinclude.m4 в каталог /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3/src, добавить в Makefile строчки
m4
файл скачан размер размещён примечание
m4.ZIP
1008 10.9kb 2009-01-29 m4

MAKE_ARGS= ACLOCAL="${TRUE}" AUTOCONF="${TRUE}" AUTOMAKE="${TRUE}"
 USE_AUTOTOOLS= autoconf:262:env
 USE_AUTOTOOLS= aclocal:110 /usr/local/bin/autoheader:262

media# make clean

У кого-то прокатило и без этих файлов, только правкой Makefile.
и заново
media# make

опять ошибка
zm_mpeg.cpp: In destructor 'VideoStream::~VideoStream()':
zm_mpeg.cpp:281: error: cannot convert 'ByteIOContext**' 
to 'ByteIOContext*' for argument '1' to 'int url_fclose(ByteIOContext*)'
*** Error code 1

в /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3/src/zm_mpeg.cpp на 281 и 283 строках вносим изменения:
за место url_fclose(&ofc->pb); 
url_fclose(ofc->pb); 

media# make install
В этот раз у меня все прошло без ошибок.
добавляем в /etc/rc.conf zm_enable="YES".
Стартуем mysql, входим и создаем БД.
media# /usr/local/etc/rc.d/mysql-server start
Starting mysql.
media# mysql -h localhost -u root -p
mysql: Команда не найдена.
media# rehash
media# mysql -h localhost -u root -p
Enter password:
mysql> source /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3/db/zm_create.sql;
mysql> grant select,insert,update,delete on zm.* to 'zmuser'@localhost identified by 'zmpass'; flush privileges;
mysql> quit
media# ee /usr/local/etc/apache22/httpd.conf

добавляем
<VirtualHost *:80>
        DocumentRoot /usr/local/www/apache22/data/zm
        DirectoryIndex index.php
</VirtualHost>

Теперь нужно пересобрать ядро с параметрами (эти параметры работали у меня с 3 камерами axis206)
options SHMMAXPGS=65536 
options SHMMNI=384 
options SHMSEG=256

у меня после перезагрузки ZM не стартовал, т.к. не видел базу, пришлось в раскомментировать /usr/local/etc/rc.d/zm sleep 10
несколько правок.
Это чтобы работал экпорт видео.

media# cd /usr/local/bin/
media# fetch http://www.hamsterleymill.co.uk/zmvideo.patch
media# patch < zmvideo.patch
Hmm...  Looks like a new-style context diff to me...
The text leading up to this was:
--------------------------
|*** ./zmvideo.pl       Mon Dec 29 02:01:13 2008
|--- ./zmvideo2.pl      Mon Dec 29 01:53:19 2008
--------------------------
Patching file ./zmvideo.pl using Plan A...
Hunk #1 succeeded at 319.done
media#

zmvideo.patch
файл скачан размер размещён примечание
zmvideo.patch
931 0.9kb 2009-03-17 zmvideo.patch

Это чтоб показывалось видео а не картинки в браузере.
media# pwd
/root
media# fetch http://www.charliemouse.com:8080/code/cambozola/cambozola-latest.tar.gz
media# tar zxvf cambozola-latest.tar.gz
 cambozola-0.70/
 cambozola-0.70/bldsrc/
 cambozola-0.70/bldsrc/com/
 cambozola-0.70/bldsrc/com/charliemouse/
 cambozola-0.70/bldsrc/com/charliemouse/embed/
...
media# cp cambozola-0.70/dist/cambozola.jar /usr/local/www/apache22/data/zm/

перезапускаем апач
free# /usr/local/etc/rc.d/apache22 restart

и пробуем войти http://ip-сервера
Нажимаем на кнопку Add New Monitor открывается окно


В Zoneminder уже есть несколько шаблонов для камер. Нажимаем Presets и выбираем камеру


я выбрал Axis IP, 640x480,jpeg. Заполняем поля


Пояснение по режимам: None (и так понятно), Monitor (только просмотр), Modetect (запись только движения что я использую), Record (постоянная запись), Mocord (тоже что и Record, но дополнительно выделяются те области где было замечено движение).


Если доступ к просмотру камеры ограничен по логину/паролю, то в Remote Host Name пишем login:password@IP.
Параметры Remote Image Colors, Capture Width (pixels), Capture Height (pixels) должны быть поставлены те, что на камере.Сохраняем. Делаем это для всех камер.
Теперь сделаем чтоб вход был по логину паролю.
Щелкаем по Options в ZM_OPT_USE_AUTH ставим галку. Нажимаем Save. Обновляем страницу, входим по логину/паролю admin/admin. Заходим в Options - появилась новая вкладка Users. Меняем пароль для админа, заводим при необходимости новых пользователей. Сохраняем.
Чтобы события новын были в списке событий первыми ставим WEB-ZM_WEB_EVENT_SORT_ORDER-desc.
Для просмотра видео-потока с IE ставим


При этом на компьютере должна быть установлена Java
По умолчанию ZM пишет события в каталог events в папке в моем случае /usr/local/www/apache22/data/zm. Я перенес этут папку на отдельный HDD, создал симлинк. Если вы планируете писать большое количество событий, то дабы избежать лимита на 32К подкаталогов на UFS (http://forum.lissyara.su/viewtopic.php?f=8&t=13701&p=126748#p126748) или используйте ZFS либо используйте Paths-ZM_USE_DEEP_STORAGE которая пока в ZM еще в стадии беты.
Т.к. видеонаблюдения я ставил в офисе, чтобы избежать ложных срабатываний посчитал нужным ограничить активные зоны - зоны, движение в которых записывается.
Для этого на главной странице на против нужной камеры в стобце Zone щелкаем на 1. Откроется окно в котором щелкаем на All и добавляя и передвигая точки контура делаем нужную вам активную зону


Сохраняем. При записи будут записываться посетители и не будут телодвижения секретаря руководителя и мелькания на экране монитора.

В данной статье описал всего-лишь первичную настройку Zoneminder.

Обсуждение.



размещено: 2009-01-29,
последнее обновление: 2009-03-17,
автор: densan


fr33man, 2009-01-29 в 19:43:29

Итак, сразу скажу: спасибо за статью, пригодилась!

1. У тебя практически во всех ссылках  двойное окончание:
http://matrix.gatewaynet.com/panix/zoneminder.tar.gzzoneminder.tar.gz
Конкретно вот: zoneminder.tar.gzzoneminder.tar.gz. Два раза одно и тоже. Так что проверь ссылочки.

2. У меня фря 5.5. и не компилилось нифига ни zoneminder, ни automake-1.10. Со вторым все просто: в Makefil'ах удалил директорию doc, чтобы из нее ничего не компилилось...
С первым потруднее: ругался компилер на приведение типов. Приходилось везде подключать файлик sys/types.h и изменять localtime( &start_time.tv_sec) на localtime((time_t *)&start_time.tv_sec). После этого скомпилилось нормульно....

Работает или нет — незнаю. Еще не тестил.

Еще раз спасибо за статью!!!

densan, 2009-01-31 в 16:35:45

http://forum.lissyara.su/viewtopic.php?f=8&t=14924&p=136047#p136047 - как я прикрытил USD камеру A4tech PK-5 в качество источника в Zoneminder.

rmn, 2009-02-09 в 19:14:03

Большое спасибо. Год назад пытался сделать то же самое на 6.2 не получилось. Ставил с родного ИСОшника. Сейчас буду пробывать. Еще раз спасибо.

vados, 2009-03-16 в 11:10:47

Не доступен zmvideo.patch, есть у кого та строчка, которая меняется в патче? Буду очень признателен.

drurus, 2009-03-26 в 23:51:28

Port:    motion-3.2.11_1
Path:    /usr/ports/multimedia/motion
Info:    A motion detection application
конечно не так все удобно с настройками, но те же функции и работает исправно.

Micle, 2009-05-04 в 12:36:40

у меня после перезагрузки ZM не стартовал, т.к. не видел базу, пришлось в раскомментировать /usr/local/etc/rc.d/zm sleep 10

Не очень красиво.
Лучне в начале скрипта написать
# REQUIRE: mysql

и тогда скрипт стартанет только после запуска мускуля.

jafff, 2009-06-17 в 10:06:44

а как на счет версии v1.24.1 под freeBSD, никто порт не соорудил? там интерфейс поудобнее и вродибы есть опция автоматического удаления старых записей если место на диске заканчивается.

densan, 2009-06-18 в 11:38:48

Смотри http://www.zoneminder.com/forums/viewtopic.php?t=13397&highlight=freebsd. У меня сходу не получилось поставить, не было надобности ковырять, т.к. на 1.23 все работает. Если поставишь - жду статью.

jafff, 2009-06-18 в 20:26:17

пробовал так, но уж сильно много путей перепутано, поставил debian... apt-get install zoneminder, и фсе встало без проблем :) + пара настроек в системе, уже работает, 2 камеры пишет, одна IP вторая USB

Rinoa, 2010-02-26 в 13:27:42

Спасибо за статью!

Ded_USAMA, 2011-09-15 в 18:43:36

Поддерживаю предыдущего оратора c Debian. Установка Zoneminder вместе с установкой системы и остальных требуемых пакетов заняла около часа примерно, может чуть больше. Ставил на Hyper-V, образ использовал "netinst". Причем руками только алиас в Апаче добавил, остальное все встало автоматом.
Камеру использовал TP-Link TL-SC3130G. Подключал через RTSP (ffmpeg). Через Remote не захотела работать и ошибки были, как и на FreeBSD: exit abnormally и shared memory.
Только вот на фре эти ошибки были везде, независимо от метода подключения камеры.
Ядро не пересобирал, ни где.
Но с Фрей очень уж мудрено все. Финальное время установки даже подсчитать не могу сейчас, но это несколько часов. В общем фея мне очень нравится, но для Zoneminder'a я буду использовать Debian.

jafff, 2011-09-15 в 19:43:54

смотрите http://avreg.net/ гораздо лучше...

berserk, 2012-03-21 в 15:36:45

Не описан процесс переборки ядра с перечисленными параметрами.
ЗМ толком не работает, видео картинки с ип камер нету.

dimic, 2012-04-16 в 5:51:42

fetch: http://matrix.gatewaynet.com/panix/zoneminder.tar.gz: Operation timed out

densan, 2012-04-16 в 15:58:44

Все уже давно есть в портах. Ставь ZM из портов.

Жеко, 2012-05-22 в 9:48:53

В портах пишет что порт брокен ))

German, 2013-07-16 в 11:41:21

Не работают кнопки управления видео (пауза, плей и т.д.) при просмотре. Как поправить пока не нашел.
freebd 9.1, apach22, php5, zm 1.25

nik, 2013-07-16 в 16:49:17

Если кнопки не работают то см в сторону кодеков, возможно в сторону ffmpeg (у меня такая херь была)

nero777, 2013-08-17 в 21:46:01

Freebsd-9.1-p3-моя домашняя машинка; две usb-дешёвые веб-камеры. обе зелёные - но изображения в zm нет.нет и скринов.камеры проверены и в vlc,pwcview,skype - всё путём.а zm ? куда уже и копать - не догоню.zm 1.25.0

nero777, 2013-08-18 в 12:56:42

после ребута - как-бы заработало



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0811 секунд
Из них PHP: 47%; SQL: 53%; Число SQL-запросов: 85 шт.
Исходный размер: 79375; Сжатая: 15704