Bugfix and Docs
This commit is contained in:
@@ -1,137 +1,69 @@
|
||||
# HandBrake
|
||||
|
||||
HandBrake encodiert die rohen MKV-Dateien in das gewünschte Format. Ripster nutzt `HandBrakeCLI`.
|
||||
Ripster verwendet `HandBrakeCLI` für Scan und Encode.
|
||||
|
||||
---
|
||||
|
||||
## Verwendeter Befehl
|
||||
## Verwendete Aufrufe
|
||||
|
||||
### Scan (Review-Aufbau)
|
||||
|
||||
```bash
|
||||
HandBrakeCLI --scan --json -i <input> -t 0
|
||||
```
|
||||
|
||||
### Encode (vereinfacht)
|
||||
|
||||
```bash
|
||||
HandBrakeCLI \
|
||||
--input "/mnt/raw/Film_t00.mkv" \
|
||||
--output "/mnt/movies/Film (2010).mkv" \
|
||||
--preset "H.265 MKV 1080p30" \
|
||||
--audio 1,2 \
|
||||
--aencoder copy:ac3,ffaac \
|
||||
--subtitle 1 \
|
||||
--subtitle-default 1
|
||||
-i <input> \
|
||||
-o <output> \
|
||||
-t <titleId> \
|
||||
-Z "<preset>" \
|
||||
<extra-args> \
|
||||
-a <audioTrackIds|none> \
|
||||
-s <subtitleTrackIds|none>
|
||||
```
|
||||
|
||||
Optional ergänzt Ripster:
|
||||
|
||||
- `--subtitle-burned=<id>`
|
||||
- `--subtitle-default=<id>`
|
||||
- `--subtitle-forced=<id>` oder `--subtitle-forced`
|
||||
|
||||
---
|
||||
|
||||
## Presets
|
||||
## Presets auslesen
|
||||
|
||||
HandBrake verwendet **Presets** für vorkonfigurierte Encoding-Einstellungen.
|
||||
|
||||
### Empfohlene Presets
|
||||
|
||||
| Preset | Codec | Auflösung | Für |
|
||||
|--------|-------|----------|-----|
|
||||
| `H.265 MKV 1080p30` | HEVC/H.265 | 1080p | Beste Qualität/Größe |
|
||||
| `H.265 MKV 720p30` | HEVC/H.265 | 720p | Kleinere Dateien |
|
||||
| `H.264 MKV 1080p30` | AVC/H.264 | 1080p | Breiteste Kompatibilität |
|
||||
| `HQ 1080p30 Surround` | HEVC/H.265 | 1080p | Hohe Qualität mit Surround |
|
||||
|
||||
### Alle Presets anzeigen
|
||||
Ripster liest Presets mit:
|
||||
|
||||
```bash
|
||||
HandBrakeCLI --preset-list
|
||||
HandBrakeCLI -z
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Audio-Encoding
|
||||
## Relevante Settings
|
||||
|
||||
### Copy-kompatible Codecs
|
||||
|
||||
HandBrake kann folgende Codecs direkt kopieren (kein Qualitätsverlust):
|
||||
|
||||
| Codec | `--aencoder` Wert |
|
||||
|-------|-----------------|
|
||||
| AC-3 | `copy:ac3` |
|
||||
| AAC | `copy:aac` |
|
||||
| MP3 | `copy:mp3` |
|
||||
| TrueHD | `copy:truehd` |
|
||||
| E-AC-3 | `copy:eac3` |
|
||||
|
||||
### Transcoding
|
||||
|
||||
Codecs die nicht kopiert werden können, werden zu AAC transcodiert:
|
||||
|
||||
| Original | Transcodiert zu |
|
||||
|---------|----------------|
|
||||
| DTS | AAC (`ffaac`) |
|
||||
| DTS-HD | AAC (`ffaac`) |
|
||||
|
||||
---
|
||||
|
||||
## Extra-Argumente
|
||||
|
||||
Über die Einstellung `handbrake_extra_args` können beliebige HandBrake-Argumente hinzugefügt werden:
|
||||
|
||||
```
|
||||
# Cropping deaktivieren
|
||||
--crop 0:0:0:0
|
||||
|
||||
# Loose Anamorphic
|
||||
--loose-anamorphic
|
||||
|
||||
# Bestimmte Qualität setzen
|
||||
--quality 20
|
||||
```
|
||||
| Key | Bedeutung |
|
||||
|-----|-----------|
|
||||
| `handbrake_command` | CLI-Binary |
|
||||
| `handbrake_preset_bluray` / `handbrake_preset_dvd` | profilspezifisches Preset |
|
||||
| `handbrake_extra_args_bluray` / `handbrake_extra_args_dvd` | profilspezifische Zusatzargumente |
|
||||
| `output_extension_bluray` / `output_extension_dvd` | Ausgabeformat |
|
||||
| `handbrake_restart_delete_incomplete_output` | unvollständige Ausgabe bei Neustart löschen |
|
||||
|
||||
---
|
||||
|
||||
## Fortschritts-Parsing
|
||||
|
||||
Ripster parst die HandBrake-Ausgabe auf stderr für die Fortschrittsanzeige:
|
||||
|
||||
```
|
||||
Encoding: task 1 of 1, 73.50 % (45.23 fps, avg 44.12 fps, ETA 00h12m34s)
|
||||
```
|
||||
|
||||
`progressParsers.js` extrahiert:
|
||||
- Prozentzahl
|
||||
- Aktuelle FPS
|
||||
- ETA
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration in Ripster
|
||||
|
||||
| Einstellung | Beschreibung |
|
||||
|------------|-------------|
|
||||
| `handbrake_command` | Pfad/Befehl für `HandBrakeCLI` |
|
||||
| `handbrake_preset` | Preset-Name |
|
||||
| `handbrake_extra_args` | Zusätzliche CLI-Argumente |
|
||||
| `output_extension` | Dateiendung der Ausgabe |
|
||||
Ripster parst HandBrake-Stderr (Prozent/ETA/Detail) und sendet WebSocket-Progress (`PIPELINE_PROGRESS`).
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### HandBrake findet Preset nicht
|
||||
- Preset nicht gefunden: Preset-Namen mit `HandBrakeCLI -z` prüfen
|
||||
- sehr langsames Encoding: Preset/Extra-Args prüfen (z. B. `--encoder-preset`)
|
||||
|
||||
```bash
|
||||
# Preset-Liste anzeigen
|
||||
HandBrakeCLI --preset-list 2>&1 | grep -i "h.265"
|
||||
```
|
||||
|
||||
Preset-Namen sind case-sensitive!
|
||||
|
||||
### Encoding sehr langsam
|
||||
|
||||
```bash
|
||||
# CPU-Encoding-Preset anpassen (schneller = schlechtere Qualität)
|
||||
handbrake_extra_args = --encoder-preset fast
|
||||
```
|
||||
|
||||
Verfügbare Presets: `ultrafast`, `superfast`, `veryfast`, `faster`, `fast`, `medium`, `slow`, `slower`, `veryslow`
|
||||
|
||||
### GPU-Encoding nutzen (NVIDIA)
|
||||
|
||||
```
|
||||
handbrake_preset = H.265 NVENC 1080p
|
||||
```
|
||||
|
||||
Erfordert HandBrake-Build mit NVENC-Unterstützung und NVIDIA-GPU.
|
||||
Das Produktions-Installer-Script `install.sh` bietet eine Option zur Installation eines gebündelten HandBrakeCLI-Binaries mit NVDEC-Unterstützung (NVIDIA GPU-Dekodierung). Diese Option erscheint interaktiv während der Installation.
|
||||
|
||||
@@ -1,160 +1,61 @@
|
||||
# MakeMKV
|
||||
|
||||
MakeMKV analysiert und rippt DVDs und Blu-rays. Ripster nutzt `makemkvcon` (die CLI-Version).
|
||||
Ripster nutzt `makemkvcon` für Disc-Analyse und Rip.
|
||||
|
||||
---
|
||||
|
||||
## Verwendete Befehle
|
||||
## Verwendete Aufrufe
|
||||
|
||||
### Disc-Analyse
|
||||
### Analyse
|
||||
|
||||
```bash
|
||||
makemkvcon -r --cache=1 info disc:0
|
||||
makemkvcon -r info <source>
|
||||
```
|
||||
|
||||
Gibt alle Titel und Playlists der eingelegten Disc aus. Ripster parst diese Ausgabe um die verfügbaren Tracks und Playlists zu bestimmen.
|
||||
`<source>` ist typischerweise:
|
||||
|
||||
**Parameter:**
|
||||
- `-r` – Maschinen-lesbares Ausgabeformat
|
||||
- `--cache=1` – Minimaler Disc-Cache
|
||||
- `info disc:0` – Informationsabfrage für erstes Laufwerk
|
||||
- `disc:<index>` (Auto-Modus)
|
||||
- `dev:/dev/sr0` (explicit)
|
||||
- `file:<path>` (Datei/Ordner-Analyse)
|
||||
|
||||
### MKV-Modus (Standard)
|
||||
### Rip (MKV-Modus)
|
||||
|
||||
```bash
|
||||
makemkvcon mkv disc:0 all /path/to/raw/ \
|
||||
--minlength=900 \
|
||||
-r
|
||||
makemkvcon mkv <source> <title-or-all> <rawDir> [--minlength=...] [...extraArgs]
|
||||
```
|
||||
|
||||
Erstellt MKV-Dateien aus allen Titeln, die länger als 15 Minuten sind.
|
||||
|
||||
**Parameter:**
|
||||
- `mkv` – MKV-Ausgabemodus
|
||||
- `disc:0` – Erstes Disc-Laufwerk
|
||||
- `all` – Alle passenden Titel (nicht nur einen bestimmten)
|
||||
- `--minlength=900` – Mindestlänge in Sekunden (entspricht 15 Minuten)
|
||||
|
||||
### Backup-Modus
|
||||
### Rip (Backup-Modus)
|
||||
|
||||
```bash
|
||||
makemkvcon backup disc:0 /path/to/raw/backup/ \
|
||||
--decrypt \
|
||||
-r
|
||||
```
|
||||
|
||||
Erstellt ein vollständiges Disc-Backup mit Menüs.
|
||||
|
||||
**Parameter:**
|
||||
- `backup` – Backup-Modus
|
||||
- `--decrypt` – Verschlüsselung entfernen
|
||||
|
||||
---
|
||||
|
||||
## Ausgabeformat
|
||||
|
||||
MakeMKV gibt Fortschritt und Status in einem strukturierten Format aus:
|
||||
|
||||
```
|
||||
PRGV:current,total,max → Fortschrittsbalken-Werte
|
||||
PRGT:code,id,"Beschreibung" → Aktueller Task
|
||||
PRGC:code,id,"Beschreibung" → Aktueller Sub-Task
|
||||
MSG:code,flags,count,"Text" → Nachricht
|
||||
```
|
||||
|
||||
Ripster's `progressParsers.js` parst diese Ausgabe für die Live-Fortschrittsanzeige.
|
||||
|
||||
---
|
||||
|
||||
## LibDriveIO-Modus (Pflicht)
|
||||
|
||||
!!! danger "Laufwerk muss im LibDriveIO-Modus betrieben werden"
|
||||
MakeMKV greift auf Discs über **LibDriveIO** zu – eine Bibliothek, die direkt auf Rohdaten des Laufwerks zugreift und den Standard-OS-Treiber umgeht. Ohne diesen Modus kann MakeMKV verschlüsselte Blu-rays (insbesondere UHD) **nicht lesen**.
|
||||
|
||||
### Was ist LibDriveIO?
|
||||
|
||||
LibDriveIO ist MakeMKVs interne Treiberschicht für den direkten Laufwerkszugriff. Sie ermöglicht:
|
||||
|
||||
- Lesen von verschlüsselten Blu-ray-Sektoren (AACS, BD+, AACS2)
|
||||
- Zugriff auf Disc-Strukturen, die über Standard-OS-APIs nicht erreichbar sind
|
||||
- UHD-Blu-ray-Entschlüsselung ohne externe Bibliotheken
|
||||
|
||||
### Voraussetzungen für den LibDriveIO-Modus
|
||||
|
||||
Das Laufwerk muss **LibDriveIO-kompatibel** sein und entsprechend betrieben werden:
|
||||
|
||||
1. **Kompatibles Laufwerk** – Nicht alle Laufwerke unterstützen den Rohdatenzugriff. UHD-kompatible Laufwerke (z. B. LG, Pioneer bestimmter Firmware-Versionen) sind erforderlich.
|
||||
|
||||
2. **Laufwerk-Berechtigungen** – Der Prozess benötigt direkten Zugriff auf das Blockdevice:
|
||||
```bash
|
||||
sudo chmod a+rw /dev/sr0
|
||||
# oder dauerhaft über udev-Regel
|
||||
```
|
||||
|
||||
3. **Kein OS-seitiger Disc-Mount** – Das Laufwerk darf beim Ripping **nicht** durch das OS automatisch gemountet sein (AutoMount deaktivieren):
|
||||
```bash
|
||||
# Automount temporär deaktivieren (GNOME)
|
||||
gsettings set org.gnome.desktop.media-handling automount false
|
||||
```
|
||||
|
||||
### How-To: LibDriveIO einrichten
|
||||
|
||||
Die vollständige Anleitung zur Einrichtung und zu kompatiblen Laufwerken findet sich im offiziellen MakeMKV-Forum:
|
||||
|
||||
[:octicons-link-external-24: MakeMKV Forum – LibDriveIO How-To](https://www.makemkv.com/forum/viewtopic.php?t=18856){ .md-button }
|
||||
|
||||
!!! tip "Prüfen ob LibDriveIO aktiv ist"
|
||||
In der MakeMKV-Ausgabe erscheint beim Laufwerkszugriff `LibDriveIO` statt `LibMMMBD`, wenn der direkte Modus aktiv ist.
|
||||
|
||||
---
|
||||
|
||||
## MakeMKV-Lizenz
|
||||
|
||||
MakeMKV ist **Beta-Software** und kostenlos für den persönlichen Gebrauch während der Beta-Phase. Eine Beta-Lizenz ist regelmäßig im [MakeMKV-Forum](https://www.makemkv.com/forum/viewtopic.php?t=1053) verfügbar.
|
||||
|
||||
Ohne gültige Lizenz können Blu-rays nicht entschlüsselt werden.
|
||||
|
||||
### Lizenz eintragen
|
||||
|
||||
Die Lizenz wird in den MakeMKV-Einstellungen eingetragen (GUI) oder direkt in:
|
||||
|
||||
```
|
||||
~/.MakeMKV/settings.conf
|
||||
```
|
||||
|
||||
```
|
||||
app_Key = "XXXX-XXXX-XXXX-XXXX-XXXX"
|
||||
makemkvcon backup <source> <rawDir> --decrypt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration in Ripster
|
||||
## Registrierungsschlüssel (optional)
|
||||
|
||||
| Einstellung | Beschreibung |
|
||||
|------------|-------------|
|
||||
| `makemkv_command` | Pfad/Befehl für `makemkvcon` |
|
||||
| `makemkv_min_length_minutes` | Mindest-Titellänge (Standard: 15 Min) |
|
||||
| `makemkv_backup_mode` | Backup-Modus statt MKV |
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### MakeMKV erkennt Disc nicht
|
||||
Wenn `makemkv_registration_key` gesetzt ist, führt Ripster vor Analyse/Rip aus:
|
||||
|
||||
```bash
|
||||
# Laufwerk-Berechtigungen prüfen
|
||||
ls -la /dev/sr0
|
||||
sudo chmod a+rw /dev/sr0
|
||||
|
||||
# Oder Benutzer zur Gruppe cdrom hinzufügen
|
||||
sudo usermod -a -G cdrom $USER
|
||||
makemkvcon reg <key>
|
||||
```
|
||||
|
||||
### Langer Analyseprozess
|
||||
---
|
||||
|
||||
Blu-ray-Analyse kann bei Discs mit vielen Playlists 5+ Minuten dauern. Dies ist normal.
|
||||
## Relevante Settings
|
||||
|
||||
### Fehlermeldung: "LibMMBD"
|
||||
| Key | Bedeutung |
|
||||
|-----|-----------|
|
||||
| `makemkv_command` | CLI-Binary |
|
||||
| `makemkv_source_index` | Source-Index im Auto-Modus |
|
||||
| `makemkv_min_length_minutes` | Mindestlaufzeitfilter |
|
||||
| `makemkv_rip_mode_bluray` / `makemkv_rip_mode_dvd` | `mkv` oder `backup` |
|
||||
| `makemkv_analyze_extra_args_bluray` / `_dvd` | Zusatzargs Analyse |
|
||||
| `makemkv_rip_extra_args_bluray` / `_dvd` | Zusatzargs Rip |
|
||||
|
||||
LibMMBD ist MakeMKVs interne Verschlüsselungsbibliothek. Bei Fehlern die MakeMKV-Version aktualisieren.
|
||||
---
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Blu-ray-Backups werden oft für robuste Playlist-Analyse genutzt.
|
||||
- MakeMKV-Ausgaben werden geparst und als `makemkvInfo` im Job gespeichert.
|
||||
|
||||
@@ -1,108 +1,37 @@
|
||||
# MediaInfo
|
||||
|
||||
MediaInfo analysiert die Track-Struktur von Mediendateien. Ripster nutzt es nach dem Ripping um Audio- und Untertitelspuren zu identifizieren.
|
||||
Ripster nutzt `mediainfo` zur JSON-Analyse von Medien-Dateien.
|
||||
|
||||
---
|
||||
|
||||
## Verwendeter Befehl
|
||||
## Aufruf
|
||||
|
||||
```bash
|
||||
mediainfo --Output=JSON /path/to/raw/film.mkv
|
||||
mediainfo --Output=JSON <input>
|
||||
```
|
||||
|
||||
Gibt vollständige Track-Informationen als JSON zurück.
|
||||
Der Input ist typischerweise eine RAW-Datei oder ein vom Workflow gewählter Inputpfad.
|
||||
|
||||
---
|
||||
|
||||
## Ausgabe-Struktur
|
||||
## Verwendung in Ripster
|
||||
|
||||
```json
|
||||
{
|
||||
"media": {
|
||||
"track": [
|
||||
{
|
||||
"@type": "General",
|
||||
"Duration": "8885.042",
|
||||
"Format": "Matroska"
|
||||
},
|
||||
{
|
||||
"@type": "Video",
|
||||
"Format": "HEVC",
|
||||
"Width": "1920",
|
||||
"Height": "1080",
|
||||
"FrameRate": "23.976"
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"StreamOrder": "1",
|
||||
"Format": "TrueHD",
|
||||
"Channels": "8",
|
||||
"Language": "en"
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"StreamOrder": "2",
|
||||
"Format": "AC-3",
|
||||
"Channels": "6",
|
||||
"Language": "de"
|
||||
},
|
||||
{
|
||||
"@type": "Text",
|
||||
"StreamOrder": "1",
|
||||
"Format": "UTF-8",
|
||||
"Language": "de"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
- Track-/Codec-Metadaten für Review-Plan
|
||||
- Fallback-Informationen in bestimmten Analysepfaden
|
||||
- Persistenz als `mediainfoInfo` im Job
|
||||
|
||||
---
|
||||
|
||||
## Verarbeitung in Ripster
|
||||
## Relevante Settings
|
||||
|
||||
`encodePlan.js` verarbeitet die MediaInfo-Ausgabe:
|
||||
|
||||
1. **Track-Extraktion**: Alle Audio- und Untertitel-Tracks werden extrahiert
|
||||
2. **Sprach-Normalisierung**: Sprachcodes werden auf ISO 639-3 normalisiert
|
||||
3. **Codec-Klassifizierung**: Bestimmt ob Codec kopiert oder transcodiert werden kann
|
||||
4. **Track-Labels**: Benutzerfreundliche Bezeichnungen (z.B. "Deutsch (AC-3, 5.1)")
|
||||
|
||||
### Track-Label-Format
|
||||
|
||||
```
|
||||
{Sprache} ({Format}, {Kanäle})
|
||||
```
|
||||
|
||||
Beispiele:
|
||||
- `Deutsch (AC-3, 5.1)`
|
||||
- `English (TrueHD, 7.1)`
|
||||
- `Français (AC-3, 2.0)`
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration in Ripster
|
||||
|
||||
| Einstellung | Beschreibung |
|
||||
|------------|-------------|
|
||||
| `mediainfo_command` | Pfad/Befehl für `mediainfo` |
|
||||
| Key | Bedeutung |
|
||||
|-----|-----------|
|
||||
| `mediainfo_command` | CLI-Binary |
|
||||
| `mediainfo_extra_args_bluray` / `_dvd` | profilspezifische Zusatzargumente |
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### MediaInfo gibt kein JSON aus
|
||||
|
||||
```bash
|
||||
# Version prüfen
|
||||
mediainfo --Version
|
||||
|
||||
# JSON-Ausgabe testen
|
||||
mediainfo --Output=JSON /path/to/test.mkv
|
||||
```
|
||||
|
||||
MediaInfo >= 17.10 wird empfohlen.
|
||||
|
||||
### Sprache als "und" angezeigt
|
||||
|
||||
`und` steht für "undetermined" – die Sprache ist in der MKV-Datei nicht getaggt. Dies ist bei manchen Rips normal. Der Track wird trotzdem angezeigt und kann manuell ausgewählt werden.
|
||||
- JSON-Test: `mediainfo --Output=JSON <datei>`
|
||||
- unbekannte Sprache erscheint oft als `und` (undetermined)
|
||||
|
||||
Reference in New Issue
Block a user