Сегодня я хочу продолжить заметку насчет как следить за самим собой работая/отдыхая за ноутбуком Lenovo ThinPad E555 имея установленную систему на борту Ubuntu 12.04.5 Desktop amd64. Ранее на блоге я задействовал для этой цели пакет motion, но вот работа с ним была ограничена как я вскоре осознал его возможностями по части удобного управления посредством Web-интерфейса, но был и плюс – консоль. Настроить на системе через консоль видеонаблюдение и формирование записываемого видео к примеру каждый час это круто. Но ведь это только для себя – любителя консольных заморочек, а вот произвести впечатление как на других так и на себя без возможности показать в визуализированном виде оставляло желать лучшего. Потому как все мы привыкли получать информацию в виде изображений/видео – так наиболее продуктивно. И потому сейчас я рассмотрю все шаги которые мне пришлось пройти прежде чем к программному обеспечению ZoneMinder подключить 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
А ниже скриншоты вкладок с настройками:
Добавил камеру: /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
и после этого камера завелась
индиктор того что камера работает “горит” на моем ноутбуке 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 или через консоль командной строки для активации изменений.
И вуаля первые записи
, но почему-то запись все равно ведется в /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 – Добавить монитор –
Далее нужно в систему поставить плагин: 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
Отлично работает. И да действительно использование ZoneMinder намного лучше приспособлен к поставленной задачи обучения работы. Уже имея подключенные камеры, пусть и USB‘шные можно воспроизвести многие вещи, такие как: как записывать видео, как его экспортировать, как настроить зону детектирования движения да и многое чего. Порой поставленная задача и как правило чем она интересна Вам в конечном итоге на рабочем месте здорово поможет Вам решить поставленную задачу руководством. Но вот только все это должно быть интересно в первую очередь Вам, а не только дали задание кое как его сделал. А пока не буду больше разглагольстовать, просто попрощаюсь и до новых встреч на заметках моего блога, с уважением автор блога – ekzorchik.