surv

WebRTC онлайн трансляция с IP камер и систем видеонаблюдения с использованием WebRTC & Broadcasting Server

IP камеры, видеорегистраторы, системы видеонаблюдения и другие схожие устройства широко используются для автономной видеосъемки, когда видео просто пишется на сервер или сам видеорегистратор. Или для оперативного наблюдения с передачей видео сигнала на мониторы наблюдателей. IP камеры к тому же используются для публичной трансляции и могут быть расположены, где угодно, включая спортивные сооружения, административные здания, зоопарки, частные территории, и т.д.

Основное отличие IP камеры от обычной веб-камеры, которая просто подключается к компьютеру в том, что современная IP камера сама является мини-компьютером с собственным процессором и поддержкой стэка сетевых протоколов. И способна отправлять видео и аудио прямо в сеть без необходимости подключения к компьютеру или ноутбуку. IP камеры, как правило, имеют собственный IP адрес, который они получают по DHCP или имеется возможность прописать сетевой адрес напрямую в настройках через web-интерфейс. Таким образом, IP камера является таким же полноценным сетевым устройством, как например ноутбук или смартфон с поддержкой wi-fi, который может подключиться к вашему маршрутизатору.

Хотя IP камера и является устройством, способным раздавать поток нескольким пользователям, на многих зрителей ее мощностей не хватит. В случае, если IP камера располагается где-то в локальной сети и вещает наружу, зрители скорее всего столкнутся с нехваткой канала, а потом уже с нехваткой ресурсов камеры и лагами.

Решением данной проблемы является ввод сервера-ретранслятора в сети Интернет, который забирает с камеры ровно один поток и раздает его неограниченному количеству пользователей.
Ресурсы сервера, расположенного в дата-центре и каналы связи, несравнимы с такими возможностями веб-камеры и это позволяет транслировать поток на широкую аудиторию.

В данном обзоре мы приведем результаты работы Flashphoner WebRTC Media & Broadcasting Server по ретрансляции видео потока с вебкамеры Dlink 2103.

 

 

 

Почему WebRTC?

WebRTC — это трендовая технология потокового видео, которая работает в браузере пользователя без установки дополнительного ПО и использует видео кодек VP8, оптимизированный для использования в сети Интернет. Сегодня каждый Android Chrome браузер поддерживает эту технологию и тем самым мы получаем миллионы устройств, готовых к просмотру трансляции без установки какого-либо дополнительного ПО или специальных конфигураций.

Камера для этого обзора была подобрана самая простая из тех, что поддерживали протокол RTSP и кодеки H.264 и G.711 для совместимости с WebRTC Media & Broadcasting Server.

 

f2

 

Установка

Первым делом мы установили камеру. Для этого нам не пришлось делать каких-то сложных телодвижений. Подключили питание и соединили с маршрутизатором стандартным патчкордом RJ45(интернет провод) метровой длины, который был в комплекте.
Загорелась зеленая лампочка.

Камера самостоятельно взяла IP адрес по DHCP и в web интерфейсе роутера и мы увидели Dlink 2103 IP 192.168.1.35.

Теперь нам удалось зайти в веб интерфейс с правами администратора. Пароль отсутствует.
http://192.168.1.35

 

dlink-admin-800

 

Стало видно, что камера работает и исправно отображает видео в административном интерфейсе. И звук, кстати, тоже передается правильно.

Заходим в настройки Setup — Network и отключаем Authentication поставив его в Disabled. Тем самым мы убираем запрос пароля при попытке доступа к камере. RTSP порт, как видно из настроек, 554 — это порт, используемый в RTSP по умолчанию.

live1.sdp и live2.sdp — это профили — предопределенные конфигурации потоков, которые будут определять формат передаваемого видео. Мы используем стандартный профиль live1.sdp, т.к. он удовлетворяет нашим требованиям H.264 + G.711, 25 кадров в секунду. При необходимости можно его подредактировать.

 

RTSP-settings

 

Теперь проведем простой тест нашей камеры и заберем ее видео поток при помощи VLC плеера. Для этого в VLC открываем “Open URL” и вводим RTSP адрес камеры: rtsp://192.168.1.35/live1.sdp

 

vlc-playback

 

Поток снова отображается и на этот раз в стороннем VLC плеере через RTSP.
Это означает, что камера протестирована и готова к вещанию через сервер.

 

vlc-demo2

 

В локальной сети нет проблем забрать поток, если ваш VLC плеер находится в одной сети с камерой. В глобальной сети могут быть проблемы с NAT и брандмауэрами. Поэтому в случае каких-либо сетевых проблем, обратитесь к администратору сети или в техподдержку Интернет-провайдера.

В нашем случае провайдером выступал Ростелеком. Все заработало сразу, т.к. или IP адрес оказался статическим, или NAT более гуманным.

Внешний IP адрес был определен за пару минут, как 177.41.122.23, с помощью одного обращения к сайту myip.ru.

