В течение пары часов трансляция была восстановлена, добавлены необходимые мощности для более чем 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§=$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 Мб/с. Существует платная версия с неограниченной глубиной архива в оплаченный период, а также с индивидуальными настройками периодичности создания кадров, времени создания записи, битрейта видео.
Какой вариант организации трансляции вы бы выбрали? Может быть, у вас уже есть трансляция на сайте? О чем она и во сколько вам обходится?
Комментарии (12)
xsash
03.10.2017 07:43По Timelapse
— хотелось бы настраивать временной отрезок… Например, для стройки некого здания/дачи — 1 кадр в 10 минут будет нормально, а для других, более динамичных действий — уже слишком долго
— так же, задавать временной отрезок для создания Timelapse, например, исключить темное время сутокdevlineman Автор
03.10.2017 16:54Можно сделать все что захотите, обговаривается индивидуально, но только в платном варианте услуги.
vp7
03.10.2017 10:06У вас очень оригинальный способ установки ПО «Линия» на Linux системы — скачиваем некий файл и запускаем его из под рута.
Если эта выделенная только для вашего ПО виртуалка, то вариант пусть и спорный, но с некоторой натяжкой допустимый, иначе… ну вы сами понимаете :)
Сделайте установщик через .rpm / .deb пакеты или версию с поставкой в docker контейнере.
И вам меньше головной боли с ошибками установки и клиентам поддерживать такое решение будет значительно проще.devlineman Автор
03.10.2017 16:47Весь мир пользуется коммерческим софтом без исходников под админом или рутом, комбинируя установку на одном сервере, это конечно вопрос больше дискуссионный. Наша компания и ПО Линия на рынке более 13 лет и нам экономически не целесообразно портить имидж продукта каким-то бэкдором или другим не желательным воздействием на систему где ставится Линия.
Для пользователей осваивающих Linux платформу, предлагаем скачать исполняемый файл и произвести его установку наиболее легким способом. Вы можете скачать инсталлятор и в ручную распаковать его архиватором tar в корень системы.
Stronix
03.10.2017 10:49Я так понимаю, для перекодирования используется ffmpeg, как насчёт соблюдения GPL?
devlineman Автор
03.10.2017 16:47Трансляция на сайт при использовании наших серверов ретрансляции (Линия Облако + RTSP.me) осуществляется при использовании не модифицированного ffmpeg с официального репозитория без нарушения GPL лицензирования.
Phil_itch
03.10.2017 11:38Немножко гиковости, все-таки гиктаймс https://geektimes.ru/post/285342/
devlineman Автор
03.10.2017 16:51Хорошая статья, дополняющая техническими подробностями данную тему.
Стоит отметить, что человеку пришлось изобретать «велосипед», «копия» которого не у всех «поехала» по разным «дорогам» =)
Мы предлагаем готовый сервис трансляции сделанный на основе HTML5 и оптимизированный для трансляции под все популярные браузеры и мобильные клиенты. Всем гикам уже имеющим свои реализации можем рекомендовать сравнить как это сделали мы, а тем кто не готов делать свою реализацию предлагаем удобный\быстро реализуемый\бесплатный механизм.
Paradoxalniy
03.10.2017 12:42Благодарю, весьма полезно. Также заценил ваш сервис и теперь могу точно быть уверенным, что если возникнет желание транслировать свой участок с фруктовым садом и двумя большими огородами — обязательно воспользуюсь вашей услугой!
devlineman Автор
03.10.2017 16:40Спасибо большое за доверие! Надеемся, что наш сервис вас полностью устроит.
DEM_dwg
А задержка какая?
devlineman Автор
Задержка может быть от 2 секунд в зависимости от качества и возможностей канала связи. Сетевым клиентам сервер отдает без задержки.