Как настроить веб-камеру с детектором движения в Ubuntu

Фотография человека, который исправляет камеру безопасности.

Motion — полезный инструмент, который может превратить вашу обычную веб-камеру в камеру наблюдения. Он делает это, отслеживая сигнал от вашей веб-камеры и делая скриншоты и видео, когда обнаруживает движение. Здесь мы покажем вам, как установить Motion и настроить веб-камеру с детектором движения в Ubuntu Linux.

Содержание

  • Установка сервера Motion
  • Настройка Motion для вашей системы
  • Изменение места сохранения по умолчанию
  • Настройка параметров обнаружения в Motion
  • Включение веб-интерфейса Motion
  • Удаленное управление сохраненными захватами
  • Запуск и тестирование сервера Motion

Установка сервера Motion

Motion включен по умолчанию в официальном репозитории Ubuntu. Это означает, что вы можете установить эту программу через ваш менеджер пакетов apt:

sudo apt install motion v4l-utils

Примечание: Хотя в этой статье мы рассматриваем Ubuntu, Motion будет работать и для большинства дистрибутивов Linux.

Подтвердите, что ваш сервер Motion работает правильно, открыв справочное окно программы:

motion -h

Настройка Motion для вашей системы

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

cp/etc/motion/motion.conf ~/motion.conf.backup

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

sudonano/etc/motion/motion.conf

Одно из самых простых изменений, которые вы можете сделать для вашего сервера Motion, — это изменить качество его изображения и видео. По умолчанию сервер устанавливает разрешение на 640×480, что может быть слишком маленьким для современных веб-камер.

Чтобы изменить это, выполните следующую команду в новом сеансе терминала, чтобы проверить доступные разрешения для вашей камеры:

sudo v4l2-ctl -d/dev/video0 --list-formats-ext

Терминал, показывающий список доступных разрешений для веб-камеры.

Вернитесь к вашему конфигу Motion, прокрутите вниз до категории “Обработка изображений”, затем найдите переменные width и height.

Терминал, показывающий значения по умолчанию для разрешения веб-камеры Motion.

Укажите соответствующие значения для разрешения, которое вы хотите. В моем случае я хочу запустить Motion в 1280×720, поэтому я ввожу “1280” как ширину и “720” как высоту.

Терминал, показывающий обновленные значения более высокого разрешения для Motion.

Установите значение framerate на частоту кадров, с которой вы хотите записывать ваши видео. По умолчанию это значение установлено на “15”, но вы можете уменьшить его, чтобы сэкономить место на диске.

Терминал, выделяющий переменную framerate в файле конфигурации Motion.

Прокрутите вниз до категории “Вывод изображения”, затем установите значение переменной picture_output на “on”. Это позволит Motion захватывать как изображения, так и видео с вашей веб-камеры.

Терминал, показывающий переменную picture_output внутри файла конфигурации Motion.

Изменение места сохранения по умолчанию

Еще одно изменение, которое вы можете сделать для вашего сервера Motion, — это изменить место, где он сохраняет свои данные. Это может быть полезно, если вы хотите экспортировать ваши захваченные видео и изображения в смонтированную удаленную директорию или облачное хранилище, такое как Dropbox.

Для начала перейдите в директорию, в которой вы хотите сохранить ваши данные, или создайте ее:

sudomkdir/motion/data

Установите владельца вашей директории на “motion:adm”:

sudochown-R motion:adm /motion/data

Убедитесь, что весь путь к вашей директории доступен для чтения всеми пользователями:

sudochmod-R755/motion/data

Вернитесь к вашему конфигу Motion, найдите переменную target_dir, затем установите ее значение на полный путь к вашей директории.

Терминал, выделяющий пользовательскую директорию данных для Motion.

Настройка параметров обнаружения в Motion

Motion работает, сравнивая текущее видео с предыдущим. Если программа находит достаточную разницу между двумя изображениями, она классифицирует это как “движение” и записывает видео события.

В настоящее время Motion предполагает, что разница в 1500 пикселей достаточна для классификации как “движение”. Хотя это упрощает обнаружение движения для большинства веб-камер, для камер с более высоким разрешением это может быть слишком чувствительно.

