2026-01-20 00:56:01 +03:00
# Create VOD 🎬
🇺🇸 English README: https://gromlab.ru/vod/create-vod/src/branch/master/README.md
2026-01-21 10:15:32 +03:00
CLI инструмент для конвертации видео в форматы DASH и HLS с поддержкой аппаратного ускорения (NVENC / Intel QSV / AMD AMF / VAAPI), адаптивным стримингом и автоматической генерацией превью.
2026-01-20 00:56:01 +03:00
**Возможности:**
- ⚡ Аппаратное ускорение: NVENC / Intel QSV / AMD AMF / VAAPI (автовыбор по приоритету)
- 🎯 Форматы: DASH и HLS (о б а из одних сегментов)
- 📊 Профили качества: множественные битрейты и FPS, авто или кастом
- 🖼️ Превью: thumbnail спрайты + VTT, постер с первого кадра
- ⏱️ Прогресс: CLI прогресс-бары по профилям и общему этапу
2026-01-21 10:15:32 +03:00
## Install
Для корректной работы CLI требуется установленые в системе FFmpeg и MP4Box.
2026-01-20 00:56:01 +03:00
```bash
# Arch Linux
sudo pacman -S ffmpeg gpac
# Ubuntu/Debian
sudo apt install ffmpeg gpac
# macOS
brew install ffmpeg gpac
```
2026-01-21 10:15:32 +03:00
## Быстрый старт
Перед запуском убедитесь, что в системе установлены `FFmpeg` и `MP4Box` (см. Install).
```bash
npx @gromlab/create -vod video.mp4
```
2026-01-22 11:08:26 +03:00
**Результат:** В текущей директории появится структура выходных файлов:
```
video/
├── manifest.mpd # DASH манифест
├── master.m3u8 # HLS мастер-плейлист
├── poster.jpg # Постер с указанного таймкода
├── thumbnails.jpg # Спрайт превью
├── thumbnails.vtt # Таймкоды превью
├── audio/ # Аудиосегменты (init + m4s)
├── 1080p/ # Сегменты H.264 1080p
├── 720p/ # Сегменты H.264 720p
├── 480p/ # Сегменты H.264 480p
├── 360p/ # Сегменты H.264 360p
├── 1080p-av1/ # Сегменты AV1 1080p (если выбран av1)
└── ... # Остальные профили/кодеки по схеме {profile}-{codec}
```
2026-01-20 00:56:01 +03:00
## Параметры CLI
```bash
2026-01-22 11:08:26 +03:00
create-vod < input-video > [output-dir] [-r resolutions] [-c codec] [-p poster-timecode] [-e encoder] [-d decoder] [-m]
2026-01-20 00:56:01 +03:00
```
### Основные параметры
| Параметр | Описание | По умолчанию | Обязательный |
|----------|----------|--------------|--------------|
| `input-video` | Путь к входному видео файлу | - | ✅ |
| `output-dir` | Директория для выходных файлов | `.` (текущая папка) | ❌ |
### Опциональные ключи
2026-01-20 14:24:51 +03:00
| Ключ | Описание | Значения / формат | По умолчанию | Пример |
|------|----------|-------------------|--------------|--------|
| `-r, --resolutions` | Выбор профилей качества | `360` , `720@60` , `1080-60` | авто | `-r 720,1080,1440@60` |
2026-01-20 14:52:59 +03:00
| `-c, --codec` | Видео кодек(и) | `h264` , `av1` (через пробел или запятую) | `h264` | `-c h264,av1` |
2026-01-20 14:24:51 +03:00
| `-p, --poster` | Таймкод для постера | `HH:MM:SS` или секунды | `00:00:00` | `-p 00:00:05` или `-p 10` |
| `-e, --encoder` | Видео энкодер | `auto` , `nvenc` , `qsv` , `amf` , `vaapi` , `videotoolbox` , `v4l2` , `cpu` | `auto` | `-e nvenc` |
| `-d, --decoder` | Видео декодер (hwaccel) | `auto` , `nvenc` , `qsv` , `vaapi` , `videotoolbox` , `v4l2` , `cpu` | `auto` | `-d cpu` |
2026-01-22 11:08:26 +03:00
| `-m, --muted` | Отключить аудио дорожку в выходных файлах | `flag` | `off` | `-m` |
2026-01-20 00:56:01 +03:00
### Примеры использования
```bash
2026-01-20 14:24:51 +03:00
# Базовая конвертация (DASH + HLS, авто кодек, автопрофили)
2026-01-22 11:44:00 +03:00
npx @gromlab/create -vod video.mp4
2026-01-20 00:56:01 +03:00
# Указать выходную директорию
2026-01-22 11:39:51 +03:00
npx @gromlab/create -vod video.mp4 ./output
2026-01-20 00:56:01 +03:00
# Только выбранные разрешения
2026-01-22 11:39:51 +03:00
npx @gromlab/create -vod video.mp4 -r 720,1080,1440
2026-01-20 00:56:01 +03:00
# Высокий FPS для игровых стримов
2026-01-22 11:39:51 +03:00
npx @gromlab/create -vod video.mp4 -r 720@60 ,1080@60
2026-01-20 00:56:01 +03:00
# Постер с 5-й секунды
2026-01-22 11:39:51 +03:00
npx @gromlab/create -vod video.mp4 -p 5
2026-01-20 00:56:01 +03:00
# Комбинация параметров
2026-01-22 11:39:51 +03:00
npx @gromlab/create -vod video.mp4 ./output -r 720,1080@60 ,1440@60 -p 00:00:10
2026-01-22 11:08:26 +03:00
# Без звука
2026-01-22 11:39:51 +03:00
npx @gromlab/create -vod video.mp4 -m
2026-01-20 00:56:01 +03:00
```
### Поддерживаемые разрешения
| Разрешение | Стандартное название | FPS варианты |
|------------|---------------------|--------------|
| `360` | 360p (640× 360) | 30, 60, 90, 120 |
| `480` | 480p (854× 480) | 30, 60, 90, 120 |
| `720` | 720p HD (1280× 720) | 30, 60, 90, 120 |
| `1080` | 1080p Full HD (1920× 1080) | 30, 60, 90, 120 |
| `1440` | 1440p 2K (2560× 1440) | 30, 60, 90, 120 |
| `2160` | 2160p 4K (3840× 2160) | 30, 60, 90, 120 |
**Примечание:** Высокие FPS (60/90/120) создаются автоматически только если исходное видео поддерживает соответствующий FPS.
## Автоматические настройки
- **Длительность сегментов:** 2 секунды
- **NVENC:** автоопределение (GPU если доступен, иначе CPU)
- **Профили качества:** автоматический выбор на основе разрешения исходного видео
- **Битрейт:** динамический расчет по формуле BPP (Bits Per Pixel)
- **Превью спрайты:** генерируются автоматически (160× 90px, интервал 1 сек)
- **Постер:** извлекается с начала видео (кадр 0:00:00, можно изменить через `-p` )
- **Параллельное кодирование:** включено
**Требования:** Node.js ≥18.0.0, FFmpeg, MP4Box (gpac), опционально NVIDIA GPU для ускорения