Видеорегистрация + видеонаблюдение для дома в Linux
Надумал и я побаловаться созданием простой и дешевой домашней системы видеонаблюдения и видеорегистрации (сподвигла меня на это из журнала “Хакер”). Естественно, что идея использовать веб-камеру и домашний компьютер в данном случае выглядит наиболее привлекательной.
Веб-камера для Linux
Свой выбор веб-камеры для Linux я остановил на Logitech Webcam C120 по ряду причин: во-первых, она отличается приемлемым качеством картинка (изображение с камер Genius аналогичного ценового диапазона меня не впечатлило совсем), во-вторых – камера работает по протоколу UVC, что означает её поддержку ядром Linux “из коробки” (штатно поддержка добавлена в ядро Linux с версии 2.6.26, также в Linux заработают веб-камеры, управляемые драйвером GSPCA) и в-третьих – эта веб-камера стоит всего 500 рублей и её мне не жалко разобрать с целью создания из неё ИК-камеры (камеры “ночного видения”).
Процесс создания системы домашнего видеонаблюдения под Linux по шагам.
Подключаем камеру. В моём случае всё заводится самостоятельно (потому и выбрал данную камеру). Если камера подключена, а картинки нет – стоит проверить, добавлен ли текущий пользователь в группу video и при необходимости добавить его туда.
Кстати, проверить работоспособность камеры поможет обыкновенный mplayer, достаточно лишь запустить его следующим образом:
mplayer -cache 128 -tv driver=v4l2:width=640:height=480:device=/dev/video0 -vo xv tv://
Если что-то пошло не так – внимательно читаем лог ошибок. Например может понадобиться указать другое устройство вывода (-vo x11) – они перечислены по вызову mplayer -vo help
Использование программы Motion для организации видеонаблюдения
В качестве ПО для системы домашнего видеонаблюдения я выбрал программу Motion (присутствует в репозитории Debian, для работы требуется ffmpeg). Можно попробовать её аналоги, например ZoneMinder или AVReg, но поскольку Motion меня полностью устроила и именно она идёт первой в списках многих обзоров подобного софта – я заниматься тестированием не стал и просто использовал её.
Итак, что же может предложить Motion желающим собрать систему видеонаблюдения дома:
- Поддержка работы с несколькими камерами (я рассмотрю вариант с одной камерой, поддержка дополнительных камер подключается в основаном конфиге, а их настройки описываются в отдельных файлах).
- Непрерывная трансляция изображения с веб-камеры с сохранинием транслируемго потока на носитель (поддерживаются различные форматы сохранения потока) – иными словами, это ни что иное, как постоянная видеорегистрация.
- Отслеживание наличия изменений на изображении, получаемом с камеры, и включение записи в случае обнаружения таких изменений – программа реагирует на движение и начинает запись только в этом случае (подробнее о настройках детекции движения расскажу ниже).
- Трансляция изображения с камеры в сеть посредством собственного небольшого HTTP-сервера (просмтор возможен как с локальной, так и с удалённой машины).
- Выполнение произвольного скрипта в при заданном условии (например при обноружении движения можно запускать скрипт оповещения по почте/смс/телефону или проигрывать трубный звук и т.п.).
Работает Motion в режиме демона и настраивается при помощи правки конфигурационного файла, расположенного по адресу /etc/motion/motion.conf и весьма подробно откомментированного на простом английском.
Перед изменением рекомендую скопировать конфигурационный файл в свою домашнюю директорию и в дальнейшем работать с этой копией, если ваши задачи не требуют иного:
sudo cp /etc/motion/motion.conf ~/.motion/
sudo chown user:group ~/.motion/motion.conf
Настройка Motion – правим motion.conf
Остановлюсь подробней на некоторых настройках, которые, на мой взгляд, могут потребовать правки:
- Запуск в режиме демона
# Start in daemon (background) mode and release terminal (default: off)
daemon on - Устройство для захвата видео – если камера одна – оставить как есть, иначе изменить на video1…videoN по необходимости
# Videodevice to be used for capturing (default /dev/video0)
# for FreeBSD default is /dev/bktr0
videodevice /dev/video0 - Какой вход для видео использовать. В случае USB-камеры оставить как есть.
# The video input to be used (default: 8 )
# Should normally be set to 0 or 1 for video/TV cards, and 8 for USB cameras
input 8 - Разрешение видео, выдаваемое камерой – отредактировать в соответствии с характеристиками своей камеры
# Image width (pixels). Valid range: Camera dependent, default: 352
width 640
# Image height (pixels). Valid range: Camera dependent, default: 288
height 480 - Число кадров в секунду – опять же в соответствии с характеристиками камеры (к примеру некоторые камеры позволяют снимать с бОльшим разрешением, но меньшей частотой кадров или наоборот). Для PAL стандартное значение – 25 кадров/сек.
# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 30 - После какого количества секунд отсутствия движения будет перезапущена запись (а файл перезаписан).
gap 60 - Ограничение размера файла с записью (в секундах). В случае ненулевого значения после превышения лимита будет создаваться новый файл.
# Maximum length in seconds of an mpeg movie
# When value is exceeded a new mpeg file is created. (Default: 0 = infinite)
max_mpeg_time 0 - Сколько времени (в секундах) вести запись в один файл. После превышения предела создаётся новый файл.
# The file rollover mode of the timelapse video
# Valid values: hourly (ежечасно), daily (ежедневно, default), weekly-sunday (еженедельно, начало недели в Вс), weekly-monday (аналогично с началом в Пн), monthly (ежемесячно), manual (вручную).
ffmpeg_timelapse_mode hourly - Варианты сохранения скриншота с движением – все подряд (on), ни одного (off), первый (first), лучший (best) или с движением ближе к центру изображения (center).
output_normal best - Сохранение потока с камеры как видеофайла.
# Use ffmpeg to encode mpeg movies in realtime (default: off)
ffmpeg_cap_new on - Выбор кодека, которым будет обработан сохраняемый видеопоток (поддерживаемые кодеки подробно перечислены в конфиге). Выбранный кодек должен быть установлен в системе, иначе при запуске Motion будет выдавать ошибку.
ffmpeg_video_codec mpeg4 - Путь к каталогу, в котором будет храниться отснятый материал.
target_dir /home/user/camera_video - Номер порта, на котором будет работать встроенный http-сервер Motion – при необходимости прописать любой свободный порт.
# The mini-http server listens to this port for requests (default: 0 = disabled)
webcam_port 8081 - Процент качества для сжимаемых в jpeg изображений с камеры, которые будут выводиться в браузер.
# Quality of the jpeg images produced (default: 50)
webcam_quality 90 - Частота обновления видео в браузере (кадров в секунду) в случае отсутствия зарегистрированного движения – если не планируется просматривать изображение с камеры периодически, то можно отключить. При обнаружении движения частота обновления станет равной параметру webcam_maxrate.
# Output frames at 1 fps when no motion is detected and increase to the
# rate given by webcam_maxrate when motion is detected (default: off)
webcam_motion 2 - Частота обновления видео в браузере в случае регистрации движения программой.
# Maximum framerate for webcam streams (default: 1)
webcam_maxrate 10 - Разрешить (off) или запретить (on) доступ к просмотру камеры с удаленных машин.
# Restrict webcam connections to localhost only (default: on)
webcam_localhost on
Остальные настройки стоит менять при необходимости (весьма подробно настройки Motion описаны в статье, ссылка на которую дана в начале заметки), приведенного выше на мой взгляд достаточно для нормальной работы с Motion. Первый запуск можно осуществить с ключом -n, чтобы программа не переходила в режим демона – это позволит получить диагностические сообщения прямо в консоль.
Для проверки работы программы можно зайти веб-браузером на адрес http://localhost:8081 и полюбоваться на результат своих трудов
Также нужно отметить, что веб-интерфейс позволяет производить настройку Motion (удобно при нескольких камерах), для чего нужно внести соответствующие изменения в секцию HTTP Based Control конфигурационного файла программы.
В заключение дам ссылку на motion.conf, который у меня получился в результате. А в следующей заметке о создании системы домашнего видеонаблюдения под Linux я хочу рассказать о том, как сделать из веб-камеры камеру “ночного видения”. До встречи!
Еще на похожие темы:
Рубрики: Linux, Гаджеты |
Метки: linux, motion, видеонаблюдение, гаджет, самодел, техника |
Комментариев нет

августа 11, 2010 | Автор: dimio 
Последние комментарии