HLS vs DASH
Две доминирующие технологии стриминга HTTP-based. По функциям почти идентичны, различаются вендором, форматом манифеста, поддержкой в браузерах.
Матрица
| HLS | DASH | |
|---|---|---|
| Создатель | Apple (2009) | MPEG (ISO, 2011) |
| Стандарт | IETF RFC 8216 | ISO/IEC 23009-1 |
| Манифест | m3u8 (текст, простой) | MPD (XML, verbose) |
| Контейнер | MPEG-TS или fMP4 (v7+) | только fMP4 |
| Кодеки | любые (обычно H.264/AAC) | codec-agnostic |
| Safari | нативно | только через MSE |
| Chrome/FF | через hls.js | через dash.js/Shaka |
| DRM | FairPlay | PlayReady, Widevine, ClearKey |
| Low-latency | LL-HLS (2019) | LL-DASH (аналогично) |
| Ad insertion | SCTE-35, HLS Interstitials | SCTE-35, DASH-IF Ad Insertion |
CMAF — общий контейнер
CMAF (Common Media Application Format, ISO 2018) — единый fMP4-контейнер, работающий для обоих. Один энкод, два манифеста → CDN cost -50%, storage -50%.
# один энкод
video-720p/
├── init.mp4
├── seg-1.m4s
├── seg-2.m4s
└── ...
# два манифеста
├── master.m3u8 ← для Safari, iOS, Apple TV
└── master.mpd ← для Chrome, Android, Web
Что выбрать
- Только Apple → HLS
- Web + Android + smart TV → DASH
- Всё → CMAF + оба манифеста
- Live с DRM → CMAF + Widevine (Chrome) + FairPlay (Safari)
Кто как
| Платформа | Что |
|---|---|
| Netflix | DASH + PlayReady/Widevine |
| YouTube | DASH (VOD), HLS для мобилок |
| Twitch | HLS (LL-HLS) |
| Apple TV+ | HLS + FairPlay |
| Kinopoisk, Ivi | DASH + HLS-фолбэк |