Сервер видеонаблюдения на linux своими руками
На сегодняшний день охранные системы различного типа устанавливаются повсеместно. Чаще всего для обеспечения надлежащего уровня безопасности используются системы видеонаблюдения. Все линии видеоконтроля условно делятся на два вида: системы, построенные на основе видеорегистратора, и комплексы, работающие на базе компьютера. Первые устройства видеоконтроля по своей комплектации и функциональности считаются лучше вторых. В последнее время широкое применение получило видеонаблюдение в Linux.
Организовать линию наблюдения можно при помощи разнообразных операционных систем. Наиболее выгодной является ОС Linux, поскольку отсутствует необходимость в приобретении лицензии на каждый компьютер и сервер в отдельности. Многие программные модули этой операционной системы распространяются бесплатно. К их числу можно отнести программы ZoneMinder, Motion, LinuxDVR.
Виды программ, используемых для создания видеонаблюдения в конкретной операционной системе
IP видеонаблюдение сегодня получило широкое применение. Установка современных схем видеоконтроля позволяет управлять ими удаленным способом и просматривать необходимую видеоинформацию в режиме онлайн. Интересные предложения комплексов видеоконтроля есть в различных операционных системах. Линукс предлагает ряд программных модулей для организации видеонаблюдения:
- AVReg;
- ZoneMinder;
- NetAvis Observer;
- Motion.
Программный модуль AVReg представляет собой вид обеспечения, который позволяет создавать видеорегистраторы на базе персональных компьютеров с ОС Линукс. Указанный модуль имеет не совсем свободное лицензирование, однако использовать его в некоммерческих целях вполне реально. Его функционального набора достаточно для создания эффективной линии видеоконтроля в доме или квартире. Преимуществом такого модуля является то, что вся документация и меню настроек выполнены на русском языке.
ZoneMinder и NetAvis Observer являются более профессиональными системами. Правда, на сегодняшний день они получили недостаточное распространение ввиду того, что все сопровождение и документация выполняются на английском языке. Motion является наиболее распространенным программным модулем. Для построения системы видеонаблюдения на основе этой программы необходимо использовать следующее оборудование:
- Домашний сервер (персональный компьютер или ноутбук);
- Операционную систему Linux;
- Программу;
- Web-камеры или профессиональные камеры.
Рекомендации специалистов относительно выбора программного модуля
В качестве программного модуля для организации линии видеоконтроля специалисты рекомендуют выбирать программу Motion. Она без проблем работает в Линуксе и является консольной. Любая версия программы обладает встроенным веб-сервисом, при помощи которого по запрограммированному порту выводится поток видеоинформации с принимающего устройства (IP камеры). Вся видеоинформация по потоку имеет формат MJPEG.
Программа Motion имеет встроенную линию регистрации движения. Ее наличие позволяет записывать не всю поступающую информацию круглосуточно. Запись видеоизображений производится в момент фиксирования движения в поле зрения видеокамеры.
Такая возможность системы обеспечивает экономию места на жестком диске и увеличивает продолжительность времени записи. Эту опцию можно и отключить.
Также программный модуль Motion является очень простым в настройке и использовании. Но для обеспечения эффективной и полноценной работы системы видеонаблюдения, совмещенной с операционной системой Линукс, требуются определенные знания. Для упрощения процедуры управления программой специалисты рекомендуют использовать новое программное совмещение Motion и HTML. Благодаря набору манипуляционных операций возможно создать очень удобный интерфейс программы для пользователя. Созданная система такого типа может в последующем расширяться.
На видео – о системах Linux:
Установка и настройка программного модуля Ivideon для создания видеонаблюдения
Сам по себе программный модуль Ivideon состоит из двух отделов, а именно: Ivideon Client и Ivideon Server. Серверная часть программы устанавливается на персональный компьютер. Сервер принимает весь поток видеоинформации, получаемый с камер, и сохраняет ее на жесткий диск устройства.
Сервер позволяет осуществлять видеонаблюдение без привязки к статическому адресу посредством мировой паутины.
Программа Ivideon поддерживает работу в операционной системе Linux, а именно: Ubuntu Desktop 12.04 LTS. Эта версия программы является новейшим выпуском. В ней содержатся самые свежие обновления и исправления системных ошибок. Системные требования операционной системы Линукс гораздо ниже, чем в других ОС. Поэтому при подключении нетбука в качестве сервера можно создать неограниченную линию видеоконтроля.
Специалисты рекомендуют не использовать нетбук в качестве сервера для работы с линией видеонаблюдения, включающей в себя более одной камеры. Поскольку одно устройство, которое функционирует в режиме Full HD, сильно перегружает работу оборудования с одноядерным процессором.
После переезда в новый офис, дабы не расслаблять сотрудников, было решено установить систему видеонаблюдения. Но, как обычно, основным условием было: дешево и сердито :) После обдумывания и подсчетов было решено остановиться на следующем: IP-камеры и компьютер в качестве регистратора.
Итак, у нас были IP камеры, компьютер в качестве регистратора, motion в качестве софта и желание подружить весь этот колхоз. И что же умеет motion из того, что нам надо? :)
- Работа с камерами, подключенными через карты захвата либо с IP камерами.
- Выполнять скрипты при наступлении и окончании события.
Ну чтож, приступим. Для начала попробуем с одной камерой. Устанавливаем motion.
1. закомментируем строчку
2. в строке netcam_url прописываем URL для доступа к нашей камере. Мы использовали IP камеры Axis, модель 207 (со встроенным микрофоном).
Для нашего случая выглядело так:
где camera_ip — IP адрес камеры.
3. далее находим строку target_dir — здесь указываем путь к папке, где будемхранить данные с камеры.
4. а теперь начинается самое интересное. Находим строку on_event_start . Здесь мы прописываем команду, которая будет выполняться при наступлении события, то есть при движении. Что нам это дает? А дает нам это то, что мы не будем постояно вести запись, а только по необходимости — есть движение, идет запись, закончилось, остановились и мы. Таким образом получается экономия. Для сравнения — у нас ведется запись с 10 камер — цветная картинка 640х480 со звуком, записи хранятся 21 день и все это дело занимает на диске в среднем 135GB, а всесте с фото, которые делает motion около 200 GB.
5. следующая строка: on_event_end — это для команды, отрабатывающей по окончанию события.
webcam_port и control_port
Для примера: для первой камеры ставим значения
webcam_port 8081
control_port 8080
для второй
webcam_port 8083
control_port 8082
и так далее.
Это в принципе основные изменения. Думаю при внимательном прочтении конфига вы сами найдете нужные вам параметры, так как там все довольно хорошо задокументировано.
Теперь вернемся к скриптам, которые отрабатывают при начале и окончании события. Так как нам надо писать видео с камеры, то для этого я использовал mencoder. В папке /root/bin/ создаем скрипты recordstart.sh и recordstop.sh , которые будут запускаться при наступлеии и окончании события соответсвенно. Давайте заглянем внутрь recordstart.sh :
if [ "$1" -eq 218 ]
then
`/usr/bin/mencoder -ovc copy -oac pcm -delay 1.5 -mc 10 -o
/video/motion/$2/$FILENAME rtsp://192.168.95.218/mpeg4/media.amp > /dev/null`
elif [ "$1" -eq 219 ]
then
`/usr/bin/mencoder -ovc copy -oac pcm -delay 1.5 -mc 10 -o
/video/motion/$2/$FILENAME rtsp://192.168.95.219/mpeg4/media.amp > /dev/null`
else
`/usr/bin/mencoder -ovc copy -oac pcm -mc 10 -o /video/motion/$2/$FILENAME
rtsp://192.168.95.$1/mpeg4/media.amp > /dev/null`
fi
Скрипт принимает два параметра:
1 — имя камеры, хотя имя не совсем верно, так как это последний октет из IP адреса камеры. То есть, как в нашем случае (мы используем 95 подсеть — 192.168.95.0/24 ). Таким образом, при передаче значения 211 — будет ясно, что хотим обратиться к камере с IP 192.168.95.211
2 — директория, где будет храниться записанный файл. Сделано для того, чтобы легче было искать. Опять же в нашем случае: имеется папка /video/motion в которой хранятся записи, но для того, чтобы не мешать все в кучу, она содержит поддиректории зон: kuhnya , balkon и т.д. Значит при передаче значения balcon — запись будеть производиться в директорию /video/motion/balkon .
Итак, при вызове скрипта в виде /root/bin/recordstart.sh 211 balkon — скрипт будет писать с камеры с IP 192.168.95.211 в директорию /video/motion/balkon . Надеюсь тут все более-неменее ясно.
Как видно, вначале мы генерируем уникальное имя для файла, в который будем писать, которое состоит из следующих частей:
- start — номер камеры, вернее последний октет из ее IP с предшествующим ей cam.
- dt — текущая дата в формате ГГГГММДДччммсс.
Небольшое пояснение: так уж оказалось, что у нас разные модели камер, которые предоставляют разные способы доступа к потоку видео данных, из-за этого пришлось ввести в скрипте проверки.
Теперь пройдемся по mencoder-у:
- -ovc copy — означает, что видеоряд копируем, так как с камеры сразу идет в mpeg4
- -oac pcm — какой кодек использовать для звуковой дорожки, если камера позволяет писать звук.
- -mc 10 — Максимальная величина корректировки A-V синхронизации на один кадр (в секундах)
- -delay 1.5 — Задержка в мс, которая должна вноситься в каждый канал
Если у вас проблемы с синхронизацией видео и звукового ряда, тогда надо менять значения для последних двух параметров — mc и delay. Для теста можно использовать mplayer.
Ну вот, теперь при наступлении события, мы можем запускать данный скрипт. Таким образом в конфиге для motion для нашей камеры прописываем в строке on_event_start что-то похожее:
on_event_start "/root/bin/recordstart.sh 210 koridor1"
И он начнет писать. Но ведь это все еще надо остановить. Для этого используем второй скрипт /root/bin/recordstop.sh.
Скрипт принимает один параметр — все тот же последний октет из IP адреса камеры.
Соответсвенно в строке on_event_end файла конфигурации прописываем что-то вроде:
on_event_end "/root/bin/recordstop.sh 210"Ну вот примерно и все, что касается конфигурации.
Теперь перейдем к рутинным операциям. У меня используются две, которые отрабатывают по крону.
- Удаляет устаревшие файлы, которые страрше 21 дня.
- Объединяет все файлы за день в один.
Рассмотрим скрипт для чистки. У меня он располагается в директории /root/sbin и, для того, чтобы враги не догадались, называется clean.sh
/bin/find /video/balkon -name "*.*" -mtime +21 -delete
/bin/find /video/motion/balkon -name "*.*" -mtime +21 -delete
В первой директории хранятся фотографии, сделанные motion — это параметр из файла конфигурации в строке target_dir. Вторая директория — куда пишется видео, запущенное из скрипта recordstart.sh
А вот второй скрипт посложнее.
workDir = '/video/motion/'
dirs = os.listdir(workDir)
oldDate = summaryFile = summaryFileTmp = ''
for dir in dirs:
filesList = os.listdir(workDir + dir)
filesList.sort()
for file in filesList:
tmpN = file.split('.')
nm = tmpN[0]
tmpN = nm.split('-')
if tmpN[0] != 'S':
nm = tmpN[1]
year = nm[0:4]
month = nm[4:6]
day = nm[6:8]
date = year + month + day
if oldDate != date:
summaryFile = workDir + dir + '/S-' + tmpN[0] + '-' + year +month + day + '.avi'
summaryFileTmp = workDir + dir + '/S-' + tmpN[0] + '-' + year +month + day + '-tmp.avi'
Это для объединения коротких роликов за день в один суммарный. (Для тех кто не в курсе — он на питоне). Единственное, что нужно менять — это переменная workDir — путь, куда mencoder пишет свои файлы, все из того же recordstart.sh
Прописываем их в крон на выполнение раз в сутки, желательно ночью, пока карета не превратится в тыкву :)
Запускаем motion следующим образом:
motion -c /path/to/config/file
/path/to/config/file — путь к нашему файлу с конфигом :)
А далее запускаем их при загрузке системы.
Ну вот наверное и все. Если будут вопросы — задавайте.
UPD: будьте внимательны с скриптом на питоне, так как сбилась вся табуляция, что для него очень критично.
LinuxDVR — программа для видеонаблюдения под Linux, скачать, инструкция по настройкам
Основные возможности и характеристики ПО LinuxDVR.
Основные преимущества.
Специальный дистрибутив Linux (около 17 Mb) на базе ядра 2.4 обеспечивает:
Простота и скорость расширения системы.
Как правило подобные системы включают аппаратных ключ защиты — HASP LPT или USB ключ.
Это значит, что если Вы хотите подключить дополнительные видеокамеры, то Вам после оплаты придется обмениваться ключами с производителем по почте или др. способом. Т.е. ждать.
Наш ключ защиты — программный. Заплатили за расширение тут же получили файл ключа по электронной почте и легко установили в работающую систему систему.
Поддержка недорогих и распространенных плат видеозахвата и TV-тюнеров.
Карты видеозахвата для подключения обычных в/к с композитным видеовыходом выбирались нами по принципу цены и доступности на рынке. Есть модели, которые можно заказать в ближайших компьютерных магазинах Вашего города.
Поддержка вебкамер и наблюдение через интернет.
Наблюдение с использованием web-камер распространяется пропорционально развитию компьютерных сетей и интернет и, без сомнения, в недалеком будущем станет преобладать над традиционным аналоговым.
Поэтому LinuxDVR работает с большим кол-вом моделей интернет камер и видеосерверов (видеошлюзов).
100% управление через Web-интерфейс.
Все функции системы в том числе и основные: наблюдение, управление, настройка и просмотр архива имеют веб-интерфейс.
Т.е. возможно создание автономных безмониторных видеорегистраторов для работы с которыми Вам нужен только Ваш любимый ПК и веб-браузер (Microsoft Internet Explorer v5.5 и выше, Mozilla Firefox, Mozilla, Netscape Navigator).
Доступ по имени и паролю с разрешенных компьютеров. Групп пользователей — 4 (инсталляторы, администраторы, операторы архива, операторы наблюдения).
Количество пользователей программно не ограничено.
Такой принцип взаимодействия ПО позволяет организовывать безголовые (безмониторные) автономные видеорегистраторы и удаленные системы наблюдения.
Инструкция по рабьоте с программой LinuxDVR
По умолчанию, после установки системы, в базе настроены только 4 в/к — 4 канала на одной одночиповой (BT878) 4-x канальной плате видеозахвата. То есть, при установке, мастер установки LinuxDVR может найти все устройства (платы) видеоввода, но в конфигурации (базе) все равно будет определены 4 в/к, так как это написано выше.
Для того, чтобы работать с большим кол-вом в/к — нужно:
Где находятся конфигурация с настройками: заходим браузером по адресу:
Имя пользователя install, пароль — пустой (по умолчанию после установки).
Идея такая: если все или большая группа в/к должны работать с одними настройками, определяем значения параметров один раз для всех сразу. Ну и конечно же, для конкретной кaмepы можно переопределить значение каждого из параметров настроек.
Итак, рассмотрим параметры, которые наиболее вероятно могут быть одинаковыми для всех в/к в системе.
- в зависимости от того, каких в/к больше определяем cam_type=
- в этом разделе определяем параметры norm, deinterlacer, auto_brightness .
- параметры pre_record, post_record и возможно motion_series_end ;
- параметры file_fmt, mpeg_maxfilesize, mpeg_view_fps и др. параметры из соответствующих вложенных подразделов;
- если большинство кaмep нужно смотреть в живую на локальном мониторе — monitor_live=Вкл ;
- если большинство кaмep нужно смотреть в живую удаленно через браузеры — webcam_live=Вкл ;
Многие значения должны быть уникальные для каждой в/к.
- в этом разделе определяем параметры v4l_dev, input (. это сочетание — уникальное для каждой в/к и фактически определяет номер чипа BT878[0..7] и видеоканала[0,1,2,3] на нем)
- параметр text_left — название кaмepы (ТОЛЬКО LATINSKIE, типа DOROGA, KPP1, CAMERA5)
- параметр v4l_pipe (. назначаем последовательно, чтобы не было совпадений)
- параметр wc_port (. назначаем последовательно 8081,8082,…, чтобы не было совпадений)
Локальный вьювер (просмотрщик) — это программа МОНИТОР. Её запуск — команда mon.
МОНИТОР отображает на экране заранее определенные матрицы с изображениями в/к.
- Типы матриц — одна кaмepa, квадраторы 2х2, 3×3, 4×4 и полиэкраны (различные).
- Кол-во матриц — до 10.
- Быстрое переключение между матрицами — клавишами клавиатуры 9.
- Максимальное кол-во в/к в матрице (квадратор 4х4) — до 16.
Все вышеописанное должно быть заранее определено в настройках администратором, иначе будет не доступно пользователю.
Будут выбираться только те кaмepы, по которым monitor_live=Вкл и правильно определен уникальный параметр v4l_pipe .
Сейчас практически в каждых коммерческих фирмах и государственных учреждениях устанавливают охранные системы, а точнее системы видеонаблюдения. Все они условно делятся на 2 вида:
- построенные на основе видеорегистраторов;
- построенные на основе компьютера.
Первый вариант прост — здесь необходимо побольше камер, монитор и человек, которых постоянно будет смотреть в него. А вот с системой на базе компьютера все сложнее. Помимо самого компьютера в этом случае нужно определится с операционной системой, под управлением которой будет все работать и, конечно же, необходимо выбрать программный продукт, который сможет записывать процесс видеонаблюдения.
Как уже понятно из названия стать, в качестве ОС мы рекомендуем использовать Linux. Во-первых, это выгодно – нам не нужно платить за лицензию на каждый компьютер или сервер. Во-вторых, это надежно – корректно настроенный компьютер на Linux будет работать не один год без сбоев и других проблем. И, в-третьих, многие системы видеонаблюдения под Linux (ZoneMinder, Motion, LinuxDVR) распространяются бесплатно, в то время как аналогичные продукты под Windows и другие ОС стоят немалых денег.
Вообще, программа Motion очень проста в настройке и использовании. Но работать с ней без дополнительных знаний слегка неудобно. По этому мы рекомендуем использовать связку motion+html (с помощью простых html-манипуляций можно создать очень удобный интерфейс для программы). Хотя эту систему, при желании и определенных навыках, можно расширять сколько угодно.
Читайте также: