Motion linux usb camera

Установка Motion на Linux Ubuntu

В двух словах, сервер Motion позволяет записывать видео с IP-камер и предоставить доступ его просмотру посредством веб-интерфейса.

Установка и запуск

Motion в Ubuntu устанавливается из репозитория:

apt-get install motion

Создаем каталог и файл для логов motion:

Редактируем владельца для лог-файла:

chown motion:motion /var/log/motion/motion.log

В нем либо не должно быть параметра start_motion_daemon, либо он должен иметь значение:

Разрешаем автоматический запуск демона и перезапускаем сервис:

systemctl enable motion

systemctl restart motion

Можно проверить, что сервис работает корректно:

systemctl status motion

Настройка веб-интерфейса

По умолчанию, веб-интерфейс motion запускается на адресе localhost, что означает, что он будет доступен только с локального компьютера, что не совсем удобно для сервера.

Открываем конфигурационный файл:

Редактируем следующие строки:

webcontrol_localhost off
.
stream_localhost off

systemctl restart motion

Зайти на веб-интерфейс можно по адресу http://192.168.0.15:8080 для управления конфигурацией сервера, и http://192.168.0.15:8081 для подключения к трансляции в реальном времени (где 192.168.0.15 — адрес сервера с установленным motion).

Добавление камер

Добавим несколько камер. Для этого сначала открываем конфигурационный файл:

Добавляем строки с описаниями камер (для каждой камеры свой файл с настройками):

camera /etc/motion/camera1.conf
camera /etc/motion/camera2.conf

* до версии 3.4.1 вместо camera используется thread.

Теперь создаем данные файлы:

width 1920
height 1080
framerate 20
netcam_url http://192.168.0.15/video
netcam_userpass login:password
text_left CAMERA 1\nStreet 1
target_dir /video/motion/cam1
threshold 2000
lightswitch_percent 60
minimum_motion_frames 5
event_gap 10
locate_motion_mode on
locate_motion_style redbox
text_changes on

* до версии 4.1.1 вместо lightswitch_percent используется lightswitch.

. и для второй камеры:

width 1280
height 768
framerate 20
netcam_url rtsp://192.168.0.16:554/user=admin&password=&channel=1&stream=1.sdp
text_left CAMERA 2\nStreet 2
target_dir /video/motion/cam2
threshold 2000
lightswitch_percent 60
minimum_motion_frames 5
event_gap 10
locate_motion_mode on
locate_motion_style redbox
text_changes on
ffmpeg_timelapse 1

  • width — разрешение видео по горизонтали.
  • height — разрешение видео по вертикали.
  • framerate — число кадров в секунду.
  • netcam_url — ссылка на поток камеры.
  • netcam_userpass — логин и пароль для доступа к видеопотоку.
  • text_left — текст, который будет наложен слева снизу экрана.
  • target_dir — каталог для хранения записи с камеры.
  • threshold — число пикселей, которые должны измениться для срабатывания детектора движения.
  • lightswitch_percent — игнорировать резкие изменения интенсивности света.
  • minimum_motion_frames — количества кадров, в которых должно быть замечено движение, чтобы сработал детектор.
  • event_gap — количество секунд, по прошествии которых без движения отключать действие детектора.
  • locate_motion_mode — отрисовка рамки вокруг движущегося объекта.
  • locate_motion_style — стиль окна. Возможны значения box, redbox, cross, redcross.
  • text_changes — текст, отображающий измененные пиксели при движении.
  • ffmpeg_timelapse — как часто делать запись фрагмента в файл, если нет движения.

* первая камера настроена на запись при движении, видеопоток берем посредством http-запроса. Вторая — на запись при движении + посекундная постоянная запись, видеопоток забираем с использованием RTSP.

Источник

Видеонаблюдение в Linux с помощью Motion

Всем привет! В этой статье я хотел бы рассказать Вам о видеонаблюдении в Linux, а именно об инструменте Motion. С помощью программы Motion Вы сможете сделать за любой территорией, попадающей в поле зрения вышей веб-камеры, получать сообщения при обнаружении активности в заданной области, делать скрины, передавать изображение по сети и многое другое.

Видеонаблюдение в Linux

