108 lines
5.3 KiB
Markdown
108 lines
5.3 KiB
Markdown
# Create VOD 🎬
|
||
|
||
🇺🇸 English README: https://gromlab.ru/vod/create-vod/src/branch/master/README.md
|
||
|
||
CLI инструмент для конвертации видео в форматы DASH и HLS с поддержкой аппаратного ускорения (NVENC / Intel QSV / AMD AMF / VAAPI), адаптивным стримингом и автоматической генерацией превью. Форматы всегда DASH + HLS.
|
||
|
||
**Возможности:**
|
||
- ⚡ Аппаратное ускорение: NVENC / Intel QSV / AMD AMF / VAAPI (автовыбор по приоритету)
|
||
- 🎯 Форматы: DASH и HLS (оба из одних сегментов)
|
||
- 📊 Профили качества: множественные битрейты и FPS, авто или кастом
|
||
- 🖼️ Превью: thumbnail спрайты + VTT, постер с первого кадра
|
||
- ⏱️ Прогресс: CLI прогресс-бары по профилям и общему этапу
|
||
|
||
## Быстрый старт
|
||
|
||
```bash
|
||
# Использование через npx (без установки)
|
||
npx @gromlab/create-vod video.mp4
|
||
|
||
# Или глобальная установка
|
||
npm install -g @gromlab/create-vod
|
||
create-vod video.mp4
|
||
```
|
||
|
||
**Системные требования:**
|
||
```bash
|
||
# Arch Linux
|
||
sudo pacman -S ffmpeg gpac
|
||
|
||
# Ubuntu/Debian
|
||
sudo apt install ffmpeg gpac
|
||
|
||
# macOS
|
||
brew install ffmpeg gpac
|
||
```
|
||
|
||
**Результат:** В текущей директории будет создана папка `video/` с сегментами в папках `{profile}-{codec}/`, манифестами DASH и HLS в корне, постером и превью спрайтами.
|
||
|
||
## Параметры CLI
|
||
|
||
```bash
|
||
create-vod <input-video> [output-dir] [-r resolutions] [-c codec] [-p poster-timecode]
|
||
```
|
||
|
||
### Основные параметры
|
||
|
||
| Параметр | Описание | По умолчанию | Обязательный |
|
||
|----------|----------|--------------|--------------|
|
||
| `input-video` | Путь к входному видео файлу | - | ✅ |
|
||
| `output-dir` | Директория для выходных файлов | `.` (текущая папка) | ❌ |
|
||
|
||
### Опциональные ключи
|
||
|
||
| Ключ | Описание | Значения / формат | По умолчанию | Пример |
|
||
|------|----------|-------------------|--------------|--------|
|
||
| `-r, --resolutions` | Выбор профилей качества | `360`, `720@60`, `1080-60` | авто | `-r 720,1080,1440@60` |
|
||
| `-c, --codec` | Видео кодек(и) | `h264`, `av1` (через пробел или запятую) | `h264` | `-c h264,av1` |
|
||
| `-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` |
|
||
|
||
### Примеры использования
|
||
|
||
```bash
|
||
# Базовая конвертация (DASH + HLS, авто кодек, автопрофили)
|
||
create-vod video.mp4
|
||
|
||
# Указать выходную директорию
|
||
create-vod video.mp4 ./output
|
||
|
||
# Только выбранные разрешения
|
||
create-vod video.mp4 -r 720,1080,1440
|
||
|
||
# Высокий FPS для игровых стримов
|
||
create-vod video.mp4 -r 720@60,1080@60
|
||
|
||
# Постер с 5-й секунды
|
||
create-vod video.mp4 -p 5
|
||
|
||
# Комбинация параметров
|
||
create-vod video.mp4 ./output -r 720,1080@60,1440@60 -p 00:00:10
|
||
```
|
||
|
||
### Поддерживаемые разрешения
|
||
|
||
| Разрешение | Стандартное название | 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 для ускорения
|