HLS

HLS (HTTP Live Streaming, RFC 8216) — Apple 2009. Стриминг видео через обычный HTTP. Разбивает видео на короткие сегменты (2-10 сек), плеер скачивает их последовательно. Работает везде — Safari, iOS, Android, Chrome (через MSE).

Структура

# master playlist
master.m3u8
├── 1080p.m3u8  → 1080p_0.ts, 1080p_1.ts, ...
├── 720p.m3u8   → 720p_0.ts, ...
├── 480p.m3u8   → 480p_0.ts, ...
└── audio.m3u8

Master playlist

#EXTM3U
#EXT-X-VERSION:6

#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.640028,mp4a.40.2"
1080p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3000000,RESOLUTION=1280x720
720p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=854x480
480p.m3u8

Media playlist

#EXTM3U
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:2680
#EXT-X-VERSION:6

#EXTINF:5.9760,
seg-2680.ts
#EXTINF:5.9760,
seg-2681.ts

# конец VOD (не для live)
#EXT-X-ENDLIST

Live vs VOD

Контейнеры

ABR — Adaptive Bitrate

Плеер сам решает какую версию скачивать. Смотрит на скорость сети, буфер, размер экрана. Алгоритмы: throughput-based, buffer-based, BOLA.

Latency

ТипЗадержка
Классический HLS (6-сек сегменты)15-30 сек
Short segments (2 сек)6-10 сек
LL-HLS2-5 сек

Шифрование

#EXT-X-KEY:METHOD=AES-128,URI="key.php",IV=0x...

AES-128 CBC per-segment. DRM через FairPlay (Apple), Widevine, PlayReady.

См. также

← на главную