Приложение Маяки Эстонии

Работа с камерой Raspberry Pi (часть 2) - Трансляция видео

25 Февраля

Есть несколько способов разной степени сложности организовать трансляцию видео с камеры Raspberry Pi. Всё зависит от того, где именно вам необходимо принимать транслируемое. Рассмотрим некоторые из вариантов, двигаясь от простого к более сложному.

VLC media player

Самый простой способ транслировать видео с камеры Raspberry Pi - установка проигрывателя VLC media player как на компьютере, так и на "малинке". Последнее делается следующей командой:

sudo apt-get install vlc -y

После этого необходимо запустить запись видео и его трансляцию. На примере ниже, видео размером 800 на 400 пикселей и частотой 24fps, будет транслироваться в формате h264 через порт номер 8160:

raspivid -o - -t 0 -hf -w 800 -h 400 -fps 24 |cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8160}' :demux=h264

На компьютере в VLC, в меню нужно выбрать "Открыть URL" и вписать http://192.168.0.9:8160 (замените 192.168.0.9 на реальный IP-адрес своего Raspberry Pi). Если установить VLC на Android-устройство, то этот способ тоже работает. Впрочем, для смартфонов есть и более удобный способ.

RaspiCam Remote

Этот более удобный способ - приложение RaspiCam Remote. Во-первых, оно не требует установки ничего дополнительного на Raspberry Pi (при использовании основных функций). Во-вторых, никаких манипуляций с запуском съёмки, как в предыдущем примере, тоже не требуется. Также приложение позволяет применять фильтры к картинке (если я правильно понял, на стороне Raspberry Pi) и сохранять снимки в галерею телефона. Для некоторых дополнительных функций нужно установить пару сторонних приложений на "малинку". В частности, для видео-трансляции с частотой 30fps потребуетcя всё тот же VLC, а для использования UBS-камеры - fswebcam. В любом случае, приложение простое и полезное, чем и понравилось. Вдобавок, это один из самых простых способов протестировать, работает ли камера.

Трансляция через веб-браузер

Собственно, подошли к самому главному. Какой-никакой браузер есть сейчас почти на любом устройстве, подключенном к интернету, трансляция в браузер - наиболее востребованный способ. Учитывая, что разные веб-браузеры до сих пор определяются с тем, какие видео-форматы они проигрывают, а какие нет, нам нет смысла вообще связываться с видео в прямом смысле. Дополнительным аргументом является отсутствие микрофона на камере "малинки" и, как следствие, звуковой дорожки как таковой. Поэтому наиболее разумным будет снимать фото, а не видео. Механизм простой: стандартной командой raspistill делаются с интервалом снимки и сохраняются в один файл, постоянно перезаписывая его. Также на установленном на Raspberry Pi веб-сервере запускается веб-страница с этой фотографией. Понятное дело, что фото надо обновлять с таким же интервалом, с каким ведётся съёмка (в идеале). Делать это можно, например, Javascript`ом:

setInterval(function(){
    $("#cam_image").attr("src", "output.jpg?time="+new Date().getTime());
},250);

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

Если вы далеки от веб-программирования, то есть отличное готовое решение -  RPi-Cam-Web-Interface. Это целый пакет, который устанавливает и настраивает всё необходимое (в том числе и сервер) и даёт на выходе веб-сайт на локальном сервере с изображением с камеры и огромным количеством настроек (вплоть до возможности перезагрузить или выключить Raspberry Pi). Кроме того, этот пакет использует программный датчик движения Motion и поддерживает устройства Pi-Pan и Pi-Light при наличии оных.

Перед установкой RPi-Cam-Web-Interface в обязательном порядке нужно обновить систему командой sudo rpi-update и перезагрузиться. После этого нужно скачать дистрибьютив:

git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.git
cd RPi_Cam_Web_Interface
chmod u+x RPi_Cam_Web_Interface_Installer.sh

RPi-Cam-Web-Interface использует Apache в качестве сервера и поэтому устанавливает его. Мне, например, он не нужен, так как я предпочитаю lighttpd, который у меня уже установлен. В таком случае я открываю файл сценария и удаляю из инструкций установку Apache.

sudo nano ./RPi_Cam_Web_Interface_Installer.sh

Там же можно изменить каталог, в который будет установлен сайт. Теперь можно запускать установку:

./RPi_Cam_Web_Interface_Installer.sh install

После её окончания следует перезагрузаться и теперь, если в браузере набрать IP своей "малинки", откроется страница с изображением с камеры и настройками. По умолчанию приложение запускается автоматически. Это можно отключить и запускать его вручную. Вот список команд:

  • ./RPi_Cam_Web_Interface_Installer.sh autostart_yes - включить автозагрузку
  • ./RPi_Cam_Web_Interface_Installer.sh autostart_no - отключить автозагрузку
  • ./RPi_Cam_Web_Interface_Installer.sh start - ручной запуск
  • ./RPi_Cam_Web_Interface_Installer.sh stop - ручное отключение
  • ./RPi_Cam_Web_Interface_Installer.sh remove - удаление RPi-Cam-Web-Interface и всех дополнительных приложений

Подробнее об этом пакете можно почитать здесь и здесь.

Знатно накомментили:

Алма
2022-10-15 07:39:49
Рахмет Мне пригодится для проекта
Владимир
2019-02-17 02:31:32
Очень даже оценили :) Данная информация помогает нам готовить научный проект в школу с ребенком. Главное, что эти две статьи представляют собой не простые перепечатки одного и того же с разных сайтов. Так что автору огромное спасибо и занос сайта в закладки :)
Анатолий
2019-01-26 12:57:03
Спасибо за ваш труд это нужное дело и жаль что не кто не оценил, но мне пригодилось прочитав вашу статью. С уважением Анатолий.

Оставить комментарий

Цитировать
в комментарии