Files
adaptive-video-converter/README.md
2025-12-03 21:55:35 +03:00

109 lines
4.9 KiB
Markdown
Raw Permalink 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.

# Adaptive Video Converter 🎬
CLI инструмент для конвертации видео в адаптивные форматы DASH и HLS с поддержкой GPU ускорения (NVENC), множественными профилями качества и автоматической генерацией превью.
**Возможности:** ⚡ NVENC ускорение • 🎯 DASH + HLS форматы • 📊 Адаптивный битрейт (ABR) • 🖼️ Thumbnail спрайты • 📸 Генерация постера • ⏱️ Прогресс в реальном времени
## Быстрый старт
```bash
# Использование через npx (без установки)
npx @grom13/adaptive-video-converter video.mp4
# Или глобальная установка
npm install -g @grom13/adaptive-video-converter
# Две команды на выбор:
adaptive-video-converter video.mp4 # полное название
avc 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
avc <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` |
### Примеры использования
```bash
# Базовая конвертация (DASH + HLS, dual codec, автопрофили)
avc video.mp4
# Указать выходную директорию
avc video.mp4 ./output
# Только выбранные разрешения
avc video.mp4 -r 720,1080,1440
# Высокий FPS для игровых стримов
avc video.mp4 -r 720@60,1080@60
# Только DASH формат
avc video.mp4 -f dash
# Только HLS для Safari/iOS
avc video.mp4 -f hls -c h264
# Постер с 5-й секунды
avc video.mp4 -p 5
# Комбинация параметров
avc 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 сек)
- **Постер:** извлекается с 1-й секунды видео (можно изменить через `-p`)
- **Параллельное кодирование:** включено
**Требования:** Node.js ≥18.0.0, FFmpeg, MP4Box (gpac), опционально NVIDIA GPU для ускорения