CDN 2.1 запуск транскодера по API

mrinner

Member
Собираем тестовый вариант CDN: origin / edge / transcoder1, trasncoder2
Можно ли запустить транскодинг использую rest api call? т.е. сделать вызов /transcoder/startup на origin, и далее с edge забрать транскодированный поток?
Или в случае CDN 2.1 используются только описанные профили в файле cdn_profiles.yml ?
 

Max

Administrator
Staff member
Можно ли запустить транскодинг использую rest api call? т.е. сделать вызов /transcoder/startup на origin, и далее с edge забрать транскодированный поток?
Да, можно запустить транскодер по REST API. Документация здесь.
Результирующий поток попадёт в CDN.
Или в случае CDN 2.1 используются только описанные профили в файле cdn_profiles.yml ?
В случае высокой нагрузки нежелательно смешивать функцию Origin и Transcoder потому что видео транскодинг может критически влиять на ресурсы CPU.
Например транскодинг одного потока высокого разрешения может потреблять 2 физических ядра процессора. Чтобы изолировать транскодер, была введена Transcoding Node в CDN. Но можно обойтись и без нее, возложив транскодинг на Origin или даже на Edge через REST API.
 

mrinner

Member
Т.е. через rest api транскодинг будет запускаться именно на той машине, на которую сделан вызов (будь она origin или edge)? т.е. транскод не уйдет на машину с cdn_role=transcoder?
Хотелось бы для транскодинга выделить отдельные машины, этим и нравится идея CDN 2.1.
Идея такова:
1. Входит rtmp / webrtc
2. по REST HOOK смотрим что пришло (resolution/fps/bitrate..., возможно тем же ffprobe для rtmp)
3. создаем подходящий профиль для транскодинга через REST API (вот тут не понятно где, на origin/edge)
4. отдаем клиенту правильный stream name (по профилю)
5. клиент делает pull (hls) и запускается транскодинг на выделенной машине с cdn_role=transcoder
В общих чертах описал. Такое возможно?

Еще разъясните пожалуйста по hls, когда несколько edge серверов и смотрим один и тот же stream name с разых edge - нарезка HLS на каждом сервере осуществляется или режется на 1ом и далее проксируется с cache?
 

Max

Administrator
Staff member
Т.е. через rest api транскодинг будет запускаться именно на той машине, на которую сделан вызов (будь она origin или edge)? т.е. транскод не уйдет на машину с cdn_role=transcoder?
Да, транскодинг через API запустится именно на той машине, на которой вызывали REST-запрос.
Для транскодинга на выделенной машине с cdn_role=transcoder следует использовать профили, указанные в cdn_profiles.yml на edge, - делать pull по имени '<stream name><подходящий профиль из cdn_profiles.yml>' (запрос для создания транскодера в этом случае не нужен).

hls, когда несколько edge серверов и смотрим один и тот же stream name с разых edge
Нарезка HLS будет осуществляться на каждом edge-сервере.
Кэширующих HLS серверов в CDN не предусмотрено. Можно для этих целей попробовать использовать nginx или другие http серверы.
 

Max

Administrator
Staff member
Идея такова:
1. Входит rtmp / webrtc
2. по REST HOOK смотрим что пришло (resolution/fps/bitrate..., возможно тем же ffprobe для rtmp)
3. создаем подходящий профиль для транскодинга через REST API (вот тут не понятно где, на origin/edge)
4. отдаем клиенту правильный stream name (по профилю)
5. клиент делает pull (hls) и запускается транскодинг на выделенной машине с cdn_role=transcoder
В общих чертах описал. Такое возможно?
Почти все так. Но профили должны быть готовы заранее и жестко прописаны в конфигах cdn_profiles.yml
По REST поменять/установить профиль нельзя.
Т.е. заранее прописываем профиль, например profile1 640x480 и profile2 640x360 и на шаге 4 отдаем правильный streamName клиенту. Шаг 3 в этом случае лишний.
 

Max

Administrator
Staff member
вот тут не понятно где, на origin/edge
Профили транскодирования прописываются на Edge серверах как показано в документации
Если у Edge-сервера запросили поток stream1_profile1 и в его конфиге есть такой профиль, Edge сервер сначала проверит возможность получить этот стрим напрямую с Origin чтобы избежать транскодинга. Далее если без транскодинга не получится - обратится к Trancoding Node и закажет транскодинг у неё по данному профилю.
 
Top