Сама
по себе идея видео-наблюдения думаю интересует многих. Всегда интересно
знать, что происходит в ваше отсутствие на рабочем месте, в офисе, дома
в саду. Если подойти к вопросу серьезно, то окажется, что путей решения
очень много. Причем, что радует как в Windows так и в Linux. Например я
гуляя по магазинам у себя в городе видел как минимум десяток совершенно
разных систем реализованных вод Windows, обладающих красивым
(»удобным»=ненужным) графическим интерфейсом и стоит все это кучу
денег. Другой вопрос, это реализация полноценной системы
видео-наблюдения под Linux. Выбор как это сделать, очень даже ничего.
Вот из тех, что попались мне и понравились:
AVReg – Представляет собой
программное обеспечение (software) для создания аудио/видео
регистраторов на на базе персональных компьютеров и видеосерверов под
управлением Linux. Распространяется в виде набора пакетов для некоторых
основных дистрибутивов Linux.
К сожалению программа имеет не совсем свободную лицензию (license)
однако даже вариант для некоммерческого использования с некоторыми
урезанными функциями вполне хватит для домашнего использования. Плюс же
этой системы в том, что она активно развивается и имеет огромное
количество надстроек, графический интерфейс, проект русский так что вся
документация на русском + подробные инструкции по настройке и
установке.
ZoneMinder – так же
мультиплатформенная проффесиональная система, тоже развивается, правда
не так активно, все сопровождение и документация на английском,
присутствует в репозитариях, и тянет за собой MySQL базу и http-сервер
Apache.
NetAvis Observer – серьезное программное обеспечение, сопровождается на английском, активно развивается и рассчитано на серьезные проекты.
Motion
– Программа Motion способна контролировать сигнал, полученный с одной
или нескольких видеокамер, и обнаруживать наличие изменений на
картинке. На выходе получаем фотки в форматах jpeg, ppm или mpeg
видеопоток, который может транслироваться в сеть или записываться в
файл. Проект целиком и полностью свободный, сама программа существует
только в виде демона что обеспечивает низкое ресурсо-потребление, имеет
встроенный мини http-server (это позволяет смотреть видео в реальном
времени в браузере на локальном компьютере или же другом компьютере в
сети, интернете) и может работать с СУБД MsSQL, настраивается через
конфиг-файлы. На этом варианте я и остановился.
Оборудование необходимое для видео-слежения:
- Компьютер, ноутбук, домашний сервер
- ОС GNU/Linux
- Программа Motion + ffmpeg
- Web-камера, камера в ноутбуке, профессиональная камера.
Устанавливаем motion
В Ubuntu 8.10\9.04 программа и все сопутствующие модули есть в
репозитариях. Так что установка программы производиться в одну строчку
в консоли и в 1 минуту ожидания.
1
| sudo aptitude install motion |
После того как установка произведена, вы можете приступить к
настройке программы. В моем случае это захват видео с устройства при
фиксации движения в кадре. Т.е. запись в файл начинается только в том
случае, если motion фиксирует движение, очень удобно, так как это не
съест все ваше свободное пространство на винте, да не будет надобности
просматривать пустые фильмы.
Конфиг файл находиться в /etc/motion/motion.conf
Открываем его текстовым редактором gedit.
1
| sudo gedit /etc/motion/motion.conf |
Конфиг очень подробно прокомментирован на детском английском, по
этому уделив ему пол часа времени, вы точно будете знать как именно
нужно делать и какие настройки менять, что-бы получить желаемый
результат.
Я приведу основные важные моменты в моем случае (смотри выше)
—————————————————————————————————————————————————————————–
# Start in daemon (background) mode and release terminal (default: off)
#Стартовать как демон, этот параметр можно поставить в on, по умолчанию он в off
daemon on
# Videodevice to be used for capturing (default /dev/video0)
# for FreeBSD default is /dev/bktr0
#В Линукс ваше видео устройство для захвата должно быть по
умолчанию /dev/video0 если вы имеете несколько то соответственно
/dev/video1 /dev/video2 и т.д.
videodevice /dev/video0
# 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
#Разрешение вашего видео тут как вам нравиться 320х240, 640х480 …
width 640
# Image height (pixels). Valid range: Camera dependent, default: 288
height 480
# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
# Устанавливаем количество захватываемых кадров в секунду;
framerate 30 (30 в самый раз)
# Gap is the seconds of no motion detection that triggers the end of an event
# An event is defined as a series of motion images taken within a short timeframe.
# Recommended value is 60 seconds (Default). The value 0 is allowed and disables
# events causing all Motion to be written to one single mpeg file and no pre_capture.
#gap отвечает за длину ролика который будет храниться в
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» это значит что motion будет писать все видео
в независимости есть движение или нет. Это не очень круто!
max_mpeg_time 120
# Output ‘normal’ pictures when motion is detected (default: on)
# Valid values: on, off, first, best, center
# When set to ‘first’, only the first picture of an event is saved.
# Picture with most motion of an event is saved when set to ‘best’.
# Picture with motion nearest center of picture is saved when set to ‘center’.
# Can be used as preview shot for the corresponding movie.
#Это параметр указывает какой скриншот с движением сохранить,
по умолчанию стоит на on это не круто так как он будет сейвить все
подряд, по истечении 1 часа у вас их будет 10000~
по этому ставим или best (лучший), или first (первый)
output_normal best
# Output pictures with only the pixels moving object (ghost images) (default: off)
#ничего не трогаем!
output_motion off
# Use ffmpeg to encode mpeg movies in realtime (default: off)
#ВАЖНЫЙ ПАРАМЕТР! Так как именно он указывает motion что нада сохранять видео
на нужно именно видео, по дефолту стоит off переключаем на on
ffmpeg_cap_new on
# Codec to used by ffmpeg for the video compression.
# Timelapse mpegs are always made in mpeg1 format independent from this option.
# Supported formats are: mpeg1 (ffmpeg-0.4.8 only), mpeg4 (default), and msmpeg4.
# mpeg1 – gives you files with extension .mpg
# mpeg4 or msmpeg4 – gives you files with extension .avi
# msmpeg4 is recommended for use with Windows Media Player because
# it requires no installation of codec on the Windows client.
# swf – gives you a flash film with extension .swf
# flv – gives you a flash video with extension .flv
# ffv1 – FF video codec 1 for Lossless Encoding ( experimental )
# mov – QuickTime ( testing )
#тут большая запарка, так как если ставить кодек mpeg4 или
mpeg1 после запуска motion вам радостно сообщит что не может найти
кодек в системе, этот вопрос решается по разному, самый простой способ,
это установить кодек ffv1 записать пару минут видео и открыть с помощью
Totem, который сообщит что не может проиграть файл и автоматически
найдет нужный кодек, вам останеться кликнуть ок, дождаться загрузки, и
вууаля, видео будет классно проигрыватсья и никаких проблем.
ffmpeg_video_codec ffv1
# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
#здесь укажите каталог куда бы вы хотели что-бы сохранялось видео и скрины.
target_dir /home/booch/new
# The mini-http server listens to this port for requests (default: 0 = disabled)
#Это ваш порт на localhost ничего трогать не нада.
webcam_port 8081
# Quality of the jpeg images produced (default: 50)
#По вкусу
webcam_quality 50
# 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)
#ставим 20, это оптимальное значение, по дефолту off — это не хорошо
webcam_motion 20
# Maximum framerate for webcam streams (default: 1)
#та же история по дефолту 1, ставим 20 — что есть нормально
webcam_maxrate 20
# Restrict webcam connections to localhost only (default: on)
#НЕ ТРОГАТЬ!
webcam_localhost on
—————————————————————————————————————————————————————————–
И так запускаем motion (с правами рута обязательно)
Смотрим на вывод, там не должно быть слов error, missing, fatal,
signature, cannot find codec, ошибка, cannot save и т.д. Зато должны
быть оповещающие вас о том, что запущен мини http-server, и некоторая
техническая информация.
Теперь откройте браузер и введите в адресной строке http://localhost:8081/
8081 — это наш порт (смотри конфиг)
localhost — так как видео транслируется на локальную
машину, для трансляции видео на машину в сети значение нужно менять
(смотри конфиг)
После вы должны увидеть ваше окно с видео в браузере. А в папке
которую вы указали в качестве целевой (смотри конфиг) начнет
сохраняться ролик + скрин (best) как только вы уйдете с поле зрения
камеры и она не будет фиксировать движения, через 120 секунд ролик
прекратит писаться.
Теперь ваша камера четко палит за происходящим, если в ее поле
зрение попадает движущийся объект то сразу стартует запись, после того
как объкт отвалил, запись продолжается 120 секунд, далее ролик не
пишется, т.е. Не отъедает место на винте. Короче говоря motion начинает
писать только в случае обнаружения движения.
Выглядеть это должно примерно так
Возможности
Для настройки видео наблюдения у себя на системе я использовал камеру
ноутбука, если же вы имеете внешнию USB-камеру это еще лучше, купив к
ней провод вы можете закрепить ее там, где вам понравиться, в 90%
случаях любая современная камера без проблем будет определена Ubuntu
9.04\8.10 если же вы надумали покупать, то лучше в сети ознакомтесь с
тем, какие камеры не имееют проблем при работе в Linux.
Возможности motion ограничены только вашей фантазией, при
необходимости можно настроить выполнение любой команды или скрипта при
выполнении заданного вами условия (например обнаружения движения) Кто
читал внимательно, увидел слово скрипт, кто знает, что такое скрипт уже
прокрутил в голове 1001 вариант. Вы можете настроить отправку
электронной почты, отпарвку сообщения в аську, отправку СМС на
мобильник и даже настроить возможность того, что-бы система звонила вам
через Asterisk или включала звуковую тревогу.
Источник
|