Создание и настройка трансляции

Трансляция — потоковая передача медиафайлов, которая за счет использования CDN-серверов позволяет передать информацию на дальние расстояния без задержек и потери качества.

Передача контента пользователям происходит так: мы принимаем от вас сигнал в максимальном качестве, разбиваем его на несколько потоков с более низким качеством, передаем на CDN-серверы и отдаем в виде ссылки на готовый видеопоток.

Создание трансляции

Создание трансляции происходит в разделе Медиаплатформа услуги CDN. Для создания трансляции:

  1. Укажите Название трансляции.
  2. Выберите Формат вещания. В данный момент поддерживаются следующие типы вещания:

    • обычное видео;
    • 360 градусов панорама;
    • 180 градусов панорама;
    • 3D 360 градусов Top-Bottom.
  3. Выберите Тип соединения:

    Pull — медиасервер забирает поток с вашего сервера и транскодирует его, меняя протокол вещания с RTMP/RTSP на HLS. Этот тип соединения оптимален, если:

    • у вас есть собственный медиасервер;
    • вам нужен транскодинг с RTMP/RTSP на HLS для раздачи через CDN.

    Для начала работы вставьте ссылку на поток с источника в поле URL.

    Push — с помощью энкодера отправляется поток на наш медиасервер. Этот тип вещания оптимален, если:

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

    Рекомендуется отправлять поток по протоколу RTMP/RTSP.

    Для энкодера понадобятся URL и ключ (для авторизации).

    Push URL вида rtmp://push.selcdn.net/in/59745?354f3c5a166b30ea79e1f17d260147e2 состоит из двух частей, где:

    • rtmp://push.selcdn.net/in/ — адрес сервера;
    • 59745?354f3c5a166b30ea79e1f17d260147e2 — ключ трансляции.

    После создания трансляции данная информация станет доступна в разделе Настройки.

    Для предотвращения прерывания трансляции в случае технических неполадок на основном потоке доступна резервная ссылка.

  4. CDN ресурс для трансляции создается автоматически, однако вы все так же можете привязать собственное доменное имя и сертификат. Подробнее можно прочитать в разделе Общие настройки CDN-ресурса.

В данный момент в Медиаплатформе можно создать не более трех трансляций.

Адаптивный битрейт

Адаптивный битрейт загружает трансляцию в браузере пользователя с оптимальной скоростью.

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

Медиаплатформа включает адаптивный битрейт для всех трансляций по умолчанию. Отправляйте нам поток в максимальном качестве, а мы разобьём его на несколько потоков с разным уровнем битрейта.

Поддерживаемы форматы

Наши серверы принимают потоки по протоколам:

  • RTMP
  • RTSP
  • MPEG-DASH
  • MPEG-TS

Поддерживаемые кодеки:

  • видео — H.264, H.265, MPEG2, MPEG4;
  • аудио — AAC, MP3, Icecast/Shoutcast.

Поток доставляется конечным пользователям только через CDN по протоколу HLS.

Защита от нежелательных загрузок

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

Ключ (token) добавляется в url live-трансляции после транскодирования. Ссылки на защищаемый контент выглядят следующим образом:

https://cdn.example.com/streams/10_14/WG99BSGMdZIwKy/1552551429/playlist.m3u8

Подробнее прочитать про настройки доступа по ключу можно в разделе Настройки безопасности CDN.

Генерация ключей

Для самостоятельной генерации защищенных ссылок можно воспользоваться php-скриптом:

 <?php 
$secret = 'W39Hd509SeReT41p'; 
$vhost = 'cdn.example.com'; 
$client_id = '10'; 
$stream_id = '14'; 
$expires = time() + 10000; 
$link = "{$client_id}_{$stream_id}_${secret}_${expires}_"; 
$md5 = md5($link, true); 
$md5 = base64_encode($md5); 
$md5 = strtr($md5, '+/', '-_'); 
$md5 = str_replace('=', '', $md5); 
$url = "https://{$vhost}/streams/{$client_id}_${stream_id}/${md5}/${expires}/playlist.m3u8"; 
echo $url; 
echo "\\n";

, где:

  • $secret — секретный ключ;
  • $vhost — доменное имя для CDN-ресурса;
  • $client_id и $stream_id — можно взять из экспортной ссылки после */streams/{client_id}_{stream_id};
  • $expires — время жизни ссылки (в секундах);
  • $link — строка для генерации токена с учетом необходимых параметров хеш-ключа;
  • $url — ссылка на файл.