ZoneMinder и USB камеры

Posted by

Сегодня я хочу продолжить заметку насчет как следить за самим собой работая/отдыхая за ноутбуком Lenovo ThinPad E555 имея установленную систему на борту .5 Desktop amd64. Ранее на блоге я задействовал для этой цели пакет motion, но вот работа с ним была ограничена как я вскоре осознал его возможностями по части удобного управления посредством Web-интерфейса, но был и плюс – консоль. Настроить на системе через консоль видеонаблюдение и формирование записываемого видео к примеру каждый час это круто. Но ведь это только для себя – любителя консольных заморочек, а вот произвести впечатление как на других так и на себя без возможности показать в визуализированном виде оставляло желать лучшего. Потому как все мы привыкли получать информацию в виде изображений/видео – так наиболее продуктивно. И потому сейчас я рассмотрю все шаги которые мне пришлось пройти прежде чем к программному обеспечению подключить USB камеры.

ставлю ZoneMinder на Ubuntu 12.04.5 Desktop amd64 по своей заметке

и W: Не удалось получить http://ppa.launchpad.net/iconnor/zoneminder/ubuntu/dists/precise/main/source/Sources 404 Not Found

W: Не удалось получить http://ppa.launchpad.net/iconnor/zoneminder/ubuntu/dists/precise/main/binary-amd64/Packages 404 Not Found

W: Не удалось получить http://ppa.launchpad.net/iconnor/zoneminder/ubuntu/dists/precise/main/binary-i386/Packages 404 Not Found

E: Некоторые индексные файлы не скачались. Они были проигнорированы или вместо них были использованы старые версии.

Вот блин. Уже сколько раз убеждаюсь что нужен свой локальный репозитарий пакетов, ссылки из интернета устаревают, убираются

Инсталлирую в систему некоторые пакеты, функционал которых мне потребуется в дальнейшем:

ekzorchik@navy:~$ sudo apt-get install libvlc-dev libvlccore-dev vlc -y

Информация по моей встроенной камере:

ekzorchik@navy:~$ sudo apt-get install v4l-conf -y

ekzorchik@navy:~$ v4l-info /dev/video0

### v4l2 device info [/dev/video0] ###

general info

VIDIOC_QUERYCAP

driver : «uvcvideo»

card : «Integrated Camera»

bus_info : «usb-0000:00:13.2-1»

version : 3.17.0

capabilities : 0x84000001 [VIDEO_CAPTURE,STREAMING,(null)]

standards

inputs

VIDIOC_ENUMINPUT(0)

index : 0

name : «Camera 1»

type : CAMERA

audioset : 0

tuner : 0

std : 0x0 []

status : 0x0 []

video capture

VIDIOC_ENUM_FMT(0,VIDEO_CAPTURE)

index : 0

type : VIDEO_CAPTURE

flags : 0

description : «YUV 4:2:2 (YUYV)»

pixelformat : 0x56595559 [YUYV]

VIDIOC_ENUM_FMT(1,VIDEO_CAPTURE)

index : 1

type : VIDEO_CAPTURE

flags : 1

description : «MJPEG»

pixelformat : 0x47504a4d [MJPG]

VIDIOC_G_FMT(VIDEO_CAPTURE)

type : VIDEO_CAPTURE

fmt.pix.width : 640

fmt.pix.height : 480

fmt.pix.pixelformat : 0x56595559 [YUYV]

fmt.pix.field : NONE

fmt.pix.bytesperline : 1280

fmt.pix.sizeimage : 614400

fmt.pix.colorspace : SRGB

fmt.pix.priv : 0

controls

VIDIOC_QUERYCTRL(BASE+0)

id : 9963776

type : INTEGER

name : «Brightness»

minimum : 0

maximum : 255

step : 1

default_value : 128

flags : 0

VIDIOC_QUERYCTRL(BASE+1)

id : 9963777

type : INTEGER

name : «Contrast»

minimum : 0

maximum : 255

step : 1

default_value : 32

flags : 0

