Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Выберите качество потока из выпадающего списка.

Информация
titleВажно

При способе публикации SRT-publish доступно создание не более 10 потоков.


Нажмите на кнопку "СОЗДАТЬ РЕСУРС".

...

Выберите комфортный способ просмотра: просмотр созданных потоков по отдельности или все вместе.

Информация
titleОбратите внимание

Используйте фрейм "Код для встраивания" для размещения плеера на вашем ресурсе.


Транскодирование $

Данная услуга предназначена для компаний, у которых нет возможности отдать нам поток со следующими характеристиками, необходимыми для интернет-вещания:

...

  • указать исходный поток, который Вы будете публиковать;
  • активировать услугу "Транскодирование потока";
  • выбрать подходящий пакет транскодирования (параметры пакета можно увидеть, нажав на кнопку "Подробности");
  • нажать кнопку "СОЗДАТЬ РЕСУРС" или "СОХРАНИТЬ".

Информация
titleОбратите внимание

Если Вы заказываете услугу транскодирования, то для ресурса указывается ТОЛЬКО ОДИН входной поток.


Дополнительные настройки

Авторизация $
Локальная авторизация $

Описание логики работы:

Авторизация запросов пользователей выполняется исключительно в сети CDN, внешние ресурсы не используются. Решение о доступе к потоку принимается средствами нашей сети на основе критериев, обозначенных владельцем контента. В данном случае авторизация запросов пользователей выполняется исключительно в сети CDN, внешние ресурсы не используются. :

  1. Секретный ключ. Проверяется, что ссылка сформирована именно владельцем контента.
  2. URI запрашиваемого потока. Проверяется, что ссылка была сформирована именно для этого потока.
  3. IP-адрес пользователя (опционально). Проверяется, что поток запрошен именно с того IP-адреса, для которого была сформирована ссылка. Вы можете отключить проверку, выбрав опцию "Не учитывать IP адрес".
  4. Время окончания действия ссылки (опционально). Вы можете отключить проверку, выбрав опцию "Не ограничивать по времени".

В момент обращения пользователя к защищённому ресурсу потоку владельцу контента необходимо сформировать специальную ссылку.

Пример ссылки с локальной авторизацией:

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>.
Информация
titleОбратите внимание
  1. Доменная часть URI при вычислении хэша не используется

...

  1. Можно подписывать часть пути (например, для /path/to/stream можно подписать сам поток, /path/to, /path)
  2. При генерации MD5 в URL не должно быть символов в формате urlencode, а должны быть исходные символы: кириллица, пробелы, проценты и т.д. Запрашивать с этим хешом необходимо кодированный вариант URL.

Обратите внимание

...

  1. Хэш MD5, вычисленный для HTTP, является базовым для данного потока, то есть один и тот же хэш будет использован для ссылок на поток по протоколам HTTP и HTTPS, несмотря на то что URI для разных протоколов может немного отличаться.


Пример генерации ссылки:

  1. Есть следующие входные данные:

    • секретный Секретный ключ: 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
  2. Формируем строку для подписи <secret_word><path_to_stream><ip><expire_time>. Допустим, что мы учитываем и IP адрес, и время окончания действия ссылки.

    Тогда строка для подписи выглядит так: zah5Mey9Quu8Ea1k/path/to/stream1.2.3.41704067200

  3. Формируем подпись <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 для разных протоколов может немного отличаться.

При локальной авторизации контролируются следующие параметры:

  1. URI запрашиваемого потока. Проверяется, что ссылка была сформирована именно для этого потока.
  2. Секретный ключ. Проверяется, что ссылка сформирована именно владельцем контента.
  3. Время окончания действия ссылки (опционально). Вы можете отключить проверку, выбрав опцию "Не ограничивать по времени".
  4. 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
    


  5. Итоговая ссылка:

    http://example.a.trbcdn.net/md5(HucJ8tJFjy97yuox2OycOQ,1704067200)/path/to/stream/playlist.m3u8

Внешняя авторизация $

Внешняя авторизации предназначена для возможности ограничения доступа к потоку с произвольной логикой, описанной в вашем скрипте авторизации.

...

Для изменения названия ресурса введите в поле новое название ресурса и нажмите кнопку "СОХРАНИТЬ".


Информация
titleОбратите внимание

Название ресурса генерируется автоматически на этапе создания.


Ограничения раздачи $
Описание

...