Pull to refresh

Как настроить трансляцию на сайт с любой камеры видеонаблюдения

Reading time4 min
Views21K
В начале 2016 года сервис для организации трансляций «Линия» подвергся неожиданному испытанию на прочность. А все благодаря событиям в сафари-парке, где в одном вольере жили самые распиаренные в стране тигр и козел. 31 декабря 2015 года в эфире национального телевидения было объявлено о начале прямой трансляции, которая была организована с помощью нашего сервиса. Практически сразу после этого не выдержал нагрузки как сайт парка, так и наши серверы.

В течение пары часов трансляция была восстановлена, добавлены необходимые мощности для более чем 2 500 000 подключений к IP-камерам. За следующую неделю в сервис были добавлены серверы в Голландии и США, разработана функция защиты трансляции. В общем, мы сделали все, чтобы наш сервис выдерживал любой объем желающих посмотреть популярную трансляцию. В этом конкретном примере аудитория составила более 10 млн человек.



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

Помимо Амура и Тимура, на нашей практике есть множество интересных примеров. Это и сеть цветочных магазинов, и стационар в клинике для домашних животных, и спортивные события. В общем, для бизнеса это просто кладезь идей, которые мы рассмотрели подробно и с примерами в этой статье.

От идеи к реализации. Как все организовать максимально выгодно

Потоки камер «из коробки» не предназначены для трансляции на сайте, поэтому лучше использовать программное обеспечение для видеонаблюдения. У тех, кто ранее установил такую систему, лишних затрат будет по минимуму или вообще не будет.

Остальным можно воспользоваться бесплатной демоверсией программы для видеонаблюдения «Линия» для Linux. Для трансляции понадобится только камера, с которой мы будем забирать поток и видеосервер на Linux.

Причем физический сервер – совсем не обязательный элемент. Можно установить «Линию» на VPS. Выбрать подходящий виртуальный сервер поможет множество обзоров как на Geektimes и Habrahabr, так и в других источниках.

Настройка трансляции возможна с помощью клиента «Линия» для Windows. Даже в демоверсию программного обеспечения мы заложили много полезных фишек, в том числе возможность оповещения при пропаже сигнала с камеры.

Размещение трансляции на сайте

После установки и проверки всех компонентов системы можно размещать трансляцию на вашем сайте. Создать собственный дизайн плеера можно, используя возможности html5 video + css.

API cистемы видеонаблюдения «Линия» позволяет получить как текущий кадр, так и H.264 поток (hls, flv).

Но идеального решения для всех платформ не существует. Так, Internet Explorer может проигрывать только flv, Chrome в последнее время активно блокирует flash, в iOS не работает hls.js.

Решить это можно, написав обработчик на JavaScript или PHP, или использовать наше готовое решение — a.devline.ru/html5.



Безопасность превыше всего

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

Тут на помощь приходит nginx, прописываем пару строк в конфиге, и сервер будет давать доступ только по ссылке следующего вида:

http://demo.devline.ru:3333/O0deKdmC0j2xLqRqM490Mw/1504967831/streaming/0/sub.m3u8

location / {
    rewrite /([a-zA-Z0-9_\-]*)/([0-9]*)/([a-zA-Z0-9_\-]*)/([0-9]*)/(.*)\.(.*)$ /$3/$4/$5.$6?secl=$1&sect=$2&secq=$4&secm=$3;

    secure_link $arg_secl,$arg_sect;
    secure_link_md5 devline$arg_secq$arg_sect$remote_addr;
    if ($secure_link = "") { return 403; }
    if ($secure_link = "0") { return 404; }

    if ($arg_secm = "image") {rewrite /([a-zA-Z0-9_\-]*)/([0-9]*)/(.*)\.(.*)$ /cameras/$2/$1 break;}
    rewrite /([a-zA-Z0-9_\-]*)/([0-9]*)/(.*)\.(.*)$ /cameras/$2/$1/$3.$4 break;

      proxy_pass http://127.0.0.1:9786;
      proxy_set_header Authorization "Basic YWRtaW46";
}

Пример генерации ссылки на PHP:
$camid = "0";
$secret = 'devline';
$time_expires = time() + 90800; //life 24 hours
$key = str_replace("=", "", strtr(base64_encode(md5($secret.$camid.$time_expires.getenv("REMOTE_ADDR"), TRUE)), "+/", "-_"));
echo "/$key/$time_expires/streaming/$camid/sub.m3u8";
?>

Мы все сделали за вас

Все вышеперечисленное можно не делать самому, а просто воспользоваться нашим готовым решением — rtsp.me. Для работы сервиса не нужно быть пользователем программного обеспечения «Линия», достаточно иметь IP-камеру или DVR, поддерживающий RTSP-потоки. Оборудование должно быть со статическим IP-адресом и проброшенными портами.



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

А наличие небольшого логотипа внизу плеера позволяет предоставлять услуги бесплатно. Лого можно убрать, выбрав один из платных тарифов.

Также пользователям сервиса доступна функция Timelapse — видео из серии кадров с вашей камеры видеонаблюдения. Десять дней с циклической записью, каждый кадр делается раз в десять минут. Файл создается раз в 24 часа, битрейт выходного видео − 2 Мб/с. Существует платная версия с неограниченной глубиной архива в оплаченный период, а также с индивидуальными настройками периодичности создания кадров, времени создания записи, битрейта видео.

Какой вариант организации трансляции вы бы выбрали? Может быть, у вас уже есть трансляция на сайте? О чем она и во сколько вам обходится?
Tags:
Hubs:
Total votes 7: ↑5 and ↓2+3
Comments12

Articles

Information

Website
devline.ru
Registered
Founded
2004
Employees
Unknown
Location
Россия