VIDIOC_QUERYCTRL(BASE+2)

id : 9963778

type : INTEGER

name : «Saturation»

minimum : 0

maximum : 100

step : 1

default_value : 64

flags : 0

VIDIOC_QUERYCTRL(BASE+3)

id : 9963779

type : INTEGER

name : «Hue»

minimum : -180

maximum : 180

step : 1

default_value : 0

flags : 0

VIDIOC_QUERYCTRL(BASE+12)

id : 9963788

type : BOOLEAN

name : «White Balance Temperature, Auto»

minimum : 0

maximum : 1

step : 1

default_value : 1

flags : 0

VIDIOC_QUERYCTRL(BASE+16)

id : 9963792

type : INTEGER

name : «Gamma»

minimum : 90

maximum : 150

step : 1

default_value : 120

flags : 0

VIDIOC_QUERYCTRL(BASE+24)

id : 9963800

type : MENU

name : «Power Line Frequency»

minimum : 0

maximum : 2

step : 1

default_value : 1

flags : 0

VIDIOC_QUERYCTRL(BASE+26)

id : 9963802

type : INTEGER

name : «White Balance Temperature»

minimum : 2800

maximum : 6500

step : 10

default_value : 4600

flags : 16

VIDIOC_QUERYCTRL(BASE+27)

id : 9963803

type : INTEGER

name : «Sharpness»

minimum : 0

maximum : 7

step : 1

default_value : 4

flags : 0

VIDIOC_QUERYCTRL(BASE+28)

id : 9963804

type : INTEGER

name : «Backlight Compensation»

minimum : 0

maximum : 2

step : 1

default_value : 1

flags : 0

из вывода видно, что максимальное разрешение: 640 x 480 – это мне понадобится.

ekzorchik@navy:~$ sudo add-apt-repository ppa:iconnor/zoneminder-master

You are about to add the following PPA to your system:

These are snapshots of the master branch from https://github.com/ZoneMinder/ZoneMinder

These now contain the code to make it run on 13.10 and up.

More info: https://launchpad.net/~iconnor/+archive/ubuntu/zoneminder-master

Press [ENTER] to continue or ctrl-c to cancel adding it

gpg: создана таблица ключей `/tmp/tmp30ml4_/secring.gpg’

gpg: создана таблица ключей `/tmp/tmp30ml4_/pubring.gpg’

gpg: запрашиваю ключ 776FFB04 с hkp сервера keyserver.ubuntu.com

gpg: /tmp/tmp30ml4_/trustdb.gpg: создана таблица доверий

gpg: ключ 776FFB04: открытый ключ «Launchpad PPA for Isaac Connor» импортирован

gpg: Всего обработано: 1

gpg: импортировано: 1 (RSA: 1)

OK

ekzorchik@navy:~$ sudo apt-get update

ekzorchik@navy:~$ apt-cache show zoneminder | grep Version

Version: 1.28.1+1-precise-SNAPSHOT2015030401

Version: 1.25.0-1

Инсталлирую самый последний пакет (на момент написания данной заметки):

ekzorchik@navy:~$ sudo apt-get install zoneminder=1.28.1+1-precise-SNAPSHOT2015030401 -y

Завожу камеру:

http://IP&DNS/zm – Добавить монитор

General:

Name: Monitor-1

Source Type: Local

Source:

Device Path: /dev/video0

Capture Method: Video For Linux version 2

Capture Width (pixels): 320

Capture Height (pixels): 240

А ниже скриншоты вкладок с настройками:

Добавляю USB камеру в ZoneMinder

Добавляю USB камеру в ZoneMinder

 

Добавил камеру: /dev/video0

Добавил камеру - смотрю логи на этой счет

ekzorchik@navy:~$ sudo adduser www-data video

Добавляется пользователь «www-data» в группу «video» …

Добавление пользователя www-data в группу video

Готово.

ekzorchik@navy:~$ sudo service apache2 stop && sudo service zoneminder stop

ekzorchik@navy:~$ sudo service zoneminder start && sudo service apache2 start

