LL-HLS

Low-Latency HLS — Apple (2019), встроен в HLS v9. Снижает задержку HLS с 15-30с до 2-5с БЕЗ отказа от HTTP/CDN. Работает через chunked transfer и preload hints.

Механизмы

1. Partial segments (parts)

Каждый 4-сек сегмент делится на 4 части по 1 сек. Плеер получает часть до готовности полного сегмента.

#EXT-X-PART:DURATION=1.0,URI="s100.1.mp4"
#EXT-X-PART:DURATION=1.0,URI="s100.2.mp4"
#EXT-X-PART:DURATION=1.0,URI="s100.3.mp4"
#EXT-X-PART:DURATION=1.0,URI="s100.4.mp4"
#EXTINF:4.0,
s100.mp4

2. Preload hint

#EXT-X-PRELOAD-HINT:TYPE=PART,URI="s101.1.mp4"

Плеер знает какая часть следующая → отправляет запрос до готовности → сервер отвечает как только готово (HTTP chunked).

3. Blocking playlist reload

GET /master.m3u8?_HLS_msn=101&_HLS_part=2

Плеер: "дай playlist когда будет part 2 сегмента 101". Сервер держит запрос, отдаёт как только готово. Никакого polling.

4. Rendition report

#EXT-X-RENDITION-REPORT:URI="720p.m3u8",LAST-MSN=101,LAST-PART=2

В master.m3u8 — состояние всех renditions. ABR-переключение без ожидания.

HTTP/2 push (removed 2020)

Изначально LL-HLS полагался на HTTP/2 server push. Apple убрал требование — теперь preload+chunked достаточно.

Latency

SetupEnd-to-end
Классический HLS (6с)~30 сек
Short HLS (2с)~10 сек
LL-HLS (1с parts)2-5 сек
WHEP< 1 сек

CDN-совместимость

LL-HLS работает через HTTP/1.1 chunked transfer + long-polling. Cloudflare, Akamai, Fastly поддерживают. Не требует WebSocket/UDP.

Плееры

См. также

← на главную