Всем привет! В этой статье я хотел бы рассказать Вам о видеонаблюдении в Linux, а именно об инструменте Motion. С помощью программы Motion Вы сможете сделать за любой территорией, попадающей в поле зрения вышей веб-камеры, получать сообщения при обнаружении активности в заданной области, делать скрины, передавать изображение по сети и многое другое.
Видеонаблюдение в Linux
Программа Motion доступна для всех известных мне дистрибутивов Linux. Название говорит само за себя; кроме передачи движения, Motion может определять движение в определенной области кадра, отправлять сообщение при обнаружении активности в этой области, делать снимки, транслировать изображение по сети.
Motion исповедует в настройке Linuxway, конфигурационный файл хорошо комментирован, и если у вас нет проблем с английским (достаточно даже начального уровня), то понять смысл опций для вас не составит труда.
Установка Motion
Итак, перейдем к установке. Вводим команду:
$ sudo apt-get install motion
Интерфейс Motion. Apple Motion: быстрый старт. Дмитрий Ларионов
Вам предложено будет вместе с основной утилитой установить несколько зависимостей. Соглашайтесь.
После скачивания и установки система попробует запустить Motion, но вы увидите сообщение:
[warn] Not starting motion daemon, disabled via /etc/default/ motion . (warning)
То есть режим демона отключен. Включаем:
Меняем в конце единственной строки “no” на “yes”.
Но это еще не всё, теперь тот же режим надо включить в другом файле:
# Start in daemon (background) mode and release terminal (default: off) daemon off
Меняем снова на “on” и запускаем Motion с конфигурационным файлом по умолчанию:
service motion start
Проверьте, стартовал ли сервис:
ps aux|grep motion
motion 19971 2.0 0.9 51316 8380 ? Sl 13:56 0:00 /usr/bin/motion
Всё в порядке. Есть желание посмотреть на сырые данные, которые камера отправляет на микро-НТТР-сервер? Тогда наберите из сессии SSH:
telnet localhost 8081
8081 — порт HTTP-микросервера по умолчанию, изначально доступен только локально (только с localhost), это мы потом поправим. Будьте готовы, что в окно терминала повалятся кракозябры, и корректно закрыть терминал не получится.
Откройте другой терминал и снимите процесс, который вы обнаружили на предыдущем шаге:
Это было маленькое отступление, почти шутка. Зато вы теперь знаете, что с помощью telnet можно проверять активность сервисов на внешних портах localhost.
Настройка Motion «под себя»
Итак, где всё это веселое хозяйство, вы уже знаете: в /etc/motion/ motion.conf. Параметров много, но не очень. Файл являет собой шедевр конфигурационного файла — комментарии исчерпывающие, краткие и понятные.
Пройдемся по основным параметрам, чтобы интегрировать motion в наш ПД. Они будут не в порядке следования в файле, а в порядке важности (по моему мнению), и расположены в разных секциях:
# Videodevice to be used for capturing (default /dev/video0)
After Effects и Моушн Дизайн — С чего начать? Обзор софта
# for FreeBSD default is /dev/bktr0
Видеоустройство. Благо, в 99 % случаев это оно и есть, так что оставляем как есть.
# The mini-http server listens to this port for requests (default: 0 =disabled)
Порт встроенного web-сервера. Можно менять по желанию, только не попадите на какой-нибудь существующий порт, занятый нужной службой (типа 22, 23, 80, 143 и подобных).
# Restrict webcam connections to localhost only (default: on)
Доступ к камере только с localhost; если стоит “on”, камера не будет видна из сети.
# Image width (pixels). Valid range: Camera dependent, default: 352
Ширина картинки; для случая нашей камеры, максимум — 640.
# Image height (pixels). Valid range: Camera dependent, default: 288
Аналогично — высота, максимум — 480.
# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
Количество кадров в секунду. Сами решайте; для нашего случая 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.
Можно повернуть изображение на заданное количество градусов (если камера прикреплена подуглом).# 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)
Позволяет следит только за определенной областью.
- 1 — левый верхний угол,
- 2 — верхняя средняя часть, …,
- 5 — центр, …,
- 9 — правый нижний угол.
Если область не определена, то слежение происходит по всему экрану.
# The quality (in percent) to be used by the jpeg compression (default: 75)
# 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.
Позволяет рисовать рамку вокруг движущегося объекта. Интересная опция, попробуйте.
# Draws the timestamp using same options as C function strftime(3)
# Default: %Y-%m-%dn%T = date in ISO format and time in 24 hour clock
# Text is placed in lower right corner
Рисуем ли текст на кадре; если да — то где и в каком формате.
# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
Каталог, в котором мы будем складывать файлы видео и картинки, далее подробно расписываются имена для разных вариантов записи.
Далее для краткости опишу сразу всю секцию:
# External Commands, Warnings and Logging:
Выполняет определенное действие по наступлении определенных событий. В качестве 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) и перед тегом , добавьте строку:
Перезагрузите 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-адресу камеры и помещать ее в переменную. Внутри тегов ближе к началу страницы расположите строки:
$url .= “:8081”; return $url;
А в том месте, где вам надо вывести область камеры (опять-таки внутри кода php), расположите две строки:
echo “”;
Нужно ли комментировать этот великолепный прием, позволяющий независимо от протокола (HTTP или HTTPS) иметь верный IP-адрес сервера? Думаю, что не стоит.
В результате вы должны получить нечто, похожее на это:
Источник: dzen.ru
Создаем систему видеонаблюдения с помощью motion
В этой статье я хочу рассказать о настройке и использовании домашней системы слежения. Вы сможете сделать за любой территорией, попадающей в поле зрения вышей веб-камеры, отправлять себе сообщение при обнаружении активности в этой области, делать снимки, транслировать изображение по сети (можно прикрутить авторизацию для доступа видео с вашей веб-камеры и смотреть удаленно, если у вас есть статический ip) вообще что захотите — полный контроль и свобода выбора, что в общем характерно для ос gnu/linux и подобных (в дальнейшем речь пойдет именно о 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
Далее идут еще несколько опций по определению движеия и опции кодирования изображения и видео. Их описание я опущу.
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 для всех
Источник: habr.com
What is Motion?
Motion is a behavior-driven motion graphics application used to create stunning imaging effects in real time for a wide variety of broadcast, video, and film projects.
Animate anything, your way
- Animate graphics, images, and video clips using any of more than 200 built-in motion, simulation, and camera-move behaviors, such as Spin, Throw, Orbit, Dolly, and more.
- Animate the traditional way, using keyframes to create precise timing effects.
- Animate individual parameters of graphics and images—such as position, scale, and opacity—to make your visuals oscillate, wriggle, sync to music, dance randomly, and more.
- Build sophisticated particle systems to unleash animated swarming effects in 2D or 3D space.
- Boost production value by choosing ready-to-use animated content from a library of more than 1,300 professionally designed graphics.
Set your text in motion
- Create polished text and then set it in motion to construct effects both simple (lower-third titles and credit rolls) and complex (animated sequences).
- Build and animate 3D text with realistic texture, lighting, and shading.
Blow minds, not budgets, with cinematic visual effects
- Build stunning visual effects and film looks using one or more of nearly 300 filters such as Glow, Strobe, Slit Scan, and Bleach Bypass.
- Create advanced compositing and color key effects (green screen and blue screen).
- Stabilize camera shake or create complex motion tracking effects such as match moving and corner-pinning.
- Retime footage to create high-quality slow-motion or fast-motion effects.
- Import clips recorded in Cinematic mode on iPhone, then create rack focus effects, switch focus between subjects, or modify depth of field.
Add depth and color to your production
- Orchestrate fluid 3D motion graphics for show intros, bumpers, commercials, or title sequences.
- Create advanced 3D compositions by adding and animating 3D objects or moving cameras in 3D scenes.
- Import and reorient 360° video, then apply effects and integrate titles or other graphics to create 360° Motion projects or 360° templates for Final Cut Pro for Mac .
- Automatically match the brightness of vibrant high dynamic range (HDR) media with standard dynamic range (SDR) elements in the same project, and quickly preview the project in different SDR and HDR color spaces.
Design next-level graphics effects
- Draw shapes, transparency masks, and gesture-based paint strokes to build advanced art compositions, then animate them using behaviors or keyframes. You can also rotoscope masks with keyframes to create traveling mattes.
- Build complex patterns of repeating elements using the powerful replicator tool, then animate the resulting collages in 2D or 3D space.
- Maximize your compositions with royalty-free content, such as vector artwork, animated design elements, image generators, and high-resolution images.
Integrate seamlessly with Final Cut Pro for Mac
- Create custom effect, transition, title, and generator templates for use in Final Cut Pro . You can also use Motion to customize the effects, transitions, titles, and generators that ship with Final Cut Pro.
- Create effect, transition, title, and generator templates that automatically conform to the color space of the Final Cut Pro project it’s applied to.
- Use rigging to map multiple parameters to a single control (for example, a slider that simultaneously manipulates size, color, and rotation of text) in Motion compositions or in templates exported to Final Cut Pro.
Export and share everywhere
- Export your masterpiece (or working copy) for use in other apps, publish it to video-sharing websites, or optimize it for viewing on Apple devices such as iPad, iPhone, and Apple TV .
Note: For a complete list of topics covered in this user guide, click the Table of Contents at the top of the page.
See alsoMotion workflowMotion interface
Download this guide: Apple Books | PDF
Источник: support.apple.com