41 lines
2.2 KiB
Markdown
41 lines
2.2 KiB
Markdown
|
|
# Регулировка качества и измерение
|
|||
|
|
|
|||
|
|
## Целевое качество
|
|||
|
|
- Ориентир: средний VMAF ≥ 93 для кодированного видео.
|
|||
|
|
|
|||
|
|
## Что регулируем
|
|||
|
|
- GPU-энкодеры используют CQ (Constant Quality).
|
|||
|
|
- CPU-энкодеры используют CRF (Constant Rate Factor).
|
|||
|
|
- Значения по умолчанию взяты из текущей логики кодирования (см. `src/core/encoding.ts`) и могут быть переопределены через CLI (`--h264-cq`, `--h264-crf`, `--av1-cq`, `--av1-crf`).
|
|||
|
|
|
|||
|
|
## Дефолтные CQ/CRF
|
|||
|
|
|
|||
|
|
| Энкодер | H.264 | AV1 |
|
|||
|
|
|------------------|-----------------|----------------|
|
|||
|
|
| NVENC | CQ 32 | CQ 42 |
|
|||
|
|
| QSV | CQ 32 | CQ 42 |
|
|||
|
|
| AMF | CQ 32 | CQ 42 |
|
|||
|
|
| VAAPI | CQ 32 | CQ 42 |
|
|||
|
|
| videotoolbox | CQ 32 | CQ 42 |
|
|||
|
|
| v4l2 | CQ 32 | CQ 42 |
|
|||
|
|
| CPU (libx264 / libsvtav1) | CRF 25→20* | CRF 40→28* |
|
|||
|
|
|
|||
|
|
\* CPU значения зависят от целевого разрешения:
|
|||
|
|
- 360p: H.264 CRF 25, AV1 CRF 40
|
|||
|
|
- 480p: H.264 CRF 24, AV1 CRF 38
|
|||
|
|
- 720p: H.264 CRF 23, AV1 CRF 35
|
|||
|
|
- 1080p: H.264 CRF 22, AV1 CRF 32
|
|||
|
|
- 1440p: H.264 CRF 21, AV1 CRF 30
|
|||
|
|
- 2160p: H.264 CRF 20, AV1 CRF 28
|
|||
|
|
|
|||
|
|
## Как мерить качество (VMAF)
|
|||
|
|
1. Закодируйте тестовый ролик с нужными параметрами (CQ/CRF).
|
|||
|
|
2. Сравните с исходником по VMAF (разрешения должны совпадать, при необходимости приведите к одному размеру).
|
|||
|
|
3. Пример команды FFmpeg c libvmaf:
|
|||
|
|
```bash
|
|||
|
|
ffmpeg -i encoded.mp4 -i source.mp4 \
|
|||
|
|
-lavfi "[0:v]setpts=PTS-STARTPTS[enc];[1:v]setpts=PTS-STARTPTS[ref];[enc][ref]libvmaf=log_path=vmaf.json:log_fmt=json" \
|
|||
|
|
-f null -
|
|||
|
|
```
|
|||
|
|
В логах ищите `VMAF score`; если < 93 — увеличьте качество (понизьте CQ/CRF), если > 95 и нужен меньший битрейт — можно чуть поднять CQ/CRF.
|