fix: Исправление выбора энкодер/декодер
This commit is contained in:
37
docs/CLI_OPTIONS.md
Normal file
37
docs/CLI_OPTIONS.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# Поддерживаемые опции CLI
|
||||
|
||||
## Базовый вызов
|
||||
```
|
||||
create-vod <input-video> [output-dir] [options]
|
||||
```
|
||||
|
||||
## Ключевые опции
|
||||
- `-r, --resolutions` — список профилей (например: `360,720@60,1080`).
|
||||
- `-c, --codec` — `h264` | `av1` (по умолчанию auto = h264 + AV1 при наличии HW).
|
||||
- `-f, --format` — `dash` | `hls` (по умолчанию auto = dash + hls).
|
||||
- `-p, --poster` — таймкод постера (`HH:MM:SS` или секунды, по умолчанию 0:00:00).
|
||||
- `-e, --encoder` — аппаратный/софт энкодер: `auto` | `cpu` | `nvenc` | `qsv` | `amf` | `vaapi` | `videotoolbox` | `v4l2`.
|
||||
- `-d, --decoder` — аппаратный/софт декодер: `auto` | `cpu` | `nvenc` (cuda) | `qsv` | `vaapi` | `videotoolbox` | `v4l2`.
|
||||
- `--h264-cq / --h264-crf` — ручное качество для H.264 (GPU CQ / CPU CRF).
|
||||
- `--av1-cq / --av1-crf` — ручное качество для AV1 (GPU CQ / CPU CRF).
|
||||
|
||||
## Что передаём в FFmpeg
|
||||
- `cpu` (энкодер) → H.264: `libx264`, AV1: `libsvtav1`.
|
||||
- `nvenc` → `h264_nvenc`, `av1_nvenc` (если доступен).
|
||||
- `qsv` → `h264_qsv`, `av1_qsv`.
|
||||
- `amf` → `h264_amf`, `av1_amf`.
|
||||
- `vaapi` → `h264_vaapi`, `av1_vaapi`.
|
||||
- `videotoolbox` → `h264_videotoolbox` (macOS).
|
||||
- `v4l2` → `h264_v4l2m2m` (зависит от SoC).
|
||||
|
||||
Декодеры:
|
||||
- `cpu` — без `-hwaccel`.
|
||||
- `nvenc` — `-hwaccel cuda -hwaccel_output_format cuda`.
|
||||
- `qsv` — `-hwaccel qsv`.
|
||||
- `vaapi` — `-hwaccel vaapi -vaapi_device /dev/dri/renderD128`.
|
||||
- `videotoolbox` — `-hwaccel videotoolbox`.
|
||||
- `v4l2` — `-hwaccel v4l2m2m`.
|
||||
|
||||
## Особенности
|
||||
- В авто-режиме AV1 включается только при наличии аппаратного AV1; иначе остаётся H.264.
|
||||
- `auto` выбирает лучший обнаруженный ускоритель по приоритету (nvenc → qsv → amf → vaapi → videotoolbox → v4l2 → cpu).
|
||||
@@ -66,7 +66,6 @@ create-vod video.mp4 -r 360 720@60 1080 1440@120
|
||||
**Значения:**
|
||||
- `h264` — только H.264 (максимальная совместимость)
|
||||
- `av1` — только AV1 (лучшее сжатие, новые браузеры)
|
||||
- `dual` — оба кодека (рекомендуется)
|
||||
|
||||
**Примеры:**
|
||||
```bash
|
||||
@@ -75,35 +74,56 @@ create-vod video.mp4 -c h264
|
||||
|
||||
# Только AV1 (медленнее, меньше места)
|
||||
create-vod video.mp4 -c av1
|
||||
|
||||
# Оба кодека (максимальная совместимость)
|
||||
create-vod video.mp4 -c dual
|
||||
```
|
||||
|
||||
**GPU ускорение:**
|
||||
- H.264: `h264_nvenc` (NVIDIA), fallback → `libx264` (CPU)
|
||||
- AV1: `av1_nvenc` (NVIDIA), `av1_qsv` (Intel), `av1_amf` (AMD), fallback → `libsvtav1` (CPU)
|
||||
|
||||
**По умолчанию:** `dual`
|
||||
**По умолчанию:** авто (H.264 всегда, AV1 если есть аппаратный AV1)
|
||||
|
||||
---
|
||||
|
||||
### `--accel` — Аппаратный ускоритель
|
||||
### `-e, --encoder` — Видео энкодер
|
||||
|
||||
Выбор приоритетного ускорителя. По умолчанию выбирается лучший из доступных.
|
||||
Выбор приоритетного видео энкодера.
|
||||
|
||||
**Значения:**
|
||||
- `auto` — автоопределение по приоритету (NVENC → QSV → AMF → CPU)
|
||||
- `auto` — автоопределение по приоритету (NVENC → QSV → AMF → VAAPI → CPU)
|
||||
- `nvenc` — NVIDIA NVENC
|
||||
- `qsv` — Intel Quick Sync
|
||||
- `amf` — AMD AMF
|
||||
- `cpu` — принудительно без GPU
|
||||
- `vaapi` — VAAPI (Linux)
|
||||
- `videotoolbox` — Apple VT (macOS)
|
||||
- `v4l2` — V4L2 M2M (ARM/SBC)
|
||||
- `cpu` — принудительно без GPU (`libx264`/`libsvtav1`)
|
||||
|
||||
**Примеры:**
|
||||
```bash
|
||||
create-vod video.mp4 --accel nvenc
|
||||
create-vod video.mp4 --accel qsv
|
||||
create-vod video.mp4 --accel cpu # отключить GPU
|
||||
create-vod video.mp4 -e nvenc
|
||||
create-vod video.mp4 -e qsv
|
||||
create-vod video.mp4 -e cpu # отключить GPU
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### `-d, --decoder` — Видео декодер (hwaccel)
|
||||
|
||||
Выбор аппаратного декодера / hwaccel.
|
||||
|
||||
**Значения:**
|
||||
- `auto` — автоопределение (NVDEC → QSV → VAAPI → CPU)
|
||||
- `nvenc` — CUDA/NVDEC
|
||||
- `qsv` — Intel Quick Sync
|
||||
- `vaapi` — VAAPI (Linux)
|
||||
- `videotoolbox` — Apple VT (macOS)
|
||||
- `v4l2` — V4L2 M2M (ARM/SBC)
|
||||
- `cpu` — программный декод
|
||||
|
||||
**Примеры:**
|
||||
```bash
|
||||
create-vod video.mp4 -d nvenc
|
||||
create-vod video.mp4 -d cpu # декод только на CPU
|
||||
```
|
||||
|
||||
---
|
||||
@@ -115,7 +135,6 @@ create-vod video.mp4 --accel cpu # отключить GPU
|
||||
**Значения:**
|
||||
- `dash` — только DASH (MPEG-DASH)
|
||||
- `hls` — только HLS (HTTP Live Streaming)
|
||||
- `both` — оба формата
|
||||
|
||||
**Примеры:**
|
||||
```bash
|
||||
@@ -125,8 +144,8 @@ create-vod video.mp4 -f dash
|
||||
# Только HLS (для Safari/iOS)
|
||||
create-vod video.mp4 -f hls
|
||||
|
||||
# Оба формата (максимальная совместимость)
|
||||
create-vod video.mp4 -f both
|
||||
# Оба формата (по умолчанию авто)
|
||||
create-vod video.mp4 # формат не указывать
|
||||
```
|
||||
|
||||
**Особенности:**
|
||||
@@ -135,10 +154,9 @@ create-vod video.mp4 -f both
|
||||
|--------|--------|---------------|------------|
|
||||
| DASH | H.264 + AV1 | Chrome, Firefox, Edge, Safari (с dash.js) | Стандарт индустрии |
|
||||
| HLS | H.264 только | Safari, iOS, все браузеры | Требует H.264 |
|
||||
| both | H.264 + AV1 (DASH), H.264 (HLS) | Максимальная | Рекомендуется |
|
||||
|
||||
**Ограничения:**
|
||||
- HLS требует `--codec h264` или `--codec dual`
|
||||
- HLS требует наличие H.264 в итоговом наборе кодеков
|
||||
- AV1 не поддерживается в HLS (Safari не поддерживает AV1)
|
||||
|
||||
**Файловая структура:**
|
||||
@@ -163,12 +181,7 @@ output/
|
||||
└── thumbnails.vtt
|
||||
```
|
||||
|
||||
**Преимущества структуры:**
|
||||
- Сегменты хранятся один раз (нет дублирования)
|
||||
- DASH и HLS используют одни и те же .m4s файлы
|
||||
- Экономия 50% места при `format=both`
|
||||
|
||||
**По умолчанию:** `both` (максимальная совместимость)
|
||||
**По умолчанию:** генерируются DASH и HLS
|
||||
|
||||
---
|
||||
|
||||
@@ -198,7 +211,7 @@ create-vod video.mp4 -p 00:01:30
|
||||
### Базовое использование
|
||||
|
||||
```bash
|
||||
# Простейший запуск (оба формата, dual codec, автопрофили)
|
||||
# Простейший запуск (оба формата, авто кодек, автопрофили)
|
||||
create-vod video.mp4
|
||||
|
||||
# С указанием выходной директории
|
||||
@@ -226,9 +239,6 @@ create-vod video.mp4 -c h264
|
||||
|
||||
# Лучшее сжатие (только AV1)
|
||||
create-vod video.mp4 -c av1
|
||||
|
||||
# Максимальная совместимость
|
||||
create-vod video.mp4 -c dual
|
||||
```
|
||||
|
||||
### Выбор формата
|
||||
@@ -239,19 +249,16 @@ create-vod video.mp4 -f dash
|
||||
|
||||
# HLS для Safari/iOS
|
||||
create-vod video.mp4 -f hls -c h264
|
||||
|
||||
# Оба формата для всех устройств
|
||||
create-vod video.mp4 -f both -c dual
|
||||
```
|
||||
|
||||
### Комбинированные примеры
|
||||
|
||||
```bash
|
||||
# Производственная конфигурация
|
||||
create-vod video.mp4 ./cdn/videos -r 360,720,1080 -c dual -f both
|
||||
create-vod video.mp4 ./cdn/videos -r 360,720,1080
|
||||
|
||||
# High-end конфигурация (4K, high FPS)
|
||||
create-vod video.mp4 -r 720@60,1080@60,1440@120,2160@60 -c dual -f both
|
||||
create-vod video.mp4 -r 720@60,1080@60,1440@120,2160@60
|
||||
|
||||
# Быстрая конвертация для тестов
|
||||
create-vod video.mp4 -r 720 -c h264 -f dash
|
||||
@@ -308,7 +315,7 @@ brew install ffmpeg gpac
|
||||
|
||||
### Время конвертации (примерные данные)
|
||||
|
||||
Видео 4K, 10 секунд, dual codec, 3 профиля:
|
||||
Видео 4K, 10 секунд, h264 + av1 (авто), 3 профиля:
|
||||
|
||||
| Конфигурация | Время |
|
||||
|--------------|-------|
|
||||
@@ -322,13 +329,13 @@ brew install ffmpeg gpac
|
||||
### Для максимальной совместимости
|
||||
|
||||
```bash
|
||||
create-vod video.mp4 -c dual -f both
|
||||
create-vod video.mp4
|
||||
```
|
||||
|
||||
Генерирует:
|
||||
- DASH с H.264 + AV1 (Chrome, Firefox, Edge)
|
||||
- DASH с H.264 + AV1 (Chrome, Firefox, Edge при наличии поддержки)
|
||||
- HLS с H.264 (Safari, iOS)
|
||||
- Все современные устройства поддерживаются
|
||||
- Все современные устройства поддерживаются; AV1 добавляется при наличии HW
|
||||
|
||||
### Для быстрой разработки
|
||||
|
||||
@@ -341,7 +348,7 @@ create-vod video.mp4 -r 720 -c h264 -f dash
|
||||
### Для продакшена
|
||||
|
||||
```bash
|
||||
create-vod video.mp4 -r 360,480,720,1080,1440 -c dual -f both
|
||||
create-vod video.mp4 -r 360,480,720,1080,1440
|
||||
```
|
||||
|
||||
Широкий диапазон профилей для всех устройств.
|
||||
@@ -349,7 +356,7 @@ create-vod video.mp4 -r 360,480,720,1080,1440 -c dual -f both
|
||||
### Для 4K контента
|
||||
|
||||
```bash
|
||||
create-vod video.mp4 -r 720,1080,1440,2160 -c dual -f both
|
||||
create-vod video.mp4 -r 720,1080,1440,2160
|
||||
```
|
||||
|
||||
От HD до 4K для премиум контента.
|
||||
@@ -367,10 +374,10 @@ create-vod video.mp4 -r 720,1080,1440,2160 -c dual -f both
|
||||
|
||||
**Решение:**
|
||||
```bash
|
||||
# Используйте h264 или dual
|
||||
# Используйте h264 или auto
|
||||
create-vod video.mp4 -f hls -c h264
|
||||
# или
|
||||
create-vod video.mp4 -f hls -c dual
|
||||
create-vod video.mp4 -f hls
|
||||
```
|
||||
|
||||
### FPS источника ниже запрошенного
|
||||
|
||||
@@ -469,7 +469,7 @@ chmod +x test_codec.sh
|
||||
# - H.264 для старых устройств (iOS < 14)
|
||||
|
||||
# Пример: create-vod уже реализует это
|
||||
create-vod input.mp4 output/ -c dual -f both -r 360,720,1080
|
||||
create-vod input.mp4 output/ -r 360,720,1080
|
||||
```
|
||||
|
||||
### Для архивирования
|
||||
@@ -555,4 +555,3 @@ done
|
||||
- Протестированы кодеки: VP9, AV1 (CPU/GPU), H.264 (CPU/GPU)
|
||||
- Добавлены все команды для тестирования
|
||||
- Добавлены результаты сравнения на видео 1920×1080, 135 сек
|
||||
|
||||
|
||||
Reference in New Issue
Block a user