Видеонаблюдение в Linux с помощью Motion. Linux cms видеонаблюдение
Для системы видеонаблюдения на Linux предусмотрено несколько вариантов ПО
Сегодня Linux — единственная реальная альтернатива Windows. В последние годы эта операционная система является лучшей для организации видеонаблюдения на объекте. Создать контроль можно с помощью различного ПО. Оно — наиболее выгодно, поскольку пользователю не нужно приобретать лицензии на каждый сервер и компьютер.
Важно! Вокруг Linux сформировалось большое сообщество программистов, оно совершенствует систему, поэтому у нее большое будущее. Так же постоянно пополняется перечень программ для видеонаблюдения.
Но и на сегодняшний день список программ видеонаблюдения для Линукс уже весьма широк:
- AVReg;
- ZoneMinder;
- NetAvis Observer;
- Motion;
- Линия;
- Xeoma;
- MPV;
- LinuxDVR;
- Ivideon;
- Nginx;
- FFMpeg;
- Trassir;
Если вы хотите сформировать видеонаблюдение на Linux, но не решаетесь перейти на него с Windows по причине незнакомства с операционной системой — вы напрасно рефлексируете. Линукс — простая и понятная ОС, ее самостоятельно сможет установить и настроить даже новичок в компьютерных технологиях. Также у этой операционной системы требования к программам гораздо ниже, в сравнении с другими существующими ОС.
Производитель
У Линукс нет привязки к определенному месту на планете, нет организации, которая имеет права на эту ОС, отсутствует обобщенный центр, координирующий действия пользователей. Все программы для него являются результатами труда многих тысяч программистов. Присоединиться к этому проекту может любой человек. Linux появился в 1991 году, автором первой версии является молодой финский программист Линус Торвальдс. Успех пришел к проекту с момента его появления в сети, поскольку он обладает всеми необходимыми качествами:
- отсутствие оплаты;
- безопасность;
- надежность;
- исходный код – открыт.
Кнопка Reset пользователю Linux не понадобиться, поскольку аппаратная часть будет работать максимально корректно, без зависаний и перезагрузок. Для этой ОС нет вирусов, поскольку сама структура исключает возможность проникновения вредоносных программ. Пользователю не потребуется устанавливать антивирусные программы, которые утяжеляют и замедляют работу операционной системы, обновлять их время от времени и регулярно проверять жесткий диск.
Важно! Открытый код позволяет модифицировать его и использовать по собственному усмотрению. Пользователь может исправлять недочеты и ошибки, увеличивать функциональность с помощью дополнительных программ.
Условия распространения
ОС Линукс распространяется абсолютно бесплатно, что в сравнении со значительной стоимостью лицензионных версий Виндоус является большим преимуществом. После установки пользователь получает комплект из нескольких тысяч приложений, хотя они и не столь обыкновенны, как для Windows, но не менее функциональны. Если вам нужна программа для Linux для видеонаблюдения, вы можете выбрать один из трех вариантов:
- доступно бесплатное распространение ZoneMinder, LinuxDVR, Motion и некоторых других;
- бесплатное скачивание версии с ограниченным функционалом: Линия, Xeoma и AVReg;
- остальные программы нужно покупать.
Важно! Чтобы пользователь был полностью уверен в том, что покупает актуальный для себя продукт, можно сначала взять права на бесплатное тестирование. Большинство компаний-разработчиков предоставляют свои продукты на срок в 30 дней.
Функциональные возможности
Программы для видеонаблюдения на базе операционной системы Линукс имеют разные функциональные возможности и специфику, что обуславливает их практическое применение. Рассмотрим наиболее популярные приложения:
- AVReg. Продукт позволяющий создать на базе персонального компьютера с ОС Linux видеорегистратор. Лицензирование AVReg не свободно, но его можно бесплатно установить и использовать для некоммерческих задач. Набор функций не велик, но практичен, он позволяет создавать вполне эффективные домашние линии контроля в квартире или в загородном владении. Преимущества AVReg в том, что документация и меню – русифицированы.
- LinuxDVR. Это программа от российских разработчиков — компании «Сетевые информационные системы». Позволяет сформировать, как распределенные системы, так и единичный видеорегистратор. Гибкие настройки позволяют легко адаптироваться к сети. Формат – MJPEG. Один ПК может поддерживать до 32 аналоговых каналов, передающих черно-белые или цветные видеосигналы. Есть функция детектора движения и реакции на происходящее перед камерой. Число удаленных наблюдателей – не ограничено. События протоколируются, поиск в архиве – не вызывает затруднений.
- ZoneMinder. В сравнении с AVReg эта программа более профессиональна, она имеет более широкий функционал и обеспечивает серьезный контроль, но ее недостаток в том, что работать с ней сможет только пользователь, хорошо знающий английский язык. Программа распространяется в наборе пакетов к некоторым основным дистрибутивам Линукс.
- NetAvis Observer. Программа для работы с видео с интегрированной аналитикой информации. Это мощная профессиональная платформа для организации видеонаблюдения над объектами различного масштаба. Широкий выбор настроек и высокая производительность позволяет максимально адаптировать программы под нужды пользователя. ПО поддерживает все основные форматы видео. NetAvis Observer обеспечивает высокий уровень безопасности и соответствует требованиям конфиденциальности информации. Архитектура – гибкая, в ней заложена масштабируемость системы.
- Motion. Этот программный модуль имеет повышенный спрос. В качестве сервера можно использовать персональный компьютер или ноутбук. Программа является консольной и не вызывает сложностей в работе с Линукс. В любой версии есть веб-сервис, через который идет видеопоток с камеры наблюдения в формате MJPEG. В программе есть опция распознания движения, что позволяет записывать видеоинформацию выборочно. Понятный интерфейс, простые настройки и легкость использования обуславливают возможность полноценно контролировать объект.
- Ivideon. Программа сформирована из двух разделов: Client и Server. Видеонаблюдение можно осуществлять без привязки к определенному адресу, с любого места через интернет. Server устанавливается на персональный компьютер или на ноутбук, туда идет видеопоток и там ведется запись на жесткий диск. Моно использовать нетбук в качестве «слепого сервера», так на гаджете будет записываться видео, но на мониторе отображаться не будет. Для просмотра кроме ПК и ноутбука можно использовать смартфон и планшет.
- Линия. Это отечественный продукт от компании «ДевЛайн» из Краснодара. ПО занимает лидирующие позиции на российском рынке, благодаря совместимости с программами сторонних производителей и готовым отраслевым решениям. Расширенные возможности, простота интеграции, доступные цены, точность настроек обуславливает высокие конкурентные преимущества продукта.
Область применения
В зависимости от выбранного программного обеспечения для операционной системы Linux, можно решать самые разнообразные задачи видеонаблюдения:
- контроль над квартирой, загородным домом, гаражом и приусадебной территорией;
- наблюдение в цехах предприятия и складских терминалах;
- видеонаблюдение торговых точек и заведений общественного питания;
- контроль на парковками, АЗС, автостоянками и другими объектами.
Стоит ли использовать Линукс в качестве ОС для ПО видеонаблюдения
На сегодняшний день Linux – самая сильная и надежная операционная система сервисного обслуживания. Для домашнего или офисного ПК можно выбирать различные настройки и структуру ядра. Низкие требования к программам обеспечивают идеальную совместимость. Отсутствие возможности вирусных поражений облегчают работу и гарантируют быстродействие. Устанавливать ОС можно и на стационарные устройства и на мобильные гаджеты.
ohranivdome.net
Видеонаблюдение в Linux с помощью Motion Настройка Инструкция
Всем привет! В этой статье я хотел бы рассказать Вам о видеонаблюдении в Linux, а именно об инструменте Motion. С помощью программы Motion Вы сможете сделать за любой территорией, попадающей в поле зрения вышей веб-камеры, получать сообщения при обнаружении активности в заданной области, делать скрины, передавать изображение по сети и многое другое.
Видеонаблюдение в Linux
Программа Motion доступна для всех известных мне дистрибутивов Linux. Название говорит само за себя; кроме передачи движения, Motion может определять движение в определенной области кадра, отправлять сообщение при обнаружении активности в этой области, делать снимки, транслировать изображение по сети.
Motion исповедует в настройке Linuxway, конфигурационный файл хорошо комментирован, и если у вас нет проблем с английским (достаточно даже начального уровня), то понять смысл опций для вас не составит труда.
Установка Motion
Итак, перейдем к установке. Вводим команду:
$ sudo apt-get install motion |
Вам предложено будет вместе с основной утилитой установить несколько зависимостей. Соглашайтесь.
После скачивания и установки система попробует запустить Motion, но вы увидите сообщение:
[warn] Not starting motion daemon, disabled via /etc/default/ motion ... (warning) |
То есть режим демона отключен. Включаем:
Меняем в конце единственной строки “no” на “yes”.
Но это еще не всё, теперь тот же режим надо включить в другом файле:
nano /etc/motion/motion.conf |
Ищем строки
# Start in daemon (background) mode and release terminal (default: off) daemon off |
Меняем снова на “on” и запускаем Motion с конфигурационным файлом по умолчанию:
Проверьте, стартовал ли сервис:
ps aux|grep motion motion 19971 2.0 0.9 51316 8380 ? Sl 13:56 0:00 /usr/bin/motion |
Всё в порядке. Есть желание посмотреть на сырые данные, которые камера отправляет на микро-НТТР-сервер? Тогда наберите из сессии SSH:
8081 — порт HTTP-микросервера по умолчанию, изначально доступен только локально (только с localhost), это мы потом поправим. Будьте готовы, что в окно терминала повалятся кракозябры, и корректно закрыть терминал не получится.
Откройте другой терминал и снимите процесс, который вы обнаружили на предыдущем шаге:
Это было маленькое отступление, почти шутка. Зато вы теперь знаете, что с помощью telnet можно проверять активность сервисов на внешних портах localhost.
Настройка Motion «под себя»
Итак, где всё это веселое хозяйство, вы уже знаете: в /etc/motion/ motion.conf. Параметров много, но не очень. Файл являет собой шедевр конфигурационного файла — комментарии исчерпывающие, краткие и понятные.
Пройдемся по основным параметрам, чтобы интегрировать motion в наш ПД. Они будут не в порядке следования в файле, а в порядке важности (по моему мнению), и расположены в разных секциях:
# Videodevice to be used for capturing (default /dev/video0) # for FreeBSD default is /dev/bktr0 videodevice /dev/video0 |
Видеоустройство. Благо, в 99 % случаев это оно и есть, так что оставляем как есть.
# The mini-http server listens to this port for requests (default: 0 =disabled) webcam_port 8081 |
Порт встроенного web-сервера. Можно менять по желанию, только не попадите на какой-нибудь существующий порт, занятый нужной службой (типа 22, 23, 80, 143 и подобных).
# Restrict webcam connections to localhost only (default: on) webcam_localhost off |
Доступ к камере только с localhost; если стоит “on”, камера не будет видна из сети.
# Image width (pixels). Valid range: Camera dependent, default: 352< width 320 |
Ширина картинки; для случая нашей камеры, максимум — 640.
# Image height (pixels). Valid range: Camera dependent, default: 288 height 240 |
Аналогично — высота, максимум — 480.
# Maximum number of frames to be captured per second. # Valid range: 2-100. Default: 100 (almost no limit). framerate 2 |
Количество кадров в секунду. Сами решайте; для нашего случая 2 в секунду самое то.
# Rotate image this number of degrees. The rotation affects all saved images as # well as mpeg movies. Valid values: 0 (default = no rotation), 90,180 and 270. rotate 0 |
Можно повернуть изображение на заданное количество градусов (если камера прикреплена подуглом).# Threshold for number of changed pixels in an image that # triggers motion detection (default: 1500) threshold 1500
Этот параметр можно охарактеризовать как чувствительность при определении движения. Чем меньше значение, тем чувствительнее детектор.
# Noise threshold for the motion detection (default: 32) noise_level 32 |
Уровень шума. Позволяет игнорировать шум, создаваемый камерой. Установите оптимальное значение для своей камеры;меня устроило по умолчанию.
# Detect motion in predefined areas (1 - 9). Areas are numbered like that: 1 2 3 # A script (on_area_detected) is started immediately when motion is 4 5 6 # detected in one of the given areas, but only once during an event. 7 8 9 # One or more areas can be specified with this option. (Default: not defined) ; area_detect value |
Позволяет следит только за определенной областью.
- 1 — левый верхний угол,
- 2 — верхняя средняя часть, …,
- 5 — центр, …,
- 9 — правый нижний угол.
Если область не определена, то слежение происходит по всему экрану.
# The quality (in percent) to be used by the jpeg compression (default: 75) quality 75 |
Качество jpeg-сжатия.
# Make automated snapshot every N seconds (default: 0 = disabled) snapshot_interval 0 |
Интервал в секундах, между которыми будут автоматически делаться снимки при наличии движения.
# Locate and draw a box around the moving object. # Valid values: on, off and preview (default: off) # Set to ‘preview' will only draw a box in preview_shot pictures. locate off |
Позволяет рисовать рамку вокруг движущегося объекта. Интересная опция, попробуйте.
# Draws the timestamp using same options as C function strftime(3) # Default: %Y-%m-%d\n%T = date in ISO format and time in 24 hour clock # Text is placed in lower right corner text_right %Y-%m-%d\n%T-%q |
Рисуем ли текст на кадре; если да — то где и в каком формате.
# Target base directory for pictures and films # Recommended to use absolute path. (Default: current working directory) target_dir /tmp/motion |
Каталог, в котором мы будем складывать файлы видео и картинки, далее подробно расписываются имена для разных вариантов записи.
Далее для краткости опишу сразу всю секцию:
# External Commands, Warnings and Logging: on_event_start value on_event_end value on_picture_save value on_motion_detected value on_area_detected value on_movie_start value on_movie_end value on_camera_lost value |
Выполняет определенное действие по наступлении определенных событий. В качестве value можно указать скрипт, например, оправляющий вам сообщение. Или включать музыку при обнаружении кого-либо. Всё ограничивается вашей фантазией и зависит от вашей цели.
Прочитайте внимательно — создатели предусмотрели практически всё, что нужно для эффективного наблюдения и регистрации событий.
Дальше идут параметры для связи с базами данных MySQL и PostgreSQL и настройки конфигов для нескольких камер. Не описываю: кто пользуется этими службами, настроит это сам.
Закрываем, перезапускаем motion: service motion restart
[ ok ] Restarting motion...[ ] Stopping motion detection daemon: motion. [ ok ] Starting motion detection daemon: motion. done. |
Заходим из локальной сети через браузер на IP-адрес сервера (на порт 8081, если вы его не изменяли) — например, так: http://192.168.0.30:8081/.
И наслаждаемся картинкой. Обратите внимание на нижний правый угол картинки — там стоят дата и время, ровно так, как мы задали в файле /etc/motion/motion.conf.
Но наслаждаемся недолго — вы же не будете открывать одно окно браузера для панели управления, а второе — для камеры? Сейчас очень модно стало слово «дашборд [dashboard]», означающее «приборная панель». Так вот, сведем на один дашборд кнопки и картинку.
Первый дашборд
Откройте файл, который выводит кнопки и индикаторы. У меня их несколько; обкатываю на index-test.php, потом переношу удавшиеся изменения в index.php.
В конец текста, после закрывающей скобки ?> (конец php) и перед тегом , добавьте строку:
<img src="“http://192.168.0.30:8081”" /> |
Перезагрузите web-страницу — внизу, после кнопок, должна появиться область видеокамеры. Место width=“25%” делает окно видеопотока в 25 % от обшей ширины окна браузера; можете менять это число так, как вам нравится.
Ну что, всё? Можно праздновать победу? Ан нет. Давайте поразмышляем, что будет, если вы захотите «пробросить» порт web-сервера наружу, в Интернет. Сейчас я не про безопасность, а про то, что отобразится на дашборде. Ваш браузер будет искать адрес 192.168.0.30 в своей локальной сети. И точно не найдет открытый порт8081с видеопотоком.
Поэтому надо найти способ сделать так, чтобы браузер знал точный адрес хоста, на котором расположен ваш ПД. Положим, вы сделаете выход в Интернет через хост 111.222.333.444; тогда надо пробросить порт 8081 на этом хосте на внутренний IP-адрес 192.168.0.30 на тот же порт. И, убрав предыдущее изменение, добавить строку:
<img src="“http://111.222.333.444:8081”" /> |
Успех? Попробуйте зайти из локальной сети. В случае удачи вы всё же увидите окно камеры. Но если вы используете динамический DNS, или неправильно прописали правила iptables на сервере, то вы не увидите ничего.
А нет ли способа узнать, на какой адрес мы стучимся? Пусть хост сообщит браузеру, какой его настоящий IP-адрес в данный момент. Тогда при доступе из локальной сети это будет 192.168.0.30, при доступе извне —тот IP-адрес, через который вы входите на свой дашборд.
Такой способ есть, для этого в php есть массив переменных $_SERVER. Он содержит информацию о заголовках, путях и местоположении скриптов. Записи в этом массиве создаются web-сервером. Для начала мы воспользуемся только одной переменной.
Определим функцию, которая будет извлекать полный путь к IP-адресу камеры и помещать ее в переменную. Внутри тегов ближе к началу страницы расположите строки:
function getUrl() { $url = @( $_SERVER[“HTTPS”] != ‘on' ) ? ‘http://'.$_SERVER[“SERVER_NAME”] : ‘https://'. $_SERVER[“SERVER_NAME”]; $url .= “:8081”; return $url; } |
А в том месте, где вам надо вывести область камеры (опять-таки внутри кода php), расположите две строки:
$cam = getUrl(); echo “<img src="$cam" />”; |
Нужно ли комментировать этот великолепный прием, позволяющий независимо от протокола (HTTP или HTTPS) иметь верный IP-адрес сервера? Думаю, что не стоит.
В результате вы должны получить нечто, похожее на это:
Видеонаблюдение в LinuxМоя собака тоже решила принять участие в написании статьи про видеонаблюдение в Linux, а заодно показать себя. Если честно, она просто пытается достать печенье.
Небольшое замечание: с этого момента учитывайте загрузку командного контроллера. Одновременные запись информации на медленную карту памяти и вещание в дашборд могут перегрузить процессор. Если это станет критичным, отключите запись на диск (что там писать?). Достаточно будет закомментировать строку:
в конфигурационном файле, и motion перестанет записывать, тем самым вполовину разгрузив процессор.
Ну что, теперь вполне можно показать первое приближение ПД кому-нибудь из домашних? Особенно если у вас наличествует смартфон с большим экраном, который можно использовать как пульт.
А в следующей статье про видеонаблюдение в Linux, вас снова ждет интересное продолжение, пока!
Наша оценка
Motion - это лучшая программа для организации видеонаблюдения в Linux. Наша оценка - отлично!
Оценка пользователей: 4.68 ( 3 оценок)www.spy-soft.net
Большой брат в Linux или видеонаблюдение своими руками / Хабр
Большой брат в Linux или видеонаблюдение своими руками.После переезда в новый офис, дабы не расслаблять сотрудников, было решено установить систему видеонаблюдения. Но, как обычно, основным условием было: дешево и сердито :) После обдумывания и подсчетов было решено остановиться на следующем: IP камеры и компьютер в качестве регистратора. Для начала попробовали небезызвестный ZoneMinder. Но отчего-то с 9 камерами он грузил систему нещадно. После некоторой борьбы с ним, было решено отказаться от него. Поискав на просторах Internet была найдена программка под названием motion (http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome). Почитав немного про нее, было решено остановиться на ней. Итак, у нас были IP камеры, компьютер в качестве регистратора, motion в качестве софта и желание подружить весь этот колхоз :) И что же умеет motion из того, что нам надо? :) 1. Работа с камерами, подключенными через карты захвата либо с IP камерами. 2. Выполнять скрипты при наступлении и окончании события.
Ну чтож, приступим. Для начала попробуем с одной камерой :) Устанавливаем motion. Далее, в папке /etc/motion/ копируем файл с конфигурацией (motion.conf) в файл для нашей камеры, например motion1.conf. А теперь начинаем его править под себя: 1. закомментируем строчку videodevice /dev/video0 2. в строке netcam_url прописываем URL для доступа к нашей камере. Мы использовали IP камеры Axis, модель 207 (со встроенным микрофоном). Для нашего случая выглядело так: netcam_urlhttp://camera_ip/axis-cgi/mjpg/video.cgi?resolution=640x480 где camera_ip — IP адрес камеры :) 3. далее находим строку target_dir — здесь указываем путь к папке, где будем хранить данные с камеры. 4. а теперь начинается самое интересное. Находим строку on_event_start. Здесь мы прописываем команду, которая будет выполняться при наступлении события, то есть при движении. Что нам это дает? А дает нам это то, что мы не будем постояно вести запись, а только по необходимости — есть движение, идет запись, закончилось, остановились и мы. Таким образом получается экономия. Для сравнения — у нас ведется запись с 10 камер — цветная картинка 640х480 со звуком, записи хранятся 21 день и все это дело занимает на диске в среднем 135 GB, а всесте с фото, которые делает motion около 200 GB. 5. следующая строка: on_event_end — это для команды, отрабатывающей по окончанию события. 6. И еще один нюанс, motion поднимает небольшой http сервер, а так как для каждой камеры запускается своя инстанция программы с отдельным конфигом, то важно, чтобы он слушал на разных портах. Для этого проверяем, чтобы следующие строки отличались в каждом файле: 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:
[root@video bin]# cat /root/bin/recordstart.sh #!/bin/bash
# We are using two variables # 1 — camera name # 2 — directory name (where file will be stored)
# Generate filename start=«cam${1}» dt=`date +%Y%m%d%H%M%S` FILENAME="${start}-${dt}.avi" echo $FILENAME
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 — текущая дата в формате ГГГГММДДччммсс. Пример имени файла: cam218-20090924131847.avi — то есть, пишется с камеры с IP 192.168.95.218, дата начала: 2009 год, 09 месяц, 24 число, 13 часов, 18 минут, 47 секунд.
Небольшое пояснение: так уж оказалось, что у нас разные модели камер, которые предоставляют разные способы доступа к потоку видео данных, из-за этого пришлось ввести в скрипте проверки. Теперь пройдемся по 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.
[root@video bin]# cat /root/bin/recordstop.sh #!/bin/bash
# We are using one variable # 1 — camera name
# Get string with mencoder process PID MPID=`ps ax | grep mencoder | grep cam${1} | awk '{ print $1 }'`
# Kill process `kill -15 $MPID`
Скрипт принимает один параметр — все тот же последний октет из IP адреса камеры.
Соответсвенно в строке on_event_end файла конфигурации прописываем что-то вроде: on_event_end "/root/bin/recordstop.sh 210"
Ну вот примерно и все, что касается конфигурации. Теперь перейдем к рутинным операциям :) У меня используются две, которые отрабатывают по крону. 1. Удаляет устаревшие файлы, которые страрше 21 дня. 2. Объединяет все файлы за день в один.
Рассмотрим скрипт для чистки. У меня он располагается в директории /root/sbin и, для того, чтобы враги не догадались, называется clean.sh
[root@video ~]# cat /root/sbin/clean.sh #!/bin/sh
/bin/find /video/balkon -name "*.*" -mtime +21 -delete /bin/find /video/motion/balkon -name "*.*" -mtime +21 -delete
В первой директории хранятся фотографии, сделанные motion — это параметр из файла конфигурации в строке target_dir. Вторая директория — куда пишется видео, запущенное из скрипта recordstart.sh
А вот второй скрипт посложнее. [root@video ~]# cat /root/sbin/concatfiles.py import os, stat, types, commands
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' #conactenate files command = '/usr/bin/mencoder -oac copy -ovc copy ' + workDir + dir + '/' + tmpN[0] + '-' + date + '*.avi -o ' + summaryFileTmp os.system(command) #fix key frame command = 'ffmpeg -i ' + summaryFileTmp + ' -ss 0.04 -vcodec copy -acodec copy -vcodec copy -acodec copy ' + summaryFile os.system(command) #remove tmp file command = '/bin/rm -f ' + summaryFileTmp os.system(command) #remove old files command = '/bin/rm -f ' + workDir + dir + '/'+ tmpN[0] + '-' + date + '*.avi' os.system(command) oldDate = date
Это для объединения коротких роликов за день в один суммарный. (Для тех кто не в курсе — он на питоне). Единственное, что нужно менять — это переменная workDir — путь, куда mencoder пишет свои файлы, все из того же recordstart.sh
Прописываем их в крон на выполнение раз в сутки, желательно ночью, пока карета не превратится в тыкву :)
Запускаем motion следующим образом: motion -c /path/to/config/file
где /path/to/config/file — путь к нашему файлу с конфигом :)
А далее запускаем их при загрузке системы.
Ну вот наверное и все :) Если будут вопросы — задавайте :)
UPD: будьте внимательны с скриптом на питоне, так как сбилась вся табуляция, что для него очень критично.
habr.com
Видеонаблюдение в Linux / Блог им. Diesel / UNIXHOME
Ни для кого не секрет, что в наше время все следят друг за другом. Нет, не стоит пугаться, это не правительство и не инопланетяне(В общем не стоит исключать и таких вариантов). Все гораздо проще. Практически в каждой коммерческой фирме или госконторе, а зачастую, в школах и университетах, начальство устанавливает охранные системы. Под охранными системами обычно считают Охранно-Пожарные Системы(ОПС), Системы Контроля Доступа(СКД) и Системы видеонаблюдения. Вот про последние мы сегодня с вами и поговорим.Введение
Все существующие системы видеонаблюдения можно условно разделить на два лагеря: построенные на базе видеорегистраторов и построенные на базе компьютера. Если с видеорегистратором все понятно(Подключили к нему монитор пошире, камер побольше, посадили охранника посмышленее и система работает), то с системой на базе компьютера(видеосервера) все немного сложнее. Во-первых нужно определиться с операционной системой под которой всё это будет работать, во-вторых нужно выбрать тот или иной программный продукт который и будет записывать интересные моменты из жизни офиса ну и в-третьих нужно купить компьютер и платы видеозахвата(в случае если используются аналоговые камеры). Казалось бы, что вариант с видеорегистратором куда проще и доступнее, и, возможно, для небольших офисов/магазинов это самый лучший вариант, но что делать если нужно организовать систему по принципу – сидит охранник и мониторит 30 камер в 30-ти помещениях большого торгового центра, сидит начальник охраны и смотрит чего же делают охранники в его отсутствие, директор наблюдает за тем как работают его подчиненные(включая начальника охраны и секретаршу Машу которая любит сидеть в «Одноклассниках»), тем временем Генеральный Директор сидит дома и время от времени смотрит как работают люди в 4-ех его магазинах и 5-ти офисах, ну и наконец за всеми этими людьми следит Самый Главный Человек… – Системный Адмиистратор. Тут уже одним простым видеорегистратором не обойтись, нужно ставить(и не один) видеосервер способный отдавать картинку с камер по сети с разграничением прав и пользователей.Выбираем
Во-первых нужно выбрать ОС. Как видно из названия статьи я рекомендую использовать Linux, по-тому что: 1. Это выгодно. Не нужно платить за лицензию на каждый сервер и удаленный компьютер наблюдения. 2. Это надежно. Правильно настроенный сервер на Linux’е будет служить вам верой и правдой не один год. Во-вторых нужно выбрать программный продукт для регистрации видео. Здесь кроется еще один плюс выбранной операционной системы. Дело в том что многие из существующих систем видеонаблюдения под линукс распространяются бесплатно(Будь то ZoneMinder, Motion или LinuxDVR(до 4ех камер в системе)), в то время как аналогичные системы под «другие ОС» стоят порядка 50-ти тысяч рублей(в зависимости от предполагаемого количества камер и количества компьютеров и серверов работающих в системе).История успеха
Для себя я выбрал Motion. Motion представляет из себя простую консольную программку со встроенным веб-сервером выводящим по указанному порту в формате MJPEG видеопоток с устройства video4linux(/dev/video*). Кроме того motion имеет встроенную систему регистрации движений в поле зрения камеры. Т.е. на диск пишется не все видео в режиме 24/7, а только тогда когда камера «видит», что что-то происходит, что существенно экономит место на диске и увеличивает максимальное время записи полезной информации на диск(В прочем, если нужно, то можно включить и постоянную запись).Настройка
Настройка motion происходит через конфигурационный файл который по умолчанию расположен здесь: /etc/motion/motion.conf Про все пункты в этом файле вы можете прочитать в комманде man motion или же найти в гугле(благо в интернете информации по этому пакету достаточно), но пару пунктов из этого файлика я бы хотел выделить.control_port 8080 control_localhost off control_html_output on control_authentication user:password В этих четырех строках описан способ доступа к Web GUI настройки motion. В первой строке указан порт по которому нужно будет постучаться чтобы попасть в GUI, во второй строке разрешается/запрещается доступ к админке с адресов отличных от localhost’a(127.0.0.1), ну и в четвертой параметры авторизации(логин: пароль) для доступа к админке.В админке есть все пункты настройки motion(даже те которые не прописаны в конфигурационном файле – стоят значения по умолчанию), с их кратким описанием. Кроме того конфигурационные файлы очень удобно разбивать на «модули». Т.е. Основные настройки для всей системе хранить в файле /etc/motion/motion.conf, а настройки для каждой камеры хранить в отдельном файле, который потом можно будет подключить к основному файлу командой thread Вот так у меня выглядит конфигурационный файл для системы с четыремя камерами:
/etc/motion/motion.conf: framerate 15 ffmpeg_cap_new on ffmpeg_cap_motion off ffmpeg_timelapse 0 ffmpeg_timelapse_mode daily ffmpeg_bps 400000 ffmpeg_variable_bitrate 0 ffmpeg_video_codec ffv1 #Вот тут мы выбираем кодек которым мы будем сохранять видео ffmpeg_deinterlace off max_mpeg_time 600 text_right %Y-%m-%d\n%T text_changes off text_event %Y%m%d%H%M%S text_double off snapshot_filename %v-%Y%m%d%H%M%S-snapshot jpeg_filename %v-%Y%m%d%H%M%S-%q movie_filename %Y.%m.%d/%H:%M:%S timelapse_filename %Y%m%d-timelapse output_normal off webcam_quality 50 webcam_motion off webcam_maxrate 50 webcam_localhost off webcam_limit 0 control_port 8080 control_localhost off control_html_output on control_authentication user:password quiet on thread /etc/motion/thread1.conf thread /etc/motion/thread2.conf thread /etc/motion/thread3.conf thread /etc/motion/thread4.confЖирным выделил 4 файла настроек для каждой камеры. Вот один из них:/etc/motion/thread1.conf:#Выбираем видеосутройство(Карта видеозахвата)videodevice /dev/video0#Выбираем номер каналаinput 1#Выбираем normid( PAL-DK, SECAM, etc. в зависимости от вашей камеры )norm 3#Вот тут самое интересное – порт на который будет транслироваться видеопоток в формате mjpegwebcam_port 8081#Текст который будет выводиться в левом нижнем углу картинки(Сюда можно название камеры написать)text_left = «Camera Color»#Директория куда будет сохраняться записанный видеоматериалtarget_dir /opt/lampp/htdocs/bigbrother/Camera 1/
Интерфейс
Ну систему мы настроили и запустили. Камеры регистрируют любое движение и записывают все происходящее в специально подготовленную директорию. Остался один маленький вопрос. Куда смотреть чтобы в режиме реального времени следить за происходящим то? Помните строчку в конфигах webcam_port 8081? Вот если в адресной строке браузера зайти по адресу localhost:8081, то мы и увидим картинку с камеры в режиме реалтайм. Как видите ни о каком интерфейсе разговора нет. Можно конечно оставить все как есть. И для каждой камеры открывать отдельное окно браузера со своим портом. Но ведь гораздо приятней(да и удобней) видеть все в одном окне, как тут:Тут то нам на помощь и придут базовые знания в html(а на HTML5, CSS3, JQuery, etc. можно нарисовать интерфейс который не будет уступать небраузерным клиентам). Делаем табличку втыкаем туда 4 тега , в качестве параметра src указываем localhost:8081, и любой бразуер будет показывать видеопоток в формате MJPEG. Да, такая система требует небольших познаний в html, но в итоге получается очень гибкой и легконастраиваемой. Вот код моего рабочего примера на 4 камеры(см. скрин выше):
<html> <head> <title>BigBrother</title> <META content=»text/html; charset=utf-8″ http-equiv=Content-Type> <style></style> </head> <body bgcolor=gray> <center> <a href=»bigbrother»>Перейти к архиву</a> | <a href=#>Справка</a> | <a href=#>О программе</a> <table border=1 bordercolor=green width=80%> <tr> <td width=50%> <img src=»http://192.168.10.56:8081» width=100%> </td> <td width=50%> <img src=»http://192.168.10.56:8082» width=100%> </td> </tr> <tr> <td width=50%> <img src=»http://192.168.10.56:8083» width=100%> </td> <td width=50%> <img src=»http://192.168.10.56:8084» width=100%> </td> </tr> </table> </center> </body> </html>Кроме того, если все камеры подключены к серверу, а наблюдение ведется с удаленного компьютера, не совсем удобно добираться к записанному видеоматериалу. Нужно либо идти к серверу с флешкой(что совсем неправильно), либо поднимать ftp-сервер с авторизацией, либо написать еще один небольшой скрипт на php который будет следить за появление новых роликов и отдавать их клиентам. Тут уже решать вам самим. Для себя я выбрал последний вариант, потому-что его можно безболезненно встроить в интерфейс, он прост в понимании для охранников и позволяет им не отрываясь от своего любимого дела(Наблюдением за нарушителями на охраняемой ими территории), не закрывая интерфейса программы скачивать с сервера файл за тот или иной период записи.
unixhome.org.ua
Motion: Видеонаблюдение в Linux
Видеонаблюдение в Linux
Ни для кого не секрет, что в наше время все следят друг за другом. Нет, не стоит пугаться, это не правительство и не инопланетяне(В общем не стоит исключать и таких вариантов). Все гораздо проще. Практически в каждой коммерческой фирме или госконторе, а зачастую, в школах и университетах, начальство устанавливает охранные системы. Под охранными системами обычно считают Охранно-Пожарные Системы(ОПС), Системы Контроля Доступа(СКД) и Системы видеонаблюдения. Вот про последние мы сегодня с вами и поговорим.
Введение
Все существующие системы видеонаблюдения можно условно разделить на два лагеря: построенные на базе видеорегистраторов и построенные на базе компьютера. Если с видеорегистратором все понятно(Подключили к нему монитор пошире, камер побольше, посадили охранника посмышленее и система работает), то с системой на базе компьютера(видеосервера) все немного сложнее. Во-первых нужно определиться с операционной системой под которой всё это будет работать, во-вторых нужно выбрать тот или иной программный продукт который и будет записывать интересные моменты из жизни офиса ну и в-третьих нужно купить компьютер и платы видеозахвата(в случае если используются аналоговые камеры).
Казалось бы, что вариант с видеорегистратором куда проще и доступнее, и, возможно, для небольших офисов/магазинов это самый лучший вариант, но что делать если нужно организовать систему по принципу – сидит охранник и мониторит 30 камер в 30-ти помещениях большого торгового центра, сидит начальник охраны и смотрит чего же делают охранники в его отсутствие, директор наблюдает за тем как работают его подчиненные(включая начальника охраны и секретаршу Машу которая любит сидеть в «Одноклассниках»), тем временем Генеральный Директор сидит дома и время от времени смотрит как работают люди в 4-ех его магазинах и 5-ти офисах, ну и наконец за всеми этими людьми следит Самый Главный Человек… – Системный Адмиистратор. Тут уже одним простым видеорегистратором не обойтись, нужно ставить(и не один) видеосервер способный отдавать картинку с камер по сети с разграничением прав и пользователей.
Выбираем
Во-первых нужно выбрать ОС. Как видно из названия статьи я рекомендую использовать Linux, по-тому что:
1. Это выгодно. Не нужно платить за лицензию на каждый сервер и удаленный компьютер наблюдения.2. Это надежно. Правильно настроенный сервер на Linux’е будет служить вам верой и правдой не один год.
Во-вторых нужно выбрать программный продукт для регистрации видео.
Здесь кроется еще один плюс выбранной операционной системы. Дело в том что многие из существующих систем видеонаблюдения под линукс распространяются бесплатно(Будь то ZoneMinder, Motion или LinuxDVR(до 4ех камер в системе)), в то время как аналогичные системы под «другие ОС» стоят порядка 50-ти тысяч рублей(в зависимости от предполагаемого количества камер и количества компьютеров и серверов работающих в системе).
История успеха
Для себя я выбрал Motion.
Motion представляет из себя простую консольную программку со встроенным веб-сервером выводящим по указанному порту в формате MJPEG видеопоток с устройства video4linux(/dev/video*). Кроме того motion имеет встроенную систему регистрации движений в поле зрения камеры. Т.е. на диск пишется не все видео в режиме 24/7, а только тогда когда камера «видит», что что-то происходит, что существенно экономит место на диске и увеличивает максимальное время записи полезной информации на диск(В прочем, если нужно, то можно включить и постоянную запись).
Настройка
Настройка motion происходит через конфигурационный файл который по умолчанию расположен здесь:
/etc/motion/motion.conf
Про все пункты в этом файле вы можете прочитать в комманде man motion или же найти в гугле(благо в интернете информации по этому пакету достаточно), но пару пунктов из этого файлика я бы хотел выделить.
control_port 8080
control_localhost off
control_html_output on
control_authentication user:password
В этих четырех строках описан способ доступа к Web GUI настройки motion. В первой строке указан порт по которому нужно будет постучаться чтобы попасть в GUI, во второй строке разрешается/запрещается доступ к админке с адресов отличных от localhost’a(127.0.0.1), ну и в четвертой параметры авторизации(логин: пароль) для доступа к админке.
В админке есть все пункты настройки motion(даже те которые не прописаны в конфигурационном файле – стоят значения по умолчанию), с их кратким описанием.Кроме того конфигурационные файлы очень удобно разбивать на «модули». Т.е. Основные настройки для всей системе хранить в файле /etc/motion/motion.conf, а настройки для каждой камеры хранить в отдельном файле, который потом можно будет подключить к основному файлу командой threadВот так у меня выглядит конфигурационный файл для системы с четыремя камерами:
/etc/motion/motion.conf:
framerate 15
ffmpeg_cap_new on
ffmpeg_cap_motion off
ffmpeg_timelapse 0
ffmpeg_timelapse_mode daily
ffmpeg_bps 400000
ffmpeg_variable_bitrate 0
ffmpeg_video_codec ffv1 #Вот тут мы выбираем кодек которым мы будем сохранять видео
ffmpeg_deinterlace off
max_mpeg_time 600
text_right %Y-%m-%d\n%T
text_changes off
text_event %Y%m%d%H%M%S
text_double off
snapshot_filename %v-%Y%m%d%H%M%S-snapshot
jpeg_filename %v-%Y%m%d%H%M%S-%q
movie_filename %Y.%m.%d/%H:%M:%S
timelapse_filename %Y%m%d-timelapse
output_normal off
webcam_quality 50
webcam_motion off
webcam_maxrate 50
webcam_localhost off
webcam_limit 0
control_port 8080
control_localhost off
control_html_output on
control_authentication user:password
quiet on
thread /etc/motion/thread1.conf
thread /etc/motion/thread2.conf
thread /etc/motion/thread3.conf
thread /etc/motion/thread4.conf
Жирным выделил 4 файла настроек для каждой камеры. Вот один из них:
/etc/motion/thread1.conf:#Выбираем видеосутройство(Карта видеозахвата)videodevice /dev/video0#Выбираем номер каналаinput 1#Выбираем normid( PAL-DK, SECAM, etc. в зависимости от вашей камеры )norm 3#Вот тут самое интересное – порт на который будет транслироваться видеопоток в формате mjpegwebcam_port 8081#Текст который будет выводиться в левом нижнем углу картинки(Сюда можно название камеры написать)text_left = «Camera Color»#Директория куда будет сохраняться записанный видеоматериалtarget_dir /opt/lampp/htdocs/bigbrother/Camera 1/
Интерфейс
Ну систему мы настроили и запустили. Камеры регистрируют любое движение и записывают все происходящее в специально подготовленную директорию. Остался один маленький вопрос. Куда смотреть чтобы в режиме реального времени следить за происходящим то? Помните строчку в конфигах webcam_port 8081? Вот если в адресной строке браузера зайти по адресу localhost:8081, то мы и увидим картинку с камеры в режиме реалтайм. Как видите ни о каком интерфейсе разговора нет. Можно конечно оставить все как есть. И для каждой камеры открывать отдельное окно браузера со своим портом. Но ведь гораздо приятней(да и удобней) видеть все в одном окне, как тут:
Тут то нам на помощь и придут базовые знания в html(а на HTML5, CSS3, JQuery, etc. можно нарисовать интерфейс который не будет уступать небраузерным клиентам). Делаем табличку втыкаем туда 4 тега , в качестве параметра src указываем localhost:8081, и любой бразуер будет показывать видеопоток в формате MJPEG.Да, такая система требует небольших познаний в html, но в итоге получается очень гибкой и легконастраиваемой. Вот код моего рабочего примера на 4 камеры(см. скрин выше):
<html>
<head>
<title>BigBrother</title>
<META content=»text/html; charset=utf-8″ http-equiv=Content-Type>
<style></style>
</head>
<body bgcolor=gray>
<center>
<a href=»bigbrother»>Перейти к архиву</a> | <a href=#>Справка</a> | <a href=#>О программе</a>
<table border=1 bordercolor=green width=80%>
<tr>
<td width=50%>
<img src=»http://192.168.10.56:8081» width=100%>
</td>
<td width=50%>
<img src=»http://192.168.10.56:8082» width=100%>
</td>
</tr>
<tr>
<td width=50%>
<img src=»http://192.168.10.56:8083» width=100%>
</td>
<td width=50%>
<img src=»http://192.168.10.56:8084» width=100%>
</td>
</tr>
</table>
</center>
</body>
</html>
Кроме того, если все камеры подключены к серверу, а наблюдение ведется с удаленного компьютера, не совсем удобно добираться к записанному видеоматериалу. Нужно либо идти к серверу с флешкой(что совсем неправильно), либо поднимать ftp-сервер с авторизацией, либо написать еще один небольшой скрипт на php который будет следить за появление новых роликов и отдавать их клиентам. Тут уже решать вам самим. Для себя я выбрал последний вариант, потому-что его можно безболезненно встроить в интерфейс, он прост в понимании для охранников и позволяет им не отрываясь от своего любимого дела(Наблюдением за нарушителями на охраняемой ими территории), не закрывая интерфейса программы скачивать с сервера файл за тот или иной период записи.
webhamster.ru
Видеонаблюдение Linux, а почему нет?
Вы наверное замечали, что сегодня на каждом углу стоят видеокамеры. За нами следят постоянно: на улице, в магазинах, административных зданиях и так далее. Так же многие частники поставили видеонаблюдение себе в дома и на дачи, чтобы ворам даже в голову мысль не пришла просто перелезть через забор.
И сегодня не проблема заказать здесь видео наблюдение для дачи или частного дома, но что мешает сделать видео наблюдение самому? Если у вас есть компьютер, видеокамера и Linux, а так же немного энтузиазма, то это вполне реально. Видеонаблюдение Linux поддерживает замечательно, так как есть специальный, и главное БЕСПЛАТНЫЙ софт. Об этом я и решил коротко написать.
Существует замечательная программа MOTION (хвалят её специалисты, кто занимается подобным), которую можно скачать в разных вариантах ТУТ. Я скачал файл для Ubuntu и решил его установить. Вот что получилось на выходе.
А получилось в начале то, что установка не началась, так как программе нужен пакет libavcodec1d, а в репозитории Ubuntu его почему то нет. Попробуем найти, проблема наверное в том, что проект этот перестал развиваться и последняя программа обновлена в 2010 году.
Нашёл я нужный пакет, но не все оказалось так просто, так как не хватало ещё 4 пакета, которые пришлось искать и скачивать. Если кому будет интересно, то вот АРХИВ с программой и со всеми нужными пакетами.
Запустил я программу через терминал и он мне выдал такую картину:
-MS-14Y1:~$ motion [0] could not open configfile /etc/motion/motion.conf: Permission denied [0] Not config file to process using default values [0] Motion 3.2.11 Started [0] ffmpeg LIBAVCODEC_BUILD 3352064 LIBAVFORMAT_BUILD 3344896 [1] Thread 1 started [1] cap.driver: "uvcvideo" [1] cap.card: "USB2.0 UVC 1.3M Webcam" [1] cap.bus_info: "usb-0000:00:1a.0-1.1" [1] cap.capabilities=0x04000001 [1] - VIDEO_CAPTURE [1] - STREAMING [1] Error selecting input 0 VIDIOC_S_INPUT: Device or resource busy [1] ioctl (VIDIOCGCAP): Invalid argument [1] Could not fetch initial image from camera [1] Motion continues using width and height from config file(s) [1] Resizing pre_capture buffer to 1 itemsТак, пишет в самом начале could not open configfile /etc/motion/motion.conf: Permission denied - значит не хватает прав доступа. Запускаю через SUDO:
[0] Processing thread 0 - config file /etc/motion/motion.conf [0] Unknown config option "sql_query" [0] Motion 3.2.11 Started [0] Motion going to daemon modeПроцесс запустился, но пишет, что не сконфигурирована база данных..... Нет друзья, пока хватит, я не буду в одной комнате своей квартиры ставить видеонаблюдение, и настраивать сервер не буду, если кому всё это полезно и нужно, то он прочитает мануалы по ссылкам на сайт и разберётся. Я лишь дал наводку, а напиво разбирайтесь сами....
P.S. Только сегодня, спустя несколько дней обнаружил, что программа работает и тихонько складывает снимки с камеры в мою домашнюю папку.
Вот так, оказывается всё проще, чем я думал, хотя настроек так думаю очень много, но их мы оставим профессионалам и тем, кому этот софт по настоящему нужен:)
Опубликовано 5 Дек 2013 12:56 © Просто Linux | Всё про Линукс, Android и Windows.
prostolinux.ru
Видеорегистрация + видеонаблюдение для дома в Linux
августа 11, 2010 | Автор: dimioНадумал и я побаловаться созданием простой и дешевой домашней системы видеонаблюдения и видеорегистрации (сподвигла меня на это статья из журнала «Хакер»). Естественно, что идея использовать веб-камеру и домашний компьютер в данном случае выглядит наиболее привлекательной.
Веб-камера для Linux
Свой выбор веб-камеры для Linux я остановил на Logitech Webcam C120 по ряду причин: во-первых, она отличается приемлемым качеством картинка (изображение с камер Genius аналогичного ценового диапазона меня не впечатлило совсем), во-вторых — камера работает по протоколу UVC, что означает её поддержку ядром Linux «из коробки» (штатно поддержка добавлена в ядро Linux с версии 2.6.26, также в Linux заработают веб-камеры, управляемые драйвером GSPCA) и в-третьих — эта веб-камера стоит всего 500 рублей и её мне не жалко разобрать с целью создания из неё ИК-камеры (камеры «ночного видения»).
Процесс создания системы домашнего видеонаблюдения по шагам
Подключаем камеру. В моём случае всё заводится самостоятельно (потому и выбрал данную камеру). Если камера подключена, а картинки нет — стоит проверить, добавлен ли текущий пользователь в группу 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 ~/.motionsudo 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/bktr0videodevice /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 camerasinput 8
- Разрешение видео, выдаваемое камерой — отредактировать в соответствии с характеристиками своей камеры# Image width (pixels). Valid range: Camera dependent, default: 352width 640# Image height (pixels). Valid range: Camera dependent, default: 288height 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 я хочу рассказать о том, как сделать из веб-камеры камеру «ночного видения». До встречи!
Рубрики: *NIX | Метки: .rc, linux, motion, видеонаблюдение, самодел | 21 комментарий »dimio.org