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

Настройка Zoneminder – система видеонаблюдения.

Автор: TeXNiC.


Постановка задачи.

После нескольких инцидентов  в офисе с пропажей материальных ценностей сотрудников, решено было поставить
систему видеонаблюдения. Требования к системе такие: снятие картинки с четырех камер, регистрация события
по движению, удобное управление и просмотр событий.

Изначально был приобретен четырехканальный USB видеорегистратор, неизвестного китайского происхождения, но
он не заработал даже под виндой, да и я изначально сомневался будут ли работать с ним проги под FreeBSD.
USB регистратор был благополучно обменян на PCI DVR Карту ENC EK-500F,  тоже четырехканальную и тоже
неизвестного китайского производства. Основана она на чипе Conexant Fusion 878A, который поддерживается
FreeBSD.
Вот фото коробки, то что нарисованно на коробке и ее содержимое две разные вещи.



А так приблизительно выглядит карта, фото в интернете нашел, сфоткать установленую карту не
сфотографировал, а теперь она недоступна для съемок.

 

Из программного обеспечения выбор пал на Zoneminder, т.к. есть порт под FreeBSD, есть ветка обсуждения на
родном форуме программы, имеет более-менее нормальный функционал.

Приступим к боевым действиям.

uname -v
FreeBSD 7.0-RELEASE #1: Sat Nov  8 13:54:13 MSK 2008
 user@proxy.mydomen.local:/usr/obj/usr/src/sys/MyCore

Ставим карту в комп, запускаем FreeBSD.
Прописываем в /boot/loader.conf
bktr_load=”YES”

перегружаем машину и смотрим
#dmesg | grep bktr
bktr0: <BrookTree 878> mem 0xe2200000-0xe2200fff irq 20 at device 0.0 on pci3
bktr0: [GIANT-LOCKED]
bktr0: [ITHREAD]
bktr0: Warning - card vendor 0x0000 (model 0x0000) unknown.
bktr0: Detected a DPL34-1@-@0 at 0x84
bktr0: Intel Smart Video III/VideoLogic Captivator PCI, <no> tuner, dpl3518a dolby.
#pciconf –lv
bktr0@pci0:3:0:0:       class=0x040000 card=0x00000000 chip=0x036e109e rev=0x11 hdr=0x00
    vendor     = 'Conexant (Was: Brooktree Corp)'
    device     = 'Bt878/Fusion 878A Mediastream Controller'
    class      = multimedia
    subclass   = video
none4@pci0:3:0:1:       class=0x048000 card=0x00000000 chip=0x0878109e rev=0x11 hdr=0x00
    vendor     = 'Conexant (Was: Brooktree Corp)'
    device     = '7610144D&REV_02\4&1F7DBC9F&0&09F0 TV Video Capture'
    class      = multimedia

В /dev появилось устройство bktr0.
Теперь качаем порт ZoneMinder 1.23.3, на
момент написания статьи была уже версия ZoneMinder 1.24.x, но порта под FreeBSD  не было.
Распаковываем его в  /usr/ports/multimedia/zoneminder/
cd /usr/ports/multimedia/zoneminder
make install

ВНИМАНИЕ ! после установки не следует сразу делать make clean, т.к. затрете скрипты создания
базы данных.

Во время установки Zone Minder потянет большое количество пакетов, все опции этих пакетов оставляем как
есть. По у молчанию Zone Minder   ставит Apache версии 1.3.
В php5-extensions необходимо добавить поддержку MySQL.
Если во время установки вылетело сообщение
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

Значит у вас стоит версия autoconf отличная от 2.61, у меня стоит 2.62.
Делаем так :
cd  work/ZoneMinder-1.23.3
ee aclocal.m4