и после этого камера завелась

USB-камера успешна подключена

индиктор того что камера работает “горит” на моем ноутбуке Lenovo E555

Вот скрин что видит камера в данный момент – меня

Скриншот того, что камера активирована и снимаем меня в режиме реального времени

 

В логах ZoneMinder есть ошибки и есть статусные сообщения

В логах присутствуют ошибки и статусные сообщения

Попробую изменить настройки камеры в простого просмотра видео на запись, но сперва нужно предопределить каталог куда будет идти запись (в настройках подключения камеры изменяю Function на Record)

ekzorchik@navy:~$ sudo mkdir /opt/zm

ekzorchik@navy:~$ sudo chown -R www-data:www-data /opt/zm

Затем останавлию ZoneMinder (sudo service zoneminder stop)

По умолчанию каталог куда сохраняются картинки видео:

ekzorchik@navy:~$ sudo ls -l /tmp/zm/

-rw-r—r— 1 www-data www-data 9440 Jan 4 23:33 zmswap-i00852.jpg

изменить его можно

Option – вкладка Upload

UPLOAD_LOC_DIR = /tmp/zm

изменяю на свой путь:

UPLOAD_LOC_DIR = /opt/zm

Затем нужно либо через Web-интерфейс перезапустить Zoneminder или через консоль командной строки для активации изменений.

И вуаля первые записи

Активировав запись на USB камере в настройках ZoneMinder - видео пишется

, но почему-то запись все равно ведется в /tmp/zm

ekzorchik@navy:~$ sudo ls /tmp/zm/ -lt | head -n 10

итого 12000

-rw-r—r— 1 www-data www-data 9120 Jan 4 23:49 zmswap-i00805.jpg

-rw-r—r— 1 www-data www-data 9093 Jan 4 23:49 zmswap-i00804.jpg

Путем анализа поведения работы выявил, что на каталог /opt/zm нужно выставить полные права:

ekzorchik@navy:~$ sudo chmod 777 /opt/zm

, а нет покадровость записываемого изображения сохраняется не в /tmp/zm как я думал раньше, а в:

ekzorchik@navy:~$ ls -l /usr/share/zoneminder/events/Monitor-1/16/01/04/23/41/10/ | head -n 10

итого 4500

-rw-r—r— 1 www-data www-data 9553 Jan 4 23:41 001-capture.jpg

-rw-r—r— 1 www-data www-data 9552 Jan 4 23:41 002-capture.jpg

-rw-r—r— 1 www-data www-data 9567 Jan 4 23:41 003-capture.jpg

-rw-r—r— 1 www-data www-data 9599 Jan 4 23:41 004-capture.jpg

-rw-r—r— 1 www-data www-data 9592 Jan 4 23:41 005-capture.jpg

-rw-r—r— 1 www-data www-data 9538 Jan 4 23:41 006-capture.jpg

-rw-r—r— 1 www-data www-data 9531 Jan 4 23:41 007-capture.jpg

ekzorchik@navy:~$ ls -l /usr/share/zoneminder/events

lrwxrwxrwx 1 root root 28 Feb 12 2012 /usr/share/zoneminder/events -> /var/cache/zoneminder/events

ekzorchik@navy:~$ ls -l /var/cache/zoneminder/events/

итого 4

drwxr-xr-x 3 www-data www-data 4096 Jan 4 23:41 1

lrwxrwxrwx 1 www-data www-data 1 Jan 4 23:26 Monitor-1 -> 1

