Реалізація HLS та DASH потокового відео
HLS (HTTP Live Streaming) та DASH (Dynamic Adaptive Streaming over HTTP) — протоколи адаптивного потокування. Відео нарізається на сегменти по 2–10 секунд; плеєр автоматично переключається між якостями залежно від швидкості з'єднання користувача.
HLS vs DASH
| Характеристика | HLS | DASH |
|---|---|---|
| Підтримка | Усі браузери (hls.js для non-Safari) | Усі браузери (dash.js) |
| Контейнер | MPEG-TS або fMP4 | fMP4 |
| DRM | FairPlay (Apple), Widevine | Widevine, PlayReady |
| Затримка | 6–30 сек (LL-HLS: <2 сек) | 2–10 сек |
| Сумісність CDN | Відмінна | Відмінна |
HLS — стандартний вибір. DASH використовується для сервісів з кількома DRM.
FFmpeg: Створення HLS плейлиста
ffmpeg -i "$INPUT" \
-filter_complex \
"[0:v]split=3[v1][v2][v3]; \
[v1]scale=1920:1080[v1080]; \
[v2]scale=1280:720[v720]; \
[v3]scale=640:360[v360]" \
-map "[v1080]" -map 0:a -c:v:0 libx264 -b:v:0 5000k -c:a:0 aac -b:a:0 192k \
-map "[v720]" -map 0:a -c:v:1 libx264 -b:v:1 2500k -c:a:1 aac -b:a:1 128k \
-map "[v360]" -map 0:a -c:v:2 libx264 -b:v:2 800k -c:a:2 aac -b:a:2 96k \
-f hls -hls_time 6 -hls_playlist_type vod \
-hls_segment_type fmp4 \
-master_pl_name master.m3u8 \
"$OUTPUT_DIR/v%v/index.m3u8"
PHP: Інтеграція в чергу
Трансходування HLS у фоновій черзі, завантаження в S3 або CDN. Плеєр завантажує master.m3u8, адаптує якість до пропускної спроможності.
Терміни реалізації
Налаштування HLS з FFmpeg та S3: 3–4 дні. З DRM (Widevine) та аналітикою: 5–7 днів.







