Files
create-vod/README.md

112 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DASH Video Converter 🎬
CLI инструмент для конвертации видео в форматы DASH и HLS с поддержкой аппаратного ускорения (NVENC / Intel QSV / AMD AMF / VAAPI), адаптивным стримингом и автоматической генерацией превью.
**Возможности:**
- ⚡ Аппаратное ускорение: 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] [-f format] [-p poster-timecode]
```
### Основные параметры
| Параметр | Описание | По умолчанию | Обязательный |
|----------|----------|--------------|--------------|
| `input-video` | Путь к входному видео файлу | - | ✅ |
| `output-dir` | Директория для выходных файлов | `.` (текущая папка) | ❌ |
### Опциональные ключи
| Ключ | Описание | Формат | Пример |
|------|----------|--------|--------|
| `-r, --resolutions` | Выбор профилей качества | `360`, `720@60`, `1080-60` | `-r 720,1080,1440@60` |
| `-c, --codec` | Видео кодек | `h264`, `av1`, `dual` | `-c dual` (по умолчанию) |
| `-f, --format` | Формат стриминга | `dash`, `hls`, `both` | `-f both` (по умолчанию) |
| `-p, --poster` | Таймкод для постера | `HH:MM:SS` или секунды | `-p 00:00:05` или `-p 10` |
| `--accel` | Аппаратный ускоритель | `auto`, `nvenc`, `qsv`, `amf`, `cpu` | `--accel nvenc` |
### Примеры использования
```bash
# Базовая конвертация (DASH + HLS, dual codec, автопрофили)
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
# Только DASH формат
create-vod video.mp4 -f dash
# Только HLS для Safari/iOS
create-vod video.mp4 -f hls -c h264
# Постер с 5-й секунды
create-vod video.mp4 -p 5
# Комбинация параметров
create-vod video.mp4 ./output -r 720,1080@60,1440@60 -c dual -f both -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 для ускорения