Программа Motion доступна для всех известных мне дистрибутивов Linux. Название говорит само за себя; кроме передачи движения, Motion может определять движение в определенной области кадра, отправлять сообщение при обнаружении активности в этой облас­ти, делать снимки, транслировать изображение по сети.

Motion ис­поведует в настройке Linux­way, конфигурационный файл хорошо комментирован, и если у вас нет проблем с английским (достаточ­но даже начального уровня), то понять смысл опций для вас не со­ставит труда.

Читайте также:  Voxengo span plus mac os

Установка Motion

Итак, перейдем к установке. Вводим команду:

Вам предложено будет вместе с основной утилитой установить несколько зависимостей. Соглашайтесь.

После скачивания и установки система попробует запустить Motion, но вы увидите сообщение:

То есть режим демона отключен. Включаем:

Меняем в конце единственной строки “no” на “yes”.

Но это еще не всё, теперь тот же режим надо включить в другом файле:

Меняем снова на “on” и запускаем Motion с конфигурационным файлом по умолчанию:

Проверьте, стартовал ли сервис:

Всё в порядке. Есть желание посмотреть на сырые данные, которые камера отправляет на микро-НТТР-сервер? Тогда наберите из сессии SSH:

8081 — порт HTTP-микросервера по умолчанию, изначально доступен только локально (только с localhost), это мы потом поправим. Будьте готовы, что в окно терминала повалятся кракозябры, и корректно закрыть терминал не получится.

Откройте другой терминал и снимите процесс, который вы обнаружили на предыдущем шаге:

Это было маленькое отступление, почти шутка. Зато вы теперь знаете, что с помощью telnet можно проверять активность сервисов на внешних портах localhost.

Настройка Motion «под себя»

Итак, где всё это веселое хозяйство, вы уже знаете: в /etc/motion/ motion.conf. Параметров много, но не очень. Файл являет собой шедевр конфигурационного файла — комментарии исчерпывающие, краткие и понятные.

Пройдемся по основным параметрам, чтобы интегрировать motion в наш ПД. Они будут не в порядке следования в файле, а в порядке важности (по моему мнению), и расположены в разных секциях:

Видеоустройство. Благо, в 99 % случаев это оно и есть, так что оставляем как есть.

Порт встроенного web-сервера. Можно менять по желанию, только не попадите на какой-нибудь существующий порт, занятый нужной службой (типа 22, 23, 80, 143 и подобных).

Доступ к камере только с localhost; если стоит “on”, камера не будет видна из сети.

Ширина картинки; для случая нашей камеры, максимум — 640.

Аналогично — высота, максимум — 480.

Количество кадров в секунду. Сами решайте; для нашего случая 2 в секунду самое то.

Можно повернуть изображение на заданное количество градусов (если камера прикреплена подуглом).# Threshold for number of changed pixels in an image that # triggers motion detection (default: 1500) threshold 1500

Этот параметр можно охарактеризовать как чувствительность при определении движения. Чем меньше значение, тем чувствительнее детектор.

Уровень шума. Позволяет игнорировать шум, создаваемый камерой. Установите оптимальное значение для своей камеры;меня устроило по умолчанию.

Позволяет следит только за определенной областью.

  • 1 — левый верхний угол,
  • 2 — верхняя средняя часть, …,
  • 5 — центр, …,
  • 9 — правый нижний угол.

Если область не определена, то слежение происходит по всему экрану.

Интервал в секундах, между которыми будут автоматически делаться снимки при наличии движения.

Позволяет рисовать рамку вокруг движущегося объекта. Интересная опция, попробуйте.

Рисуем ли текст на кадре; если да — то где и в каком формате.

Каталог, в котором мы будем складывать файлы видео и картинки, далее подробно расписываются имена для разных вариантов записи.

Далее для краткости опишу сразу всю секцию:

Выполняет определенное действие по наступлении определенных событий. В качестве value можно указать скрипт, например, оправляющий вам сообщение. Или включать музыку при обнаружении кого-либо. Всё ограничивается вашей фантазией и зависит от вашей цели.

Прочитайте внимательно — создатели предусмотрели практически всё, что нужно для эффективного наблюдения и регистрации событий.

Дальше идут параметры для связи с базами данных MySQL и PostgreSQL и настройки конфигов для нескольких камер. Не описываю: кто пользуется этими службами, настроит это сам.

Закрываем, перезапускаем motion: service motion restart

