Doku aktualisiert: v2.4.0 + v2.5.0 Changelog, README mit Unraid-Anleitung
- CHANGELOG: v2.4.0 (Player, Import-Zuordnung, ENV-Refactoring, Audio-Fix) - CHANGELOG: v2.5.0 (GPU-Fix, Entrypoint, Unraid-Template, AV1 10-Bit) - README: Unraid-Installationsanleitung, VK_* ENV-Tabelle, GPU-Erkennung - README: Video-Player Feature, Streaming-API, neue Import-Endpoints Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
0a2372cb5c
commit
178f11872e
2 changed files with 167 additions and 37 deletions
96
CHANGELOG.md
96
CHANGELOG.md
|
|
@ -2,6 +2,102 @@
|
|||
|
||||
Alle relevanten Aenderungen am VideoKonverter-Projekt.
|
||||
|
||||
## [2.5.0] - 2026-02-24
|
||||
|
||||
### GPU & Deployment
|
||||
|
||||
**Intel A380 GPU-Konfiguration**
|
||||
- GPU-Device auf renderD129 (Intel A380) korrigiert - renderD128 war AMD auf Eddys Unraid
|
||||
- GPU-Erkennung per `/sys/class/drm/renderD*/device/uevent` statt `vainfo`
|
||||
- `VK_GPU_DEVICE` Umgebungsvariable statt hardcoded Device-Mapping
|
||||
- AV1 10-Bit (`gpu_av1_10bit`) als Standard-Preset (bessere Qualitaet bei gleichem Speed)
|
||||
|
||||
**Docker Entrypoint**
|
||||
- Neues `entrypoint.sh`: Kopiert Default-Configs (`presets.yaml`, `settings.yaml`) automatisch ins gemountete cfg-Volume bei Erstinstallation
|
||||
- `cfg_defaults/` Verzeichnis im Image als Backup der Default-Konfigdateien
|
||||
- `Config._load_presets()` mit Fallback auf `cfg_defaults` falls presets.yaml fehlt
|
||||
- Behebt leeres Preset-Dropdown auf Unraid bei frisch gemounteten Volumes
|
||||
|
||||
**Unraid Docker-Template**
|
||||
- Neue `unraid/my-VideoKonverter.xml` fuer Unraid WebGUI-Installation
|
||||
- Alle ENV-Variablen mit Defaults vorkonfiguriert
|
||||
- GPU-Device, Pfad-Mappings, DB-Konfiguration voreingestellt
|
||||
- ExtraParams fuer `--group-add video --device=/dev/dri:/dev/dri`
|
||||
|
||||
**Startseite**
|
||||
- Redirect von `/` auf `/library` statt Dashboard
|
||||
|
||||
### Geaenderte Dateien
|
||||
- `Dockerfile` - cfg_defaults Sicherung, entrypoint.sh statt CMD
|
||||
- `entrypoint.sh` - NEU: Default-Config-Kopie bei Erststart
|
||||
- `docker-compose.yml` - VK_GPU_DEVICE renderD129, /dev/dri komplett, gpu_av1_10bit Default
|
||||
- `app/config.py` - _load_presets() mit cfg_defaults Fallback
|
||||
- `app/routes/pages.py` - Startseite Redirect auf /library
|
||||
- `unraid/my-VideoKonverter.xml` - NEU: Unraid Docker-Template
|
||||
|
||||
---
|
||||
|
||||
## [2.4.0] - 2026-02-24
|
||||
|
||||
### Video-Player & Streaming
|
||||
|
||||
**Browser-Streaming**
|
||||
- Video-Player mit ffmpeg-Transcoding-Stream (Video copy + Audio->AAC Stereo)
|
||||
- Unterstuetzt Formate die Browser nicht nativ abspielen (EAC3, DTS, AC3, TrueHD)
|
||||
- Fragmented MP4 mit `frag_keyframe+empty_moov+faststart`, chunked Transfer-Encoding
|
||||
- Endpoint: `GET /api/library/videos/{id}/stream?t=0`
|
||||
|
||||
**Play-/Delete-Buttons**
|
||||
- Play-Button bei jedem Video in Serien-, Film- und Ordner-Ansichten
|
||||
- Delete-Button zum Loeschen einzelner Videos (DB-Eintrag + Datei auf Disk)
|
||||
- Bestaetigungs-Dialog vor dem Loeschen
|
||||
|
||||
### Import-System
|
||||
|
||||
**Nicht-erkannte Dateien zuordnen**
|
||||
- Modal fuer nicht-erkannte Dateien: Serie/Staffel/Episode manuell zuweisen oder ueberspringen
|
||||
- Import-Start blockiert solange ungeloeste Items vorhanden
|
||||
- Duplikat-Erkennung bei erneutem Scan nach Import
|
||||
|
||||
### Technische Aenderungen
|
||||
|
||||
**ENV-Variablen Refactoring**
|
||||
- Alle Umgebungsvariablen mit `VK_*` Prefix (VK_DB_HOST, VK_MODE, VK_PORT etc.)
|
||||
- `_ENV_MAP` in config.py: Zentrales Mapping ENV -> Settings-Pfad mit Typ-Konvertierung
|
||||
- Rueckwaertskompatibilitaet per `_ENV_ALIASES`
|
||||
|
||||
**WebSocket Server-Log Push**
|
||||
- Server-Logs werden per WebSocket an alle Clients gepusht (statt HTTP-Polling)
|
||||
- `WebLogHandler` in api.py schreibt Log-Eintraege in den WebSocket-Manager
|
||||
|
||||
**Audio-Fix**
|
||||
- `channelmap=channel_layout=5.1` Filter fuer libopus bei EAC3/AC3 mit `5.1(side)` Layout
|
||||
- Behebt Encoder-Fehler bei Surround-Audio-Transcoding
|
||||
|
||||
**Ordner-Loeschen Fix**
|
||||
- Filebrowser: Ordner-Loeschen funktioniert jetzt korrekt
|
||||
|
||||
### Geaenderte Dateien
|
||||
- `app/config.py` - ENV-Mapping, VK_* Prefix, Typ-Konvertierung (+180 Z.)
|
||||
- `app/routes/library_api.py` - Video-Stream, Video-Delete, Import-Zuordnung (+200 Z.)
|
||||
- `app/services/importer.py` - Zuordnungs-Modal, Duplikat-Erkennung (+160 Z.)
|
||||
- `app/services/encoder.py` - channelmap 5.1(side) Fix
|
||||
- `app/services/library.py` - Video-Delete, Rescan-Logik (+70 Z.)
|
||||
- `app/static/js/library.js` - Player, Play/Delete-Buttons, Import-Modal (+270 Z.)
|
||||
- `app/static/css/style.css` - Player-Styles, Button-Styles (+50 Z.)
|
||||
- `app/templates/library.html` - Player-Modal, Import-Zuordnungs-Modal (+60 Z.)
|
||||
- `app/templates/base.html` - WebSocket-Log-Push Integration
|
||||
- `app/routes/ws.py` - Server-Log WebSocket-Broadcast
|
||||
- `docker-compose.yml` - VK_* ENV-Variablen
|
||||
|
||||
### Neue API-Endpoints
|
||||
- `GET /api/library/videos/{id}/stream` - Video-Transcoding-Stream
|
||||
- `DELETE /api/library/videos/{id}` - Video loeschen (DB + Datei)
|
||||
- `POST /api/library/import/{id}/assign` - Import-Item manuell zuordnen
|
||||
- `POST /api/library/import/{id}/skip` - Import-Item ueberspringen
|
||||
|
||||
---
|
||||
|
||||
## [2.3.0] - 2026-02-24
|
||||
|
||||
### Import-System Verbesserungen
|
||||
|
|
|
|||
108
README.md
108
README.md
|
|
@ -5,14 +5,20 @@ Web-basierter Video-Konverter mit GPU-Beschleunigung (Intel VAAPI), Video-Biblio
|
|||
## Features
|
||||
|
||||
### Video-Konvertierung
|
||||
- **GPU-Encoding**: Intel VAAPI (AV1, HEVC, H.264) ueber Intel A380
|
||||
- **GPU-Encoding**: Intel VAAPI (AV1, AV1 10-Bit, HEVC, H.264) ueber Intel A380
|
||||
- **CPU-Encoding**: SVT-AV1, x265, x264 als Fallback
|
||||
- **Konfigurierbare Presets**: GPU/CPU, verschiedene Codecs und Qualitaetsstufen
|
||||
- **AV1 10-Bit Standard**: Bessere Qualitaet bei gleichem Speed (p010 Pixel-Format)
|
||||
- **Konfigurierbare Presets**: 7 Presets (4x GPU + 3x CPU)
|
||||
- **Parallele Jobs**: Mehrere Videos gleichzeitig konvertieren
|
||||
- **Audio-Handling**: Alle Spuren behalten (DE+EN), kein Downmix, Opus-Transcoding
|
||||
- **Live-Fortschritt**: WebSocket-basierte Echtzeit-Updates im Dashboard
|
||||
- **Queue-Management**: Drag-and-Drop, Pause, Abbruch, Prioritaeten
|
||||
|
||||
### Video-Player
|
||||
- **Browser-Streaming**: Direktes Abspielen mit ffmpeg-Transcoding (EAC3/DTS/AC3 -> AAC)
|
||||
- **Play-Buttons**: In Serien-, Film- und Ordner-Ansichten
|
||||
- **Delete-Buttons**: Einzelne Videos loeschen (DB + Datei)
|
||||
|
||||
### Video-Bibliothek
|
||||
- **Ordner-Scan**: Konfigurierbare Scan-Pfade fuer Serien und Filme
|
||||
- **Serien-Erkennung**: Automatisch via Ordnerstruktur (`S01E01`, `1x02`, `Staffel/Season XX`)
|
||||
|
|
@ -80,8 +86,11 @@ Web-basierter Video-Konverter mit GPU-Beschleunigung (Intel VAAPI), Video-Biblio
|
|||
video-konverter/
|
||||
├── __main__.py # Einstiegspunkt
|
||||
├── Dockerfile # Ubuntu 24.04 + ffmpeg + Intel GPU
|
||||
├── entrypoint.sh # Default-Configs in Volumes kopieren
|
||||
├── docker-compose.yml # GPU + CPU Profile
|
||||
├── requirements.txt # Python-Abhaengigkeiten
|
||||
├── unraid/
|
||||
│ └── my-VideoKonverter.xml # Unraid Docker-Template
|
||||
├── app/
|
||||
│ ├── server.py # Haupt-Server (aiohttp Application)
|
||||
│ ├── config.py # Settings + Presets laden
|
||||
|
|
@ -131,7 +140,7 @@ video-konverter/
|
|||
### Voraussetzungen
|
||||
- Docker + Docker Compose
|
||||
- MariaDB-Server (extern, z.B. auf Unraid)
|
||||
- Optional: Intel GPU fuer Hardware-Encoding
|
||||
- Optional: Intel GPU fuer Hardware-Encoding (Intel A380 empfohlen)
|
||||
|
||||
### MariaDB einrichten
|
||||
```sql
|
||||
|
|
@ -142,37 +151,53 @@ FLUSH PRIVILEGES;
|
|||
```
|
||||
Die Tabellen werden automatisch beim ersten Start erstellt.
|
||||
|
||||
### Konfiguration
|
||||
In `app/cfg/settings.yaml` anpassen:
|
||||
```yaml
|
||||
database:
|
||||
host: "192.168.155.11"
|
||||
port: 3306
|
||||
user: "video"
|
||||
password: "dein_passwort"
|
||||
database: "video_converter"
|
||||
### Unraid-Installation
|
||||
|
||||
encoding:
|
||||
mode: "cpu" # "gpu" | "cpu" | "auto"
|
||||
gpu_device: "/dev/dri/renderD128"
|
||||
default_preset: "cpu_av1"
|
||||
max_parallel_jobs: 1
|
||||
|
||||
files:
|
||||
target_container: "webm" # "webm" | "mkv" | "mp4"
|
||||
delete_source: false
|
||||
recursive_scan: true
|
||||
|
||||
library:
|
||||
enabled: true
|
||||
tvdb_api_key: "" # Von thetvdb.com
|
||||
tvdb_pin: "" # Subscriber PIN (optional)
|
||||
tvdb_language: "deu" # deu, eng, fra, spa, ita, jpn
|
||||
import_default_mode: "copy" # "copy" | "move"
|
||||
import_naming_pattern: "{series} - S{season:02d}E{episode:02d} - {title}.{ext}"
|
||||
import_season_pattern: "Season {season:02d}"
|
||||
1. Docker-Image laden (Unraid Web-Terminal):
|
||||
```bash
|
||||
docker load -i /mnt/user/downloads/videokonverter-cpu.tar
|
||||
```
|
||||
|
||||
2. XML-Template kopieren:
|
||||
```bash
|
||||
cp /mnt/user/downloads/my-VideoKonverter.xml /boot/config/plugins/dockerMan/templates-user/
|
||||
```
|
||||
|
||||
3. In der Unraid Docker-WebGUI: "Container hinzufuegen" → Template waehlen → Werte anpassen → Starten
|
||||
|
||||
Das Template enthält alle Variablen mit korrekten Defaults.
|
||||
|
||||
### Konfiguration
|
||||
|
||||
Alle Einstellungen sind per **Umgebungsvariablen** (VK_*) konfigurierbar.
|
||||
ENV-Variablen ueberschreiben immer die `settings.yaml`.
|
||||
|
||||
| Variable | Default | Beschreibung |
|
||||
|----------|---------|-------------|
|
||||
| `VK_DB_HOST` | `192.168.155.11` | MariaDB Host |
|
||||
| `VK_DB_PORT` | `3306` | MariaDB Port |
|
||||
| `VK_DB_USER` | `video` | MariaDB Benutzer |
|
||||
| `VK_DB_PASSWORD` | - | MariaDB Passwort |
|
||||
| `VK_DB_NAME` | `video_converter` | Datenbank-Name |
|
||||
| `VK_MODE` | `cpu` | Encoding-Modus: `gpu`, `cpu`, `auto` |
|
||||
| `VK_GPU_DEVICE` | `/dev/dri/renderD129` | GPU Render-Device |
|
||||
| `VK_DEFAULT_PRESET` | `gpu_av1_10bit` | Standard Encoding-Preset |
|
||||
| `VK_MAX_JOBS` | `1` | Max. parallele Jobs |
|
||||
| `VK_TVDB_API_KEY` | - | TVDB API Key |
|
||||
| `VK_TVDB_LANGUAGE` | `deu` | TVDB Sprache |
|
||||
| `VK_LOG_LEVEL` | `INFO` | Log-Level |
|
||||
|
||||
Alternativ kann `app/cfg/settings.yaml` direkt bearbeitet werden.
|
||||
Bei Erstinstallation werden Default-Konfigdateien automatisch ins cfg-Volume kopiert.
|
||||
|
||||
### GPU-Device ermitteln
|
||||
|
||||
Auf dem Host pruefen welches renderD* die Intel GPU ist:
|
||||
```bash
|
||||
cat /sys/class/drm/renderD*/device/uevent | grep -B1 DRIVER
|
||||
```
|
||||
Beispiel: `renderD128` = AMD, `renderD129` = Intel → `VK_GPU_DEVICE=/dev/dri/renderD129`
|
||||
|
||||
### Starten
|
||||
|
||||
**GPU-Modus** (Produktion auf Unraid):
|
||||
|
|
@ -240,6 +265,12 @@ Web-UI: http://localhost:8080
|
|||
| GET | `/api/tvdb/language` | TVDB-Sprache lesen |
|
||||
| PUT | `/api/tvdb/language` | TVDB-Sprache aendern |
|
||||
|
||||
### Streaming
|
||||
| Methode | Pfad | Beschreibung |
|
||||
|---------|------|-------------|
|
||||
| GET | `/api/library/videos/{id}/stream` | Video-Transcoding-Stream (ffmpeg pipe) |
|
||||
| DELETE | `/api/library/videos/{id}` | Video loeschen (DB + Datei) |
|
||||
|
||||
### Import
|
||||
| Methode | Pfad | Beschreibung |
|
||||
|---------|------|-------------|
|
||||
|
|
@ -248,6 +279,8 @@ Web-UI: http://localhost:8080
|
|||
| GET | `/api/library/import/{id}` | Import-Job Status mit Items |
|
||||
| POST | `/api/library/import/{id}/analyze` | Import analysieren |
|
||||
| POST | `/api/library/import/{id}/execute` | Import ausfuehren |
|
||||
| POST | `/api/library/import/{id}/assign` | Item manuell zuordnen |
|
||||
| POST | `/api/library/import/{id}/skip` | Item ueberspringen |
|
||||
|
||||
### System
|
||||
| Methode | Pfad | Beschreibung |
|
||||
|
|
@ -294,12 +327,13 @@ Zwischenspeicher fuer TVDB-Episodendaten (Serie, Staffel, Episode, Name, Ausstra
|
|||
|
||||
## Docker Volumes
|
||||
|
||||
| Volume | Container-Pfad | Beschreibung |
|
||||
|--------|---------------|-------------|
|
||||
| `./app/cfg` | `/opt/video-konverter/app/cfg` | Konfiguration (persistent) |
|
||||
| `./data` | `/opt/video-konverter/data` | Queue-Persistierung |
|
||||
| `./logs` | `/opt/video-konverter/logs` | Server-Logs |
|
||||
| `/mnt` | `/mnt` | Medien-Pfade (1:1 durchgereicht) |
|
||||
| Volume (Host) | Container-Pfad | Beschreibung |
|
||||
|----------------|---------------|-------------|
|
||||
| `./app/cfg` (lokal) / `/mnt/user/appdata/videokonverter/cfg` (Unraid) | `/opt/video-konverter/app/cfg` | Konfiguration (persistent, Defaults werden automatisch kopiert) |
|
||||
| `./data` (lokal) / `/mnt/user/appdata/videokonverter/data` (Unraid) | `/opt/video-konverter/data` | Queue-Persistierung |
|
||||
| `./logs` (lokal) / `/mnt/user/appdata/videokonverter/logs` (Unraid) | `/opt/video-konverter/logs` | Server-Logs |
|
||||
| `/mnt` (lokal) / `/mnt/user` (Unraid) | `/mnt` | Medien-Pfade |
|
||||
| `/dev/dri` | `/dev/dri` | GPU-Devices (fuer VAAPI) |
|
||||
|
||||
|
||||
## Lizenz
|
||||
|
|
|
|||
Loading…
Reference in a new issue