fix: Исправление выбора энкодер/декодер

This commit is contained in:
2026-01-20 14:24:51 +03:00
parent 88fc443cb6
commit 69b3a4804f
15 changed files with 457 additions and 250 deletions

37
docs/CLI_OPTIONS.md Normal file
View 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).