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

Остальным можно воспользоваться бесплатной демоверсией программы для видеонаблюдения «Линия» для 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 Мб/с. Существует платная версия с неограниченной глубиной архива в оплаченный период, а также с индивидуальными настройками периодичности создания кадров, времени создания записи, битрейта видео.

Задержка видео может быть от 2 секунд в зависимости от качества и возможностей канала связи. Сетевым клиентам сервер отдает без задержки.

Трансляция на сайт при использовании серверов ретрансляции (Линия Облако + RTSP.me) осуществляется при использовании не модифицированного ffmpeg с официального репозитория без нарушения GPL лицензирования.