Ищем стрку, она в самом начале файла
m4_if(m4_PACKAGE_VERSION, [2.61],,

И меняем на
m4_if(m4_PACKAGE_VERSION, [2.62],,

сохраняем
cd ../..
make install

Далее тоже может вылететь еще ошибка
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

Stop in /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3/src.
*** Error code 1

Stop in /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3.
*** Error code 1

Stop in /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3.
*** Error code 1

Stop in /usr/ports/multimedia/zoneminder.

Эта ругань вызвана пакетом ffmpeg.  Нужно его вручную установить.
cd  ../ffmpeg	

В файле Makefile должны присутствовать такая строка
--enable-swscale \ 

Если ее нет то накатываем патч

-- /usr/ports/multimedia/ffmpeg/Makefile.orig  2008-07-30 19:52:43.000000000 +0300 
+++ /usr/ports/multimedia/ffmpeg/Makefile       2008-07-30 19:39:10.000000000 +0300 
@@ -59,11 +59,13 @@ 
        libavutil/random.h \ 
        libavutil/rational.h \ 
        libavutil/sha1.h \ 
+       libswscale/swscale.h \ 
        libpostproc/postprocess.h 

 .include <bsd> 

 CONFIGURE_ARGS+=--cc="${CC}" --prefix="${PREFIX}" \ 
+               --enable-swscale \ 
                --disable-debug \ 
                --enable-memalign-hack \ 
                --enable-shared \

Т.к. перед установкой я обновлял порты, то правка файла не потребовалась.
После чего  делаем
make deinstall
make install 

Ждем окончания установки ffmpeg
Далее
cd ../zoneminder

и удаляем файл files/patch_zm_mpeg.cpp иначе ничего не установится (рекомендация из форума по Zone Minder).
make install

Ждем успешного окончания установки.
После установки в /usr/local/etc/ появится конфигурационный файл zm.conf.
Он прост и хорошо комментирован. Оставляем все как есть.
Добавляем в /etc/rc.conf
zm_enable=”YES”
apache_enable=”YES”
mysql_enable=”YES”

Запускаем MySQL
/usr/local/etc/rc.d/mysql-server start
mysql –h localhost –u root
mysql>source /usr/ports/multimedia/zoneminder/work/ZoneMinder-1.23.3/db/zm_create.sql;
mysql>grant all on zm.* to ‘zmuser’@localhost identified by ‘zmpass’;
mysql> flush privileges;
mysql> quit;

Базы создали теперь переходим к веб составляющей всего этого.
Смотрим в httpd.conf
ее /usr/local/etc/apache/httpd.conf

Если не находим строк
LoadModule php5_module libexec/apache/libphp5.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Значит php5 установился  без поддержки  Apache.
Исправляем это
cd  /usr/ports/lang/php5
make deinstall
make clean
make config (включаем поддержку Apache)
make install clean

Перезапускаем Apache
/usr/local/etc/rc.d/apache restart

Заходим браузером на сервак http://server/zm/
Откроется консоль управления Zone Minder .


Как видно вся система остановлена.
К регистратору подключаем камеру для тестирования. И добавляем ее.


Для тестирования выставляем Function в Monitor, это режим простого наблюдения.
Устанавливаем параметры камеры, разрешение, формат  сигнала и прочее по вкусу. Сохраняем
Zone Minder имеет русский интерфейс, но на чальном этапе лучше использовать английский, т.к. в
некоторых местах русификация кривая.


В консоле щелкаем по Stopped и переводим систему в режим Start.
И идем смотрим что в логах, если в логах посыпалась ругань на Shared memory
Nov 11 11:17:35 proxy Update agent starting at 08/11/11 11:17:35
Nov 11 11:21:07 proxy zmdc[80932]: WAR [Can't find process with command of 'zmc -d /dev/bktr0']
Nov 11 11:21:07 proxy zmdc[80932]: WAR [Can't find process with command of 'zma -m 1']
Nov 11 11:21:08 proxy zma_m1[81006]: ERR [Can't shmget, probably not enough shared memory space free: Cannot allocate memory]
Nov 11 11:21:08 proxy zmdc[80932]: ERR ['zma -m 1' exited abnormally, exit status 255]
Nov 11 11:21:08 proxy zma_m1[81007]: ERR [Can't shmget, probably not enough shared memory space free: Cannot allocate memory]
Nov 11 11:21:08 proxy zmdc[80932]: ERR ['zma -m 1' exited abnormally, exit status 255]
Nov 11 11:21:08 proxy zmc_dbktr0[81001]: ERR [Can't shmget, probably not enough shared memory space free: Cannot allocate memory]
Nov 11 11:21:08 proxy zmdc[80932]: ERR ['zmc -d /dev/bktr0' exited abnormally, exit status 255]
Nov 11 11:21:09 proxy zmc_dbktr0[81018]: ERR [Can't shmget, probably not enough shared memory space free: Cannot allocate memory]
Nov 11 11:21:09 proxy zmdc[80932]: ERR ['zmc -d /dev/bktr0' exited abnormally, exit status 255]
Nov 11 11:21:12 proxy zmwatch[80958]: ERR [Can't get shared memory id '7a6d0001', 1: No such file or directory]
Nov 11 11:21:13 proxy zma_m1[81021]: ERR [Can't shmget, probably not enough shared memory space free: Cannot allocate memory]
Nov 11 11:21:13 proxy zmdc[80932]: ERR ['zma -m 1' exited abnormally, exit status 255]

То значит нужно править системные переменные. В  /etc/sysctl.conf
Добавляем следующие строки
kern.ipc.shmmax=536870912
kern.ipc.shmall=524288

Все должно заработать и если нажать на название камеры, то откроется окно с изображением с камеры.
Настраиваем на свой вкус режим работы и все остальное, благо каждый параметр прокомментирован хорошо и
настроить программу не составит сложности. Если что на сайте программы есть WiKi.

Эффект достигнут.Пьем пиво и наблюдаем за сотрудниками.



размещено: 2009-02-11,
последнее обновление: 2009-02-11,
автор: TeXNiC


densan, 2009-02-11 в 14:16:52

Укажи плиз полное название карты, можно с скринами.

cenix, 2009-02-14 в 20:01:25

Спасибо за статью, я до этого был уверен что Zoneminder под фрей работает только с Ip камерами.

Можно добавить еще что просматривать камеры можно не только в браузере, но и в клиенте: http://zmviewer.sourceforge.net/?q=node

TeXNiC, 2009-02-16 в 11:50:32

Я как раз работаю над этим, возможно скоро будет дополнение к статье.

freeman_tnu, 2009-02-17 в 15:47:22

А какие видео-камеры у вас используются?

TeXNiC, 2009-02-18 в 8:44:30

Две камеры цветные с микрофоном (JMK JK-007D,PAL), естественно китайские, и две черно-белые без звука в потолочном варианте замаскированные под пажарную сигнализацию.

flash, 2009-03-19 в 16:38:40

Пытаюсь прикрутить все это на плату Hicap25

   vendor     = 'Philips Semiconductors'
   device     = 'SAA7146 Multimedia Bridge Scaler'
мож кто знает возможно ли это?

flash, 2009-04-15 в 10:39:56

Народ помогите, поставил все на карту Orient 406N
все замечательно работает все встало красиво, но!
работает только один канал,
Странность в том что физически установлен на 4-ый, работает на bktr0 channel 1.
на остальных синий экран.

sool, 2009-05-07 в 12:57:57

Кто сталкивался с данной ошибкой ? как исправить
Can't locate ZoneMinder.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.9/BSDPAN /usr/local/lib/perl5/site_perl/5.8.9/mach /usr/local/lib/perl5/site_perl/5.8.9 /usr/local/lib/perl5/5.8.9/mach /usr/local/lib/perl5/5.8.9) at /usr/local/bin/zmpkg.pl line 45.
BEGIN failed--compilation aborted at /usr/local/bin/zmpkg.pl line 45.

Smile, 2009-08-13 в 16:32:19

Большое спс,
я давно искал такую прогу под фрю или хотя бы линукс...

Alex, 2009-11-28 в 11:33:46

А какая конифгурация компа?

Dozer, 2010-01-07 в 18:43:14

Крысу нашли или нет? :)))

s.shushpanovsky, 2010-06-07 в 18:13:08

Здравствуйте! все сделал по этой статье, но есть но...
Фря 8 релиз, после у становки zonemindera вываливается ошибка: home# make install
===>   zoneminder-1.23.3,1 depends on file: /usr/local/bin/mysqld_safe - found
===>   zoneminder-1.23.3,1 depends on file: /usr/local/bin/php-config - found
===>   zoneminder-1.23.3,1 depends on file: /usr/local/lib/perl5/site_perl/5.8.9/mach/DBI.pm - found
===>   zoneminder-1.23.3,1 depends on file: /usr/local/lib/perl5/site_perl/5.8.9/mach/DBD/mysql.pm - found
===>   zoneminder-1.23.3,1 depends on file: /usr/local/lib/perl5/site_perl/5.8.9/Date/Manip.pm - found
===>   zoneminder-1.23.3,1 depends on file: /usr/local/lib/perl5/site_perl/5.8.9/LWP.pm - found
===>   zoneminder-1.23.3,1 depends on file: /usr/local/lib/perl5/site_perl/5.8.9/Archive/Zip.pm - found
===>   zoneminder-1.23.3,1 depends on file: /usr/local/lib/perl5/site_perl/5.8.9/Archive/Tar.pm - found
===>   zoneminder-1.23.3,1 depends on file: /usr/local/lib/perl5/site_perl/5.8.9/MIME/Lite.pm - found
===>   zoneminder-1.23.3,1 depends on file: /usr/local/lib/perl5/site_perl/5.8.9/MIME/Entity.pm - found
===>   zoneminder-1.23.3,1 depends on file: /usr/local/lib/perl5/site_perl/5.8.9/PHP/Serialization.pm - found
===>   zoneminder-1.23.3,1 depends on file: /usr/local/include/execinfo.h - found
===>   zoneminder-1.23.3,1 depends on file: /usr/local/include/gnutls/openssl.h - found
===>   zoneminder-1.23.3,1 depends on file: /usr/local/bin/perl5.8.9 - found
===>   zoneminder-1.23.3,1 depends on shared library: jpeg.9 - not found
===>    Verifying install for jpeg.9 in /usr/ports/graphics/jpeg
===>   Returning to build of zoneminder-1.23.3,1
Error: shared library "jpeg.9" does not exist
*** Error code 1

Решение не нашел пока. Задам этот вопрос на форуме.

allseen, 2010-06-10 в 21:53:55

to s.shushpanovsky
cp /usr/local/lib/libjpeg.so.8 /usr/local/lib/libjpeg.so.9

Алексей Тверь, 2011-02-18 в 7:15:08

Для чего всё это надо??? Не легче просто установить обыкновенный российский софт для этой платы??? Плата у вас называется Hawell HW-104A – Плата видеозахвата с программным сжатием, 4 входа, 25 к,/сек.        Плата видеозахвата выполнена на чипе Conexant Fusion 878A.
Родное ПО для неё Pico 2000. С современными компами это ПО либо конфликтует, либо вобще не запускается.
Благодаря моему терпению, я нашёл подходящее ПО Российских разработчиков под эту плату. И ПО это с очень большими возможностями!

flash, 2011-02-18 в 15:39:02

мне кажеться вопрос не в тему, когда требуется стабильность ставится фря, если не умеете ставить - Российское забугорное ПО под Винду. Я с утра просыпаюсь спокойно, зная что мои сервера под Фрей работают... Вот для чего это все надо!

Salimk, 2011-06-13 в 13:39:12

Ура zoneminder уже в портах

Igoe, 2011-06-30 в 10:39:38

Хочется сделать на плате DWR-404A на чипсете TW6805A, но карточка не видится, как её можно найти в Free?

Dosnav, 2014-08-04 в 15:41:40

у меня в логах zm сыпется ошибка
Unable to probe local cameras, status is '255'
соответственно ни че не показывает..
платы захвата
bktr0: <BrookTree 878>
подскажите куда копать?.. и как... если можно.



 

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

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0412 секунд
Из них PHP: 31%; SQL: 69%; Число SQL-запросов: 81 шт.
Исходный размер: 55790; Сжатая: 12340