Вывод изображения с IP-камеры на сайт (часть 2. Использование motion)

Продолжение предыдущей статьи. Речь пойдет о том, как путем использования программы motion улучшить качество картинки и снизить нагрузку на сервер.

Итак. Motion умеет забирать изображения с IP-камер по HTTP в формате MJPEG и вещать их в сеть по тому же протоколу и в том же формате. Заглянув в документацию можно обнаружить много интересных возможностей. Однако, рассмотрим только минимально необходимый конфиг, который требуется для работы с несколькими камерами.

В каталоге /etc/motion/ (или ~/.motion/) находятся файлы конфигурации motion. У меня там 3 файла:

motion.conf

daemon on
process_id_file /var/run/motion/motion.pid
target_dir /var/webcam/
stream_localhost off
thread /etc/motion/cam1.conf
thread /etc/motion/cam2.conf

Первые две строки дают указание motion запускаться как демон. В процессе тестирования их можно убрать. target_dir указывает папку, в которую будут сохраняться снимки с камеры. stream_localhost разрешает просматривать камеры со всех интерфейсов (по умолчанию только localhost). И, наконец, thread позволяет подключить несколько конфигурационных файлов, по одному на каждую камеру.

cam1.conf

netcam_url http://CameraIP/getimage?camera=3&fmt=full
netcam_userpass login:password
stream_port 8081
stream_maxrate 10

Здесь netcam_url - адрес потока MJPEG (найти можно в документации к камере). netcam_userpass - логин и пароль к камере, разделенные двоеточием. stream_port - порт, на котором будет запущен web-сервер. Выбирается произвольно, но разработчики рекомендуют использовать 8081 для первой камеры, 8082 для второй и т. д. stream_maxrate - bitrate видео (количество кадров в секунду, которое наш сервер будет отдавать)

cam2.conf имеет подобную структуру, но со своими значениями.

На этом настройка закончена. Можно попробовать запустить сервер командой motion. Если все пройдет успешно, то по адресу http://ServerIP:port/stream.mjpeg будет доступен MJPEG поток с камеры. Как вывести MJPG поток на web-страницу я расписал в третьей части статьи.