Теперь осталось сказать роутеру чтобы при обращении на RTSP порт 554 он отправлял входящие запросы на IP камеру по адресу 192.168.1.35. Что и было проделано в настройках маршрутизатора.

 

NAT

 

Для того, чтобы убедиться в том, что 554 порт действительно отвечает, мы выполнили команду telnet 177.41.122.23 554 и убедились, что кто-то уже отвечает на этом порту. Осталось запустить сервер и подключиться через него к камере.

В качестве сервера использовали виртуальный сервер на Centos 64 bit от digitalocean в дата-центре Европы.

 

f8

 

Результатом заказа сервера стал доступ к SSH консоли и мы вошли туда через SSH клиент Putty

Процесс установки медиа сервера подробно описан в документации к WebRTC Media & Broadcasting Server и сводится к выполнению нескольких команд из командной строки Linux. На всякий случай скопировали его сюда под спойлер.

1. Скачали установочный архив сервера:

$wget http://flashphoner.com/download-wcs5-server.tar.gz

2. Развернули:

$tar -xzf download-wcs5-server.tar.gz

3. Установили:

$cd FlashphonerWebCallServer

$./install.sh

В процессе установки ввели IP адрес сервера: XXX.XXX.XXX.XXX

4. Активировали лицензию:

$cd /usr/local/FlashphonerWebCallServer/bin

$./activation.sh

5. Запустили сервер:

$service webcallserver start

6. Проверили логи:

$tail - f /usr/local/FlashphonerWebCallServer/logs/flashphoner_manager.log

7. Убедились, что сервер стартовал и готов к работе:

$ps aux | grep Flashphoner

 

Тестирование

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

 

f9

 

Открываем страницу http://host:9091 Demo / Streaming Min в Chrome браузере, устанавливаем соединение и вводим rtsp-адрес rtsp://177.41.122.23/live1.sdp

177.41.122.23 — это внешний IP адрес камеры. Маршрутизатор будет перенаправлять RTSP запросы на 192.168.1.35 в соответствии с правилами трансляции сетевых адресов NAT на примере выше. Если у вас динамический IP, он может постоянно меняться, поэтому есть смысл получить бесплатный домен для динамических адресов, например с помощью сервиса no-ip.com. В этом случае адрес вашего потока будет выглядеть например так: rtsp://my-webrtc-rtsp.noip.me и будет постоянным.

Для того, чтобы началось воспроизведение потока, мы передаем как имя потока rtsp://177.41.122.23/live1.sdp — URL потока. WebRTC Media & Broadcasting Server запросит потоки с камеры, обработает их и отдаст браузеру на воспроизведение по WebRTC.

Больше пользователю никаких действий предпринимать не нужно. Подключение второго пользователя пройдет быстрее, т.к. соединение WebRTC сервера с IP камерой уже остановлено. Остается только создать WebRTC сессию и подключиться к уже существующему потоку.

processing

После открытия ссылки в браузере нужно немного подождать. Несколько секунд требуется для того, чтобы установить соединение с сервером по Websockets, создать WebRTC сессию и забрать поток.

scr 2014-06-19 21.30.37

Соединение установлено и зритель видит поток на экране, а так же уникальную ссылку, по которой другие Интернет-пользователи смогут увидеть этот же видео поток. Теперь пользователь может отправить ссылку кому-то другому, остановить воспроизведение потока или включить полноэкранный режим, пользуясь контролами в правом нижнем углу.

Стоит отметить достаточно низкую задержку. Пинг до дата-центра составляет около 100 миллисекунд и задержка не различима глазом. Можно предположить, что реальная задержка составляет те же 100 плюс минус столько же миллисекунд на время буферизации.

В итоге нам удалось наладить онлайн трансляцию между IP камерой и web-браузерами. Подключение дополнительных зрителей к потоку по ссылке с идентификатором потока не вызвало каких-либо проблем.

Сервер достаточно прост в установке и настройке и для его запуска не требуется каких-либо серьезных навыков. Разве что необходимы знания Linux на уровне продвинутого пользователя, умеющего выполнять команды из консоли через ssh и пользоваться текстовым редактором.

Качество трансляции оказалось вполне приемлемым и почти не отличается от потока полученного с помощью VLC.
На этом тестирование было успешно завершено.

 

Мы рекомендуем также ознакомиться с обзором о настройках и тестировании WebRTC & Broadcasting Server для проведения онлайн-трансляций и вебинаров между браузерами.

 

Видео тестирования RTSP-WebRTC и RTSP-Websocket плееров

 RTSP-WebRTC плеер для Chrome и Firefox

 

RTSP-Websocket плеер для iOS Safari

 

 

Статьи по теме

iOS Safari 11 теперь умеет WebRTC

Встраиваем WebRTC плеер для живых трансляций на сайт

7 способов транслировать RTSP на страницу

Браузерная WebRTC трансляция с RTSP IP-камеры с низкой задержкой

 

Возможности продукта

HTML5 RTSP плеер