HLS so với DASH
Cả hai đều là giao thức adaptive streaming dựa trên HTTP. Cùng giải quyết một vấn đề (phân phối theo phân đoạn với bitrate thích ứng) nhưng thiết kế khác nhau chút.
HLS (HTTP Live Streaming)
Apple phát triển năm 2009. Chuẩn hóa thành RFC 8216.
- Manifest: playlist
.m3u8văn bản - Phân đoạn: trước đây là
.ts(MPEG-TS), nay là.m4s(MP4 phân mảnh) - Hỗ trợ trình duyệt gốc: Safari, mọi iOS, mọi macOS
- Thư viện hỗ trợ: HLS.js cho Chrome/Firefox/Edge
- Mã hóa: AES-128 ở mức phân đoạn (phổ biến nhất), SAMPLE-AES cho FairPlay
- Linh hoạt codec: H.264 + HEVC + AV1 với MP4 phân mảnh
DASH (Dynamic Adaptive Streaming over HTTP)
MPEG chuẩn hóa năm 2012.
- Manifest:
.mpdXML - Phân đoạn:
.m4s(MP4 phân mảnh) - Hỗ trợ trình duyệt gốc: Không (cần Media Source Extensions + thư viện JS)
- Thư viện hỗ trợ: Shaka Player, dash.js
- Mã hóa: Common Encryption (CENC) hỗ trợ Widevine + PlayReady đồng thời
- Linh hoạt codec: Bất kỳ codec nào MP4 chở được
Vì sao HLS thắng thị trường
Hỗ trợ Safari gốc không cần thư viện JS là yếu tố chiến thắng thực tế. Phần lớn nền tảng ship HLS trước, DASH là tùy chọn phụ.
Khi DASH vẫn quan trọng
- DRM hãng phim phân phối cùng nội dung với Widevine + PlayReady đồng thời — DASH+CENC là mẫu chuẩn.
- Nền tảng OTT trưởng thành đã ship DASH từ nhiều năm trước và có toolchain xoay quanh nó.
Với phần lớn dự án mới, HLS là mặc định đơn giản hơn. AVCaption chỉ ship HLS.