Click

Видеорегистрация + видеонаблюдение для дома в 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 и весьма подробно откомментированного на простом английском.
Перед изменением рекомендую скопировать конфигурационный файл в свою домашнюю директорию и в дальнейшем работать с этой копией, если ваши задачи не требуют иного:

mkdir ~/.motion
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 я хочу рассказать о том, как сделать из веб-камеры камеру “ночного видения”. До встречи!

Еще на похожие темы:

Category Рубрики: Linux, Гаджеты | Tag Метки: , , , , , | Comments Комментариев нет

Leave a Reply