Термин
Chunked Transfer Encoding (CTE)
Фича HTTP/1.1 (RFC 9112, июнь 2022), позволяющая серверу отдавать тело ответа кусками без указания итогового размера заранее. Механизм, на котором держится LL-HLS и LL-DASH low-latency-доставка.
Chunked Transfer Encoding позволяет серверу стримить тело ответа последовательностью length-prefixed кусков, завершаемой нулевым куском. Изначально CTE придумали, чтобы динамические страницы начинали слать байты до того, как узнают финальный размер; в итоге CTE стал технической базой low-latency HTTP-стриминга. Packager пишет каждый CMAF-чанк в тело ответа сразу же, как только его произвёл; плеер парсит чанки по мере прихода, не дожидаясь окончания сегмента.
В LL-HLS и LL-DASH шаблон такой: плеер запрашивает сегмент, который ещё производится. Origin держит HTTP-ответ открытым, packager доливает в него CMAF-чанки по мере того, как энкодер выдаёт кадры, CDN проводит байты через HTTP/2 chunked transfer, а плеер парсит каждый чанк в MSE в момент прихода. End-to-end задержка плеера благодаря этому привязана к длительности чанка (200–400 мс), а не к полному сегменту (2–6 с).
У CTE есть тонкие взаимодействия с CDN. Кеш должен начинать сохранять частичный ответ до того, как узнает размер, и обслуживать следующие запросы по тому же URL из этого частичного кеш-записи. Это не каждый CDN умеет (Apple специфицирует это как «blocking playlist reload» для LL-HLS). Ошибки конфигурации здесь – самая частая причина того, что LL-HLS-деплой работает с HLS-подобными задержками.
Считаете параметры для своего продукта?
Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.