Заходим из локальной сети через браузер на IP-адрес сервера (на порт 8081, если вы его не изменяли) — например, так: http://192.168.0.30:8081/.

И наслаждаемся картинкой. Обратите внимание на нижний правый угол картинки — там стоят дата и время, ровно так, как мы задали в файле /etc/motion/motion.conf.

Читайте также:  Mov and windows media player

Но наслаждаемся недолго — вы же не будете открывать одно окно браузера для панели управления, а второе — для камеры? Сейчас очень модно стало слово «дашборд [dashboard]», означающее «приборная панель». Так вот, сведем на один дашборд кнопки и картинку.

Откройте файл, который выводит кнопки и индикаторы. У меня их несколько; обкатываю на index-test.php, потом переношу удавшиеся изменения в index.php.

В конец текста, после закрывающей скобки ?> (конец php) и перед тегом , добавьте строку:

Перезагрузите web-страницу — внизу, после кнопок, должна появиться область видеокамеры. Место width=“25%” делает окно видеопотока в 25 % от обшей ширины окна браузера; можете менять это число так, как вам нравится.

Ну что, всё? Можно праздновать победу? Ан нет. Давайте поразмышляем, что будет, если вы захотите «пробросить» порт web-сервера наружу, в Интернет. Сейчас я не про безопасность, а про то, что отобразится на дашборде. Ваш браузер будет искать адрес 192.168.0.30 в своей локальной сети. И точно не найдет открытый порт8081с видеопотоком.

Поэтому надо найти способ сделать так, чтобы браузер знал точный адрес хоста, на котором расположен ваш ПД. Положим, вы сделаете выход в Интернет через хост 111.222.333.444; тогда надо пробросить порт 8081 на этом хосте на внутренний IP-адрес 192.168.0.30 на тот же порт. И, убрав предыдущее изменение, добавить строку:

Успех? Попробуйте зайти из локальной сети. В случае удачи вы всё же увидите окно камеры. Но если вы используете динамический DNS, или неправильно прописали правила iptables на сервере, то вы не увидите ничего.

А нет ли способа узнать, на какой адрес мы стучимся? Пусть хост сообщит браузеру, какой его настоящий IP-адрес в данный момент. Тогда при доступе из локальной сети это будет 192.168.0.30, при доступе извне —тот IP-адрес, через который вы входите на свой дашборд.

Такой способ есть, для этого в php есть массив переменных $_SERVER. Он содержит информацию о заголовках, путях и местоположении скриптов. Записи в этом массиве создаются web-сервером. Для начала мы воспользуемся только одной переменной.

Определим функцию, которая будет извлекать полный путь к IP-адресу камеры и помещать ее в переменную. Внутри тегов ближе к началу страницы расположите строки:

А в том месте, где вам надо вывести область камеры (опять-таки внутри кода php), расположите две строки:

Нужно ли комментировать этот великолепный прием, позволяющий независимо от протокола (HTTP или HTTPS) иметь верный IP-адрес сервера? Думаю, что не стоит.

В результате вы должны получить нечто, похожее на это:

Видеонаблюдение в Linux

Моя собака тоже решила принять участие в написании статьи про видеонаблюдение в Linux, а заодно показать себя. Если честно, она просто пытается достать печенье.

Небольшое замечание: с этого момента учитывайте загрузку командного контроллера. Одновременные запись информации на медленную карту памяти и вещание в дашборд могут перегрузить процессор. Если это станет критичным, отключите запись на диск (что там писать?). Достаточно будет закомментировать строку:

в конфигурационном файле, и motion перестанет записывать, тем самым вполовину разгрузив процессор.

Ну что, теперь вполне можно показать первое приближение ПД кому-нибудь из домашних? Особенно если у вас наличествует смартфон с большим экраном, который можно использовать как пульт.

А в следующей статье про видеонаблюдение в Linux, вас снова ждет интересное продолжение, пока!

Источник

Создаем систему видеонаблюдения с помощью motion

В этой статье я хочу рассказать о настройке и использовании домашней системы слежения. Вы сможете сделать за любой территорией, попадающей в поле зрения вышей веб-камеры, отправлять себе сообщение при обнаружении активности в этой области, делать снимки, транслировать изображение по сети (можно прикрутить авторизацию для доступа видео с вашей веб-камеры и смотреть удаленно, если у вас есть статический ip) вообще что захотите — полный контроль и свобода выбора, что в общем характерно для ос gnu/linux и подобных (в дальнейшем речь пойдет именно о linux).

