...
Выберите качество потока из выпадающего списка.
Информация | ||
---|---|---|
| ||
При способе публикации SRT-publish доступно создание не более 10 потоков. |
Нажмите на кнопку "СОЗДАТЬ РЕСУРС".
...
Выберите комфортный способ просмотра: просмотр созданных потоков по отдельности или все вместе.
Информация | ||
---|---|---|
| ||
Используйте фрейм "Код для встраивания" для размещения плеера на вашем ресурсе. |
Транскодирование $
Данная услуга предназначена для компаний, у которых нет возможности отдать нам поток со следующими характеристиками, необходимыми для интернет-вещания:
...
- указать исходный поток, который Вы будете публиковать;
- активировать услугу "Транскодирование потока";
- выбрать подходящий пакет транскодирования (параметры пакета можно увидеть, нажав на кнопку "Подробности");
- нажать кнопку "СОЗДАТЬ РЕСУРС" или "СОХРАНИТЬ".
Информация | ||
---|---|---|
| ||
Если Вы заказываете услугу транскодирования, то для ресурса указывается ТОЛЬКО ОДИН входной поток. |
Дополнительные настройки
Авторизация $
Локальная авторизация $
Описание логики работы:
Авторизация запросов пользователей выполняется исключительно в сети CDN, внешние ресурсы не используются. Решение о доступе к потоку принимается средствами нашей сети на основе критериев, обозначенных владельцем контента. В данном случае авторизация запросов пользователей выполняется исключительно в сети CDN, внешние ресурсы не используются. :
- Секретный ключ. Проверяется, что ссылка сформирована именно владельцем контента.
- URI запрашиваемого потока. Проверяется, что ссылка была сформирована именно для этого потока.
- IP-адрес пользователя (опционально). Проверяется, что поток запрошен именно с того IP-адреса, для которого была сформирована ссылка. Вы можете отключить проверку, выбрав опцию "Не учитывать IP адрес".
- Время окончания действия ссылки (опционально). Вы можете отключить проверку, выбрав опцию "Не ограничивать по времени".
В момент обращения пользователя к защищённому ресурсу потоку владельцу контента необходимо сформировать специальную ссылку.
Пример ссылки с локальной авторизацией:
http://example.a.trbcdn.net/md5(ycmYPfxHwqjnIM93o7JNOAHucJ8tJFjy97yuox2OycOQ,13879845171704067200)/path/to/stream/playlist.m3u8
Ссылка содержит авторизационный параметр md5Алгоритм генерации MD5-хэша (<md5_hash>
[,<expires>]) в пути:
<md5 hash>
— хэш MD5 в формате Base64 for URL, сгенерированный на основе URI запрошенного потока, времени жизни ссылки, секретного ключа, IP-адреса пользователя (опционально);<expires>
— время окончания действия ссылки в формате POSIX time (необязательный параметр).
При обращении к контенту с использованием сгенерированной ссылки, CDN вычисляет значение MD5 и сравнивает его с полученным. Если значение MD5 не совпадает, то пользователю возвращается ответ с кодом 403 Forbidden
(запрет на воспроизведение).
Если текущее время превышает значение expires
, то пользователю возвращается ответ с кодом 410 Gone
(целевой ресурс больше недоступен).
Пример алгоритма расчета MD5-хэша с использованием IP-адреса пользователя в качестве одного из входных параметров:
md5 = base64_url(md5(SECRET/path/to/stream1.2.3.4expiretime))
Пример алгоритма расчета MD5-хэша, если IP-адрес не учитывается:
md5 = base64_url(md5(SECRET/path/to/streamexpiretime))) для подписи ссылок:
- Формируем строку для подписи
<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
Внешняя авторизация $
Внешняя авторизации предназначена для возможности ограничения доступа к потоку с произвольной логикой, описанной в вашем скрипте авторизации.
...
Для изменения названия ресурса введите в поле новое название ресурса и нажмите кнопку "СОХРАНИТЬ".
Информация | ||
---|---|---|
| ||
Название ресурса генерируется автоматически на этапе создания. |
Ограничения раздачи $
Описание
...