Разработка онлайн-кинотеатра (VOD)
Видео-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="Russian",DEFAULT=NO,
URI="subtitles_ru.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 месяцев.







