Linux motion web камера

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

Обновлено

Обновлено: 16.08.2020 Опубликовано: 13.06.2019

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

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

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

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

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

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

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

* до версии 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.

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

Задаем владельца для созданных каталогов:

chown motion:motion /video/motion/cam

Источник

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

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

Читайте также:  Device classes in linux

Итак, представляю вашему вниманию замечательную утилиту — 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

Читайте также:  Linux x64 11gr2 database 1of2 zip

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

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

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

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 для всех

Источник

Web-Interface для Motion

После обновления видеосервера под debian, было принято решение переделать систему видеонаблюдения.
Motion было решено оставить, но возникла необходимость в более человеческом интерфейсе для просмотра архивных записей.
Очередные поиски в Интернет так и не дали никаких приемлемых результатов, в результате чего было принято решение о создании собственного продукта.
После небольших колебаний, выбор пал на Rails. Никакой религии, просто захотелось получше изучить этот фреймворк и замечательный язык программирования. В качестве СУБД используется PostgreSQL.
Результат работы под капотом.

Для начала чуть-чуть поподробнее про настройку motion.
В связи с тем, что хотелось, по-возможности, обойтись чистым HTML5, пришлось переустановить motion вручную, включив ему поддержку записи файлов в ogg. Благо авторы данной программы реализовали ее, за что им большое спасибо. Процесс сборки и установки описан хорошо на странице проекта, поэтому не буду его здесь расписывать, тем более, что под разные дистрибутивы он будет отличаться. Ссылка на домашнюю страницу www.lavrsen.dk/foswiki/bin/view/Motion/MotionGuideInstallation.
Заострю внимание только на настройке продукта.
Так как изначально motion был установлен из пакетов, то после переустановки не стал переносить папку с конфигурацией из /etc в /usr/local/etc.
И еще один пункт, сам motion запускается при помощи runit, поэтому в конфиге он отключен режим демона.
Расстановка сил следующая:
1. Конфиги motion лежат в /etc/motion.
2. Видео пишется на отдельный жесткий диск, смонтированный в директорию /video, в папки с именами камер.
3. В базу откладываются записи, в которых хранится информация о времени события, полному пути к файлу события, типом файла (в моем случае видео).
Структура таблицы
CREATE TABLE records
(
id serial NOT NULL,
thread integer,
filename character varying(255),
frame integer,
file_type integer,
event_timestamp timestamp without time zone,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL,
CONSTRAINT records_pkey PRIMARY KEY (id )
)
WITH (
OIDS=FALSE
);
ALTER TABLE records
OWNER TO motion;

Читайте также:  Half life native linux

CREATE INDEX thread
ON records
USING btree
(thread );
4. Для живого просмотра (в режиме реального времени) с камер использутеся интерфейс motion.

Основные изменения в конфиге следующие:
/etc/motion.conf
ffmpeg_video_codec ogg

webcontrol_port 8080
webcontrol_localhost off (в том случае, если web-interface будет запускаться на другом сервере)
webcontrol_html_output on
webcontrol_authentication login:pass

sql_query insert into records(thread, filename, frame, file_type, event_timestamp, created_at, updated_at) values(‘%t’, ‘%f’, ‘%q’, ‘%n’, ‘%Y-%m-%d %T’, NOW(), NOW())

И соответственно настройки для подключения к БД.

Далее подключаем камеры
thread /etc/motion/thread1.conf
thread /etc/motion/thread2.conf

thread /etc/motion/threadN.conf,
где N зависит от количества наших камер.

Основные пункты в threadX.conf, где X — любое число
stream_port PortNumber — данный порт надо будет писать в поле «Порт потокового вещания» при настройке камер в web-interface.
Это основные изменения при настройке motion. Как настроить сам motion в данной статье расписывать не буду.
По настройке Rails хорошо расписано в статье habrahabr.ru/post/140910. Также может возникнуть необходимость в установке NodeJS — github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

Теперь перейдем непосредственно к настройке интерфейса:
1. Клонировать при помощи git сайт.
Bitbucket:
git clone webdev4u@bitbucket.org/webdev4u/motion_web.git
Github:
git clone github.com/webdev4u/motion_web.git
2. Переименовать config/settings.local.yml в config/settings.yml и вписать туда адрес сервера, на котором запущен motion.
3. Переименовать config/database.yml.example в config/database.yml и вписать туда настройки для вашей базы.
4. Измените данные в db/seeds.rb для пользователя admin.
5. rake db:migrate
6. rake db:seed
7. Для проверки можно будет запустить rails s. Сервер будет слушать на 3000 порту. Если все нормально, можно работать.
8. И напоследок, настроить задание для крона по чистке базы. По умолчанию хранятся записи за 21 день, но можно изменить этот параметр в файле app/models/record.rb 12 строка, но лучше в lib/tasks/crontask.rake строку
Record.clean_old_records
заменить на
Record.clean_old_records Нужное_количество_дней.
После чего прогнать команду
whenever —update-crontab из под пользователя, от имени которого будет работать сайт.

Скриншот главной страницы:

Страница входа:

Живой просмотр:

Список камер:

Просмотр архива:

Добавление пользователя:

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

Источник

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