Розробка онлайн-кінотеатра (VOD)
Платформа video-on-demand — сервіс для стриминга відеоконтенту за запитом. Технічні вимоги значно вищі звичайного сайту: адаптивний бітрейт (ABR), захист контенту (DRM), CDN-дистрибуція, підтримка субтитрів, мультиплатформенність.
Архітектура відеопотока
Відеопайплайн:
Джерело (4K H.264/H.265 master file)
↓ Транскодування (FFmpeg / cloud encoder)
Multiple renditions:
1080p @ 8 Mbps
720p @ 4 Mbps
480p @ 2 Mbps
360p @ 1 Mbps
↓
HLS / DASH манівфест (.m3u8 / .mpd)
↓
CDN (Cloudflare, AWS CloudFront, Fastly)
↓
Adaptive Bitrate Player (HLS.js, Shaka Player, Video.js)
Adaptive Bitrate Streaming (ABR): плеер автоматично переключається між якістю залежно від швидкості інтернету користувача. HLS (m3u8) — для Safari + iOS (нативна підтримка). MPEG-DASH — для Android та браузерів через MSE.
Транскодування
Cloud-based: AWS Elastic Transcoder або AWS MediaConvert, Cloudflare Stream ($5 за 1000 хвилин зберігання + доставка). Підходить для більшості платформ.
Self-hosted: FFmpeg + очередь завдань. Приклад завдання транскодування:
ffmpeg -i input_4k.mp4 \
-map 0:v -map 0:a \
-vf "scale=1920:1080" -b:v 8000k -c:v libx264 -profile:v high \
-c:a aac -b:a 192k \
-hls_time 6 -hls_playlist_type vod \
-hls_segment_filename "segments/1080p_%04d.ts" \
"output_1080p.m3u8"
Кожен сегмент (6 секунд) завантажується у S3/CDN. Master playlist посилається на усі якості.
DRM (Digital Rights Management)
Для ліцензійного контенту DRM обов'язковий:
- Widevine — Google, Chrome, Android
- FairPlay — Apple, обов'язковий для Safari + iOS
- PlayReady — Microsoft, Edge, Windows
Провайдери DRM-ключів: Axinom, EZDRM, BuyDRM. Схема:
Player запитує ліцензію → License Server перевіряє auth → видає ключ
Зашифрований сегмент декодується ключем у CDM (Content Decryption Module)
DRM вимагає HTTPS, EME (Encrypted Media Extensions), DASH+CENC або HLS+AES.
Субтитри
Формати: VTT (WebVTT), SRT, TTML. Зберігаються окремо від відео. У HLS-манівфест додаються:
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Українська",DEFAULT=NO,
URI="subtitles_uk.m3u8"
Автогенерація субтитрів через Whisper (OpenAI) або AWS Transcribe.
Плеер
Video.js + плагіни — зрілое рішення, HLS, DASH, DRM. Shaka Player (Google) — DASH + HLS, усі DRM-системи, хороша ABR. HLS.js — тільки HLS, без DRM. Для контенту без захисту.
Каталог та метаданні
Контент організований:
- Фільми (рейтинг MPAA, жанри, теги)
- Серіали → Сезони → Епізоди
- Колекції та підборки
- Персони (актори, режисери) — зв'язки багато-до-багатьох
Пошук: Elasticsearch для повнотекстового пошуку за назвою, описом, акторами.
Бізнес-моделі
- SVOD (Subscription): підписка за доступ до всього каталогу (Netflix-модель)
- TVOD (Transactional): аренда або покупка окремого фільму
- AVOD (Ad-supported): безплатно з рекламою (VAST/VPAID інтеграція)
- HVOD (Hybrid): частина контенту безплатно, частина по підписці
Часові рамки
MVP (каталог з відео через Cloudflare Stream/MUX, HLS плеєр, базова підписка): 3–4 місяці. Повнофункціональна VOD-платформа з DRM, мультиплатформенними приложеннями, рекомендаціями та аналітикою перегляду: 8–14 місяців.







