.
This commit is contained in:
119
README.md
119
README.md
@@ -220,3 +220,122 @@ py script.py
|
|||||||
müsste das Script entsprechend erweitert werden.
|
müsste das Script entsprechend erweitert werden.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
---
|
||||||
|
|
||||||
|
## ffmpeg Hardware-Decode (hw) – Details (Windows vs Linux)
|
||||||
|
|
||||||
|
Wichtig: Das Script nutzt Hardware **nur fürs Decode** (Einlesen/Decodieren des Videos).
|
||||||
|
Die Ausgabe ist weiterhin **MJPEG** (CPU), was für Trickplay/Thumbs völlig ok ist.
|
||||||
|
|
||||||
|
### Überblick: Welche `hw`-Option wo sinnvoll ist
|
||||||
|
|
||||||
|
- **Windows**
|
||||||
|
- `d3d11va` ✅ (empfohlen; Intel/AMD/NVIDIA – Decode über Direct3D 11)
|
||||||
|
- `cuda` ✅ (NVIDIA Decode; meist stabil, braucht NVIDIA-Treiber + ffmpeg mit CUDA-Support)
|
||||||
|
- `qsv` ✅ (Intel Quick Sync; benötigt Intel iGPU + Treiber; ffmpeg Build muss QSV unterstützen)
|
||||||
|
- `amf` ⚠️ (AMD AMF ist in ffmpeg primär Windows-Stack; im Script wird fürs Decode intern ebenfalls `d3d11va` genutzt)
|
||||||
|
- `vaapi` ❌ (VAAPI ist Linux/Unix-Stack)
|
||||||
|
|
||||||
|
- **Linux**
|
||||||
|
- `vaapi` ✅ (empfohlen für Intel iGPU & AMD GPUs über Mesa VAAPI)
|
||||||
|
- `qsv` ✅ (Intel Quick Sync; je nach Distribution/ffmpeg Build)
|
||||||
|
- `cuda` ✅ (NVIDIA; benötigt Treiber + ffmpeg mit CUDA/NVDEC)
|
||||||
|
- `d3d11va` ❌ (Windows-only)
|
||||||
|
- `amf` ❌/⚠️ (AMD AMF ist i.d.R. nicht der Linux-Standardpfad; auf Linux nimmst du für AMD fast immer `vaapi`)
|
||||||
|
|
||||||
|
### `hw_device` – wann braucht man das?
|
||||||
|
|
||||||
|
Im Script wird `hw_device` derzeit **nur für `vaapi`** genutzt.
|
||||||
|
|
||||||
|
#### VAAPI (Linux): Device angeben
|
||||||
|
- Typisch: `hw = vaapi`
|
||||||
|
- Device: **Render-Node** unter `/dev/dri/`
|
||||||
|
|
||||||
|
Meist ist das:
|
||||||
|
- `/dev/dri/renderD128` (sehr häufig)
|
||||||
|
- oder `/dev/dri/renderD129` (wenn mehrere GPUs vorhanden)
|
||||||
|
|
||||||
|
**So findest du die Render Nodes:**
|
||||||
|
```bash
|
||||||
|
ls -l /dev/dri/
|
||||||
|
```
|
||||||
|
|
||||||
|
Beispiel output:
|
||||||
|
- `card0`, `card1` (Display devices)
|
||||||
|
- `renderD128`, `renderD129` (Render nodes, die wir wollen)
|
||||||
|
|
||||||
|
**Empfehlung:** immer den `renderD*` Node verwenden, nicht `card*`.
|
||||||
|
|
||||||
|
In `settings.ini`:
|
||||||
|
```ini
|
||||||
|
[ffmpeg]
|
||||||
|
hw = vaapi
|
||||||
|
hw_device = /dev/dri/renderD128
|
||||||
|
```
|
||||||
|
|
||||||
|
#### QSV (Intel Quick Sync): Device meist leer lassen
|
||||||
|
Im Script wird QSV aktuell so genutzt:
|
||||||
|
- `-hwaccel qsv`
|
||||||
|
|
||||||
|
In den meisten Fällen brauchst du **kein** `hw_device`.
|
||||||
|
Wenn du später tiefer optimieren willst (z.B. spezielles QSV device), müsste man das Script erweitern.
|
||||||
|
|
||||||
|
In `settings.ini`:
|
||||||
|
```ini
|
||||||
|
[ffmpeg]
|
||||||
|
hw = qsv
|
||||||
|
hw_device =
|
||||||
|
```
|
||||||
|
|
||||||
|
#### CUDA (NVIDIA): Device leer lassen
|
||||||
|
CUDA/NVDEC benötigt typischerweise kein Device-Argument (Treiber entscheidet).
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[ffmpeg]
|
||||||
|
hw = cuda
|
||||||
|
hw_device =
|
||||||
|
```
|
||||||
|
|
||||||
|
#### D3D11VA (Windows): Device leer lassen
|
||||||
|
Direct3D 11 VA ist ein Windows-API; Device-Auswahl erfolgt automatisch.
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[ffmpeg]
|
||||||
|
hw = d3d11va
|
||||||
|
hw_device =
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Troubleshooting Hardware-Decode
|
||||||
|
|
||||||
|
### 1) Erst testen, ob ffmpeg den hwaccel kennt
|
||||||
|
```bash
|
||||||
|
ffmpeg -hide_banner -hwaccels
|
||||||
|
```
|
||||||
|
Da sollte z.B. `vaapi`, `qsv`, `cuda`, `d3d11va` auftauchen.
|
||||||
|
|
||||||
|
### 2) Linux VAAPI: Treiber/Stack
|
||||||
|
- Intel: `intel-media-driver` (neuere Gen) oder `i965-va-driver` (älter)
|
||||||
|
- AMD: Mesa VAAPI (`mesa-va-drivers`)
|
||||||
|
|
||||||
|
Test:
|
||||||
|
```bash
|
||||||
|
vainfo
|
||||||
|
```
|
||||||
|
Wenn `vainfo` schon Fehler wirft, wird ffmpeg mit `vaapi` auch zicken.
|
||||||
|
|
||||||
|
### 3) NVIDIA CUDA/NVDEC
|
||||||
|
Wenn `ffmpeg -hwaccels` kein `cuda` zeigt, ist dein ffmpeg-Build evtl. ohne CUDA.
|
||||||
|
|
||||||
|
### 4) Wenn’s instabil ist
|
||||||
|
Setze erst mal:
|
||||||
|
```ini
|
||||||
|
[ffmpeg]
|
||||||
|
hw = none
|
||||||
|
```
|
||||||
|
und prüfe, ob alles stabil durchläuft. Danach wieder mit `hw` testen.
|
||||||
|
|
||||||
|
### 5) Mehrere GPUs
|
||||||
|
- Linux: VAAPI über `renderD128`/`renderD129` zielst du die GPU indirekt an.
|
||||||
|
- Windows: D3D11VA/CUDA/QSV nutzen i.d.R. automatisch die passende Hardware; explizite Auswahl wäre möglich, ist aber derzeit im Script nicht vorgesehen.
|
||||||
Reference in New Issue
Block a user