Чтобы уменьшить это, перейдите в категорию “Обнаружение движения”, затем увеличьте значение переменной threshold. Я считаю, что 5500 пикселей достаточно, чтобы предотвратить запись Motion ненужных мелких движений с веб-камеры.

Терминал, показывающий настроенное значение порога для сервера Motion.

Вы также можете добавить переменную threshold_maximum, чтобы установить предел на разницу, которую Motion считает “движением”. Это полезно, если ваша веб-камера смотрит на загруженную область, и вы хотите, чтобы она работала только при меньшей активности.

Если вы не уверены в значениях threshold и threshold_maximum для вашей веб-камеры, вы можете позволить Motion настроить их за вас. Для этого добавьте переменную threshold_tune и установите ее значение на “on”.

Терминал, показывающий различные параметры порога пикселей для Motion.

Наконец, вы можете настроить Motion на запись моментов до и после обнаружения движения. Для этого перейдите к переменным pre_capture и post_capture и установите их значения на количество дополнительных кадров, которые вы хотите сохранить.

Терминал, показывающий дополнительные кадры при захвате изображений и видео в Motion.

Включение веб-интерфейса Motion

Сервер Motion поставляется с веб-интерфейсом, который позволяет вам удаленно контролировать вашу веб-камеру. Чтобы включить это, перейдите в раздел “Webcontrol” конфигурации, затем установите значение переменной webcontrol_localhost на “off”.

Прокрутите вниз до раздела “Прямой поток”, затем установите значение stream_localhost на “off”.

Терминал, показывающий два параметра, которые нужно отключить, чтобы разрешить удаленным системам доступ к веб-консоли Motion.

Примечание: Motion не имеет никаких проверок аутентификации для своего веб-интерфейса. Таким образом, любой, кто знает адрес вашего сервера Motion, может просматривать вашу веб-камеру и управлять службой.

Удаленное управление сохраненными захватами

Как я уже упоминал ранее, лучший способ — сохранить изображения в вашей папке Dropbox, чтобы вы могли получить к ним доступ в любом месте. Однако, если вы предпочитаете, чтобы изображения загружались на ваш собственный файловый сервер (через FTP), вы можете использовать команду wput для загрузки изображений:

sudo apt install wput

Откройте конфигурацию вашего сервера Motion, затем вставьте следующие строки кода в конец файла:

on_picture_save wput ftp://YOUR-USERNAME:YOUR-PASSWORD@YOUR-SERVER-ADDRESS %f  
on_movie_end wput ftp://YOUR-USERNAME:YOUR-PASSWORD@YOUR-SERVER-ADDRESS %f

Терминал, показывающий два скрипта для сохранения захваченных медиа на удаленном сервере.

Запуск и тестирование сервера Motion

Убедитесь, что вы сохранили файл конфигурации Motion, затем выполните следующую команду, чтобы запустить сервер:

sudo systemctl enable--now motion.service

Подтвердите, что сервер работает правильно, открыв веб-браузер и перейдя по IP-адресу вашего компьютера, добавив “8080”.

Скриншот, показывающий веб-консоль для Motion.

Это откроет веб-страницу, показывающую текущий видеопоток с вашей веб-камеры вместе с меню, содержащим дополнительные действия для вашего сервера. Например, вы можете нажать Action -> Snapshot, чтобы захватить неподвижное изображение с вашей веб-камеры.

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

Проверьте, обнаруживает ли Motion и записывает ли движение с вашей веб-камеры, пройдя объектом перед вашей камерой и проверив содержимое вашей директории target_dir.

Скриншот, показывающий, как Motion сохраняет свои захваченные медиа в пользовательской директории.

Также есть прямой поток, который вы можете открыть как в медиаплеере, так и в веб-браузере. Чтобы получить к нему доступ, перейдите по IP-адресу вашего компьютера, добавив “8081”.

Скриншот, показывающий выделенный видеопоток от Motion.

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

Кредит изображения: Bermix Studio через Unsplash. Все изменения и скриншоты сделаны Рамсесом Редом.