Инструкция по настройке
Для публикации потока необходимо указать ссылку на поток с протоколом RTMP или RTSP. После этого нужно выбрать протоколы раздачи: RTMP, HLS, MPEG-DASH, MSS или Low Latency Streaming.
Транскодирование потока
Включение данной услуги позволит избежать проблему буфферизации у зрителей с медленным интернетом и улучшит пользовательский опыт. Данную услугу нужно активировать для создания мультибитрейт потоков.
На выходе Вы получаете несколько потоков разного качества, что позволяет пользователю выбрать подходящий для него вариант вручную или оставить адаптивный поток, который настраивается автоматически в зависимости от ширины канала пользователя.
При включении на Ваш выбор предоставляется несколько пакетов для преобразования потока в несколько качеств.
Дополнительные настройки
SSL-сертификат
Можно активировать услугу, если необходимо использовать SSL-сертификат. Вы можете использовать существующий сертификат или выпустить новый.
Плеер
Активируйте данную услугу, если Вам необходим многофункциональный HTML5 плеер.
Авторизация
Локальная авторизация
Описание логики работы:
Авторизация запросов пользователей выполняется исключительно в сети CDN, внешние ресурсы не используются. Решение о доступе к потоку принимается средствами нашей сети на основе критериев, обозначенных владельцем контента. В данном случае авторизация запросов пользователей выполняется исключительно в сети CDN, внешние ресурсы не используются. :
- Секретный ключ. Проверяется, что ссылка сформирована именно владельцем контента.
- URI запрашиваемого потока. Проверяется, что ссылка была сформирована именно для этого потока.
- IP-адрес пользователя (опционально). Проверяется, что поток запрошен именно с того IP-адреса, для которого была сформирована ссылка. Вы можете отключить проверку, выбрав опцию "Не учитывать IP адрес".
- Время окончания действия ссылки (опционально). Вы можете отключить проверку, выбрав опцию "Не ограничивать по времени".
В момент обращения пользователя к защищённому ресурсу потоку владельцу контента необходимо сформировать специальную ссылку.
Пример ссылки с локальной авторизацией:
http://example.a.trbcdn.net/md5(ycmYPfxHwqjnIM93o7JNOAHucJ8tJFjy97yuox2OycOQ,13879845171704067200)/path/to/stream/playlist.m3u8
Ссылка содержит авторизационный параметр md5(<md5 hash>[,<expires>])
в пути:
<md5 hash>
— хэш MD5 в формате Base64 for URL, сгенерированный на основе секретного ключа, URI запрошенного потока, времени жизни ссылки, секретного ключа, IP-адреса пользователя (опционально) и времени жизни ссылки (опционально);<expires>
— время окончания действия ссылки в формате POSIX time (необязательный параметр).
...
Если текущее время превышает значение expires
<expires>
, то пользователю возвращается ответ с кодом 410 Gone
(целевой ресурс больше недоступен).
Пример алгоритма расчета Алгоритм генерации MD5-хэша с использованием IP-адреса пользователя в качестве одного из входных параметров:
md5 = base64_url(md5(SECRET/path/to/stream1.2.3.4expiretime))
Пример алгоритма расчета MD5-хэша, если IP-адрес не учитывается:
md5 = (<md5_hash>
) для подписи ссылок:
- Формируем строку для подписи
<secret_word><path_to_stream><ip><expire_time>
. Элементы<ip>
и/или<expire_time>
не добавляются в строку для подписи, если в настройках локальной авторизации указаноНе учитывать IP адрес
и/илиНе ограничивать по времени
. - Генерируем
base64_url
черезbase64_url(md5(
...
<строка для подписи>))
.- Формируем подпись
<md5 hash>
, выполняя следующие замены вbase64_url
:- символ
=
заменяем на пустую строку''
- символ
+
заменяем на-
- символ
/
заменяем на_
- символ
- Формируем ссылку, используя полученную подпись
<md5 hash>
.
Информация | ||
---|---|---|
| ||
|
...
|
Обратите внимание
...
|
Пример генерации ссылки:
Есть следующие входные данные:
- секретный Секретный ключ:
zah5Mey9Quu8Ea1k
- IP-адрес пользователя:
1.2.3.4
- URI потока:
http://example.a.trbcdn.net/path/to/stream/playlist.m3u8
Вычисляем время действия ссылки. В приведённом примере – неделя с момента генерации.
$ php -r 'print time() + (7 * 24 * 60 * 60) . "\n";' 1387984517
Вычисляем хэш MD5 в формате Base64 for URL (путь указываем до плейлиста)- Время окончания действия ссылки:
1704067200
- секретный Секретный ключ:
Формируем строку для подписи
<secret_word><path_to_stream><ip><expire_time>
. Допустим, что мы учитываем и IP адрес, и время окончания действия ссылки.Тогда строка для подписи выглядит так:
zah5Mey9Quu8Ea1k/path/to/stream1.2.3.41704067200
Формируем подпись
<md5 hash>
:Пример на PHP:
$ php -r 'print str_replace("=", "",strtr(base64_encode(md5("zah5Mey9Quu8Ea1k/path/to/stream1.2.3.4138798451741704067200", TRUE)), "+/", "-_")) . "\n";' ycmYPfxHwqjnIM93o7JNOAHucJ8tJFjy97yuox2OycOQ
Итоговая ссылкаПример на Python:http:
#!/
/example.a.trbcdn.net/md5(ycmYPfxHwqjnIM93o7JNOA,1387984517)usr/bin/python3 import base64 import hashlib secret_word = 'zah5Mey9Quu8Ea1k' path = '/path/to/stream
/playlist.m3u8
Внимание!
Хэш MD5, вычисленный для HTTP, является базовым для данного ресурса. То есть, один и тот же хэш будет использован для ссылок на файл по протоколам HTTP, HTTPS несмотря на то, что URI для разных протоколов может немного отличаться.
При локальной авторизации контролируются следующие параметры:
- URI запрашиваемого потока. Проверяется, что ссылка была сформирована именно для этого потока.
- Секретный ключ. Проверяется, что ссылка сформирована именно владельцем контента.
- Время окончания действия ссылки (опционально). Вы можете отключить проверку, выбрав опцию "Не ограничивать по времени".
- IP-адрес пользователя (опционально). Проверяется, что поток запрошен именно с того IP-адреса, для которого была сформирована ссылка. Вы можете отключить проверку, выбрав опцию "Не учитывать IP адрес".
' ip_address = '1.2.3.4' expiration_timestamp = 1704067200 def generate_local_signature(secret_word, path, ip_address=None, timestamp=None): string_to_sign = f'{secret_word}{path}' if ip_address is not None: string_to_sign = f'{string_to_sign}{ip_address}' if timestamp is not None: string_to_sign = f'{string_to_sign}{timestamp}' hashed_string = hashlib.md5(string_to_sign.encode()).digest() decoded_base64_string = base64.b64encode(hashed_string).decode() local_signature = decoded_base64_string.replace('+', '-').replace('/', '_').replace('=', '') return local_signature print(generate_local_signature(secret_word, path, ip_address, expiration_timestamp)) # HucJ8tJFjy97yuox2OycOQ
Итоговая ссылка:
http://example.a.trbcdn.net/md5(HucJ8tJFjy97yuox2OycOQ,1704067200)/path/to/stream/playlist.m3u8
Внешняя авторизация
Внешняя авторизации предназначена для возможности ограничения доступа к потоку с произвольной логикой, описанной в вашем скрипте авторизации.
...