Читайте также:  Получить мультимедиа windows phone

Итак, представляю вашему вниманию замечательную утилиту — Motion, распространяющуюся по лицензии GPL. Скорее всего она уже есть в репозитории вашего дистрибутива, если нет (хотя я сомневаюсь в этом) — можно скачать deb, rpm или исходный код со страницы закачки на офф сайте. Я воспользовался средствами своего пакетного менеджера.

Можно запускать, но лучше сначала немного настроить ее под себя. Конфигурационный файл хранится в /etc/motion (лучше его скопировать в домашний каталог пользователя, указать путь к конфгу можно опцией -c). Отредактируем его vim /etc/motion/motion.conf

Этот файл хорошо откоменирован, и если у вас нет проблем с английским, то понять смысл опций для сам не составит труда.

Первая опция:
daemon (on/off) — будет ли motion запускаться в режиме демона(в фоне). Можно указать также опцию -n при запуске, тогда программа будет запущена в обычном режиме.

Далее:
videodevice /dev/video0 — указываем наше видео устройство. У меня это /dev/video0.

rotate (0,90,180,270) — повернуть изображение на заданное количество градусов(если камера прикреплена под углом)
width 320
height 240
— ширина и высота картинки в пикселях, соответственно

framerate (2-100) — количество кадров, захватываемых в секунду. Естественно, чем больше значение, тем больше потребление ресурсов компьютера. Выбирайте оптимальное значение.
minimum_frame_time 0 — вдогонку предыдущей опции — позволяет задать минимальное время между захватом двух кадров. Можно, например сделать захват кадра каждый 5 сек.

netcam_url value — используйте, если доступ к вашей камере осуществляется посредством сети. вместо value укажите путь до видеопотока. По умолчанию эта опция не используется
auto_brightness off
brightness 0
contrast 0
saturation 0
hue 0
— яркость, контраст, насыщенность и т.п.

Следующая важная для нас секция:
# Motion Detection Settings:
threshold 1500 — можно охарактеризовать как чувствительность для определения движения. Чем меньше значение, тем чувствительнее детектор.
noise_level 32 — уровень шума. Позволяет игнорировать шум, создаваемый камерой. Установите оптимально значение для вашей камеры.

area_detect (1-9) Позволяет следит только за определенной областью. 1 — левый верхний угол, 2 — верхняя средняя часть,… 5 — центр,… 9 — правый нижний угол.

mask_file value — Указываете путь до pgm файла с маской движения, которое не нужно фиксировать. Позволяет игнорировать качание ветвей деревьев и пр. Подробнее о файлах pgm здесь netpbm.sourceforge.net/doc/pgm.html

Далее идут еще несколько опций по определению движеия и опции кодирования изображения и видео. Их описание я опущу.

snapshot_interval N — Создает снимки каждые N секунд.
locate (on/off) — рисовать рамку вокруг движущегося объекта.

target_dir /usr/local/apache2/htdocs/cam — Папка, куда будут сохраняться изображения. Я установил это значение

snapshot_filename %v-%Y%m%d%H%M%S-snapshot
jpeg_filename %v-%Y%m%d%H%M%S-%q
movie_filename %v-%Y%m%d%H%M%S
— Настраиваем имена файлов.

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

Теперь можно запускать
motion [-c /путь/до/конфига] . Можно также добавить в список демонов вашей системы( rc-update add motion default для гетнты, для арча — добавить в DAEMONS=() в /etc/rc.conf, для других дистрибутивов точно не знаю, но это не сложнее)

Теперь при обнаружении активности в наблюдаемой области программа сохраняет снимки в указанную директорию и выполняет ваш скрипт (о написании скриптов по отправке сообщений есть множество статей, поэтому не стану освещать эту тему в этой статье).

И напоследок несколько скриншотов с примером использования. Как видно, при обнаружения движения motion в режиме non-daemon выводит строчки вида [1] File of type 1 saved to: /home/vladimir/motionshots/01-20110727140020-00.jpg

UPD: Благодарю за инвайт! Топик перенес в Linux для всех

Источник

Оцените статью