Added actualy HW encode
This commit is contained in:
102
SETUP.md
102
SETUP.md
@@ -94,9 +94,12 @@ All wrapper scripts (`run_optimisation.sh` on Linux, `run_optimisation.ps1` on W
|
||||
| `--preset <value>` | SVT-AV1 Preset (4=best, 6=balanced, 8=fast) | 6 |
|
||||
| `--workers <count>` | Concurrent files to process | 1 |
|
||||
| `--samples <count>` | Samples for CRF search | 4 |
|
||||
| `--thorough` | Use thorough mode (slower, more accurate) | false |
|
||||
| `--encoder <name>` | ab-av1 encoder | svt-av1 |
|
||||
| `--hwaccel <value>` | Hardware acceleration | none (auto: auto-detect) |
|
||||
| `--encoder <name>` | Video encoder: svt-av1, av1_amf, av1_nvenc, av1_qsv | svt-av1 |
|
||||
| `--hwaccel <value>` | Hardware decode acceleration (auto, d3d11va, vaapi) | none |
|
||||
| `--use-hardware-worker` | Use 1 HW encoder worker + rest CPU workers | false |
|
||||
| `--plex-url <url>` | Plex server URL for library refresh | none |
|
||||
| `--plex-token <token>` | Plex auth token | none |
|
||||
| `--log-dir <path>` | Log directory | /opt/Optmiser/logs |
|
||||
|
||||
## Multi-Machine Setup
|
||||
|
||||
@@ -140,6 +143,99 @@ All three can run simultaneously!
|
||||
|
||||
## Hardware Acceleration
|
||||
|
||||
### Hardware Decoding vs Hardware Encoding
|
||||
|
||||
There are two types of hardware acceleration:
|
||||
|
||||
1. **Hardware Decoding (`--hwaccel`)**: Uses GPU to decode source video faster. Doesn't affect quality.
|
||||
2. **Hardware Encoding (`--encoder`)**: Uses GPU to encode output video. Much faster but requires quality compensation.
|
||||
|
||||
### Hardware Encoders
|
||||
|
||||
| Encoder | GPU | Platform | Notes |
|
||||
|---------|-----|----------|-------|
|
||||
| `svt-av1` | CPU | All | Default. Best quality, slowest. |
|
||||
| `av1_amf` | AMD | Windows/Linux | RX 7000 series, ~3-10x faster than CPU |
|
||||
| `av1_nvenc` | NVIDIA | Windows/Linux | RTX 40 series, very fast |
|
||||
| `av1_qsv` | Intel | Windows/Linux | Arc GPUs, Intel iGPU with AV1 |
|
||||
|
||||
### FFmpeg with Hardware Encoder Support
|
||||
|
||||
**Windows (pre-built with HW encoders):**
|
||||
```powershell
|
||||
# Most Windows FFmpeg builds include hardware encoders
|
||||
# Verify with:
|
||||
ffmpeg -encoders 2>&1 | findstr av1
|
||||
|
||||
# Should show: av1_amf, av1_nvenc, av1_qsv (depending on your GPU)
|
||||
|
||||
# If missing, download from: https://github.com/BtbN/FFmpeg-Builds/releases
|
||||
# Choose: ffmpeg-master-latest-win64-gpl.zip (includes all encoders)
|
||||
```
|
||||
|
||||
**Linux (may need custom build):**
|
||||
```bash
|
||||
# Check available encoders
|
||||
ffmpeg -encoders 2>&1 | grep av1
|
||||
|
||||
# For AMD (av1_amf) - requires AMF SDK
|
||||
# Install AMD GPU drivers with AMF support
|
||||
sudo apt install amdgpu-pro
|
||||
|
||||
# For NVIDIA (av1_nvenc) - requires NVIDIA drivers
|
||||
sudo apt install nvidia-driver-535 # or newer
|
||||
|
||||
# For Intel (av1_qsv) - requires Intel Media SDK
|
||||
sudo apt install intel-media-va-driver-non-free
|
||||
|
||||
# If your distro's ffmpeg lacks HW encoders, use static build:
|
||||
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
|
||||
```
|
||||
|
||||
### Using Hardware Workers (1 GPU + 3 CPU)
|
||||
|
||||
For mixed encoding with your RX 7900 XT:
|
||||
|
||||
```powershell
|
||||
# Windows - 4 workers: 1 uses GPU (av1_amf), 3 use CPU (svt-av1)
|
||||
.\run_optimisation.ps1 `
|
||||
-Directory "Z:\" `
|
||||
-Vmaf 94 `
|
||||
-Workers 4 `
|
||||
-Encoder av1_amf `
|
||||
-Hwaccel auto `
|
||||
-UseHardwareWorker `
|
||||
-LogDir "C:\Users\bnair\Documents\VMAFOptimiser\logs"
|
||||
```
|
||||
|
||||
```bash
|
||||
# Linux - same concept
|
||||
./run_optimisation.sh \
|
||||
--directory /media \
|
||||
--vmaf 94 \
|
||||
--workers 4 \
|
||||
--encoder av1_amf \
|
||||
--hwaccel auto \
|
||||
--use-hardware-worker
|
||||
```
|
||||
|
||||
**How it works:**
|
||||
- First worker to start claims the GPU and uses `av1_amf`
|
||||
- Remaining 3 workers use `svt-av1` (CPU)
|
||||
- GPU worker applies +2 VMAF offset automatically to match CPU quality
|
||||
|
||||
### Quality Compensation
|
||||
|
||||
Hardware encoders produce lower quality at the same settings. The script automatically compensates:
|
||||
|
||||
| Target VMAF | CPU (svt-av1) | GPU (av1_amf) |
|
||||
|-------------|---------------|---------------|
|
||||
| 94 | Searches for VMAF 94 | Searches for VMAF 96 |
|
||||
| 93 | Searches for VMAF 93 | Searches for VMAF 95 |
|
||||
| 92 | Searches for VMAF 92 | Searches for VMAF 94 |
|
||||
|
||||
This offset (`HW_ENCODER_VMAF_OFFSET = 2.0`) can be adjusted in `optimize_library.py`.
|
||||
|
||||
### Automatic Detection
|
||||
|
||||
When `--hwaccel auto` is specified, the wrapper scripts automatically select the best available hardware acceleration:
|
||||
|
||||
Reference in New Issue
Block a user