ekzorchik@navy:~$ sudo rm -Rf /var/cache/zoneminder/events/*

а потому вот какой каталог нужно поменять на свой:

ekzorchik@navy:~$ sudo rm -r /usr/share/zoneminder/events

ekzorchik@navy:~$ sudo ln -s /opt/zm /usr/share/zoneminder/events

ekzorchik@navy:~$ sudo chown -R www-data:www-data /opt/zm

после запускаю ZoneMinder и вот они первые записи

ekzorchik@navy:~$ ls -l /opt/zm/Monitor-1/16/01/05/00/17/54/ | head -n 10

итого 13496

-rw-r—r— 1 www-data www-data 7286 Jan 5 00:17 001-capture.jpg

-rw-r—r— 1 www-data www-data 7299 Jan 5 00:17 002-capture.jpg

-rw-r—r— 1 www-data www-data 7278 Jan 5 00:17 003-capture.jpg

-rw-r—r— 1 www-data www-data 7318 Jan 5 00:17 004-capture.jpg

ekzorchik@navy:~$ sudo apt-get install tree -y

Структура формироваемых каталогов при записи видео

Руссифицировал – это просто: Options – вкладка System

LANG_DEFAULT = ru_ru

и перезапустил ZoneMinder, только вот не руссифицировались параметры, а только сам интерфейс, увы.

Текущий размер с одной камеры с настройками по умолчанию (за исключение разрешения камеры 640 * 480)

Текущий размер с одной камеры

Отлично работает.

Завтра разберу что будет если подключить еще одну камеру по USB

и как выгрузить изображения в avi файл.

Подключил – в системе появилось новое устройство

ekzorchik@navy:~$ ls /dev/video*

/dev/video0 /dev/video1 – и вот новое устройство.

По такому же принципу как и ранее настраиваю подключение к еще одной камере.

http://localhost/zm – Добавить монитор —

Подключил в ZoneMinder еще одну USB-камеру

Далее нужно в систему поставить плагин: cambozola чтобы иметь возможность сразу на одной странице наблюдать за всеми подключенными камерами к ZoneMinder

ekzorchik@navy:~$ sudo wget http://www.charliemouse.com:8080/code/cambozola/cambozola-latest.tar.gz

ekzorchik@navy:~$ tar -xzf cambozola-latest.tar.gz

ekzorchik@navy:~$ sudo cp cambozola-0.936/dist/cambozola.jar /usr/share/zoneminder/

после перезапускаю ZoneMinder и теперь на странице управления камерами http://localhost/zm появляется еще один пункт управления Montage, щелкнув по нему вид всех камер заведенных на мониторинг будет выглядеть следующим образом:

Активирую ссылку по просмотру нескольких камер в одном окне

 

А вот и я но с разных камер:

А вот и я но с разных камер

Отлично то что я и хотел добиться. А вот с motion я его не мог получить.

Достав и ящика с различным компьютерным барахлом еще одну камеру (USB‘шную), подключив ее также как и выше в итоге получил:

[ 2242.114340] usb 6-1: new high-speed USB device number 2 using xhci_hcd

[ 2242.325668] usb 6-1: New USB device found, idVendor=093a, idProduct=2700

[ 2242.325681] usb 6-1: New USB device strings: Mfr=16, Product=96, SerialNumber=0

[ 2242.325688] usb 6-1: Product: USB2.0_Camera

[ 2242.325693] usb 6-1: Manufacturer: PixArt Imaging Inc.

[ 2242.334304] uvcvideo: Found UVC 1.00 device USB2.0_Camera (093a:2700)

[ 2242.345214] input: USB2.0_Camera as /devices/pci0000:00/0000:00:10.0/usb6/6-1/6-1:1.0/input/input15

Теперь я смотрю на себя через три USB камеры заведенные в ZoneMinder

Отлично работает. И да действительно использование ZoneMinder намного лучше приспособлен к поставленной задачи обучения работы. Уже имея подключенные камеры, пусть и USB‘шные можно воспроизвести многие вещи, такие как: как записывать видео, как его экспортировать, как настроить зону детектирования движения да и многое чего. Порой поставленная задача и как правило чем она интересна Вам в конечном итоге на рабочем месте здорово поможет Вам решить поставленную задачу руководством. Но вот только все это должно быть интересно в первую очередь Вам, а не только дали задание кое как его сделал. А пока не буду больше разглагольстовать, просто попрощаюсь и до новых встреч на заметках моего блога, с уважением автор блога – ekzorchik.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5 × 1 =