3.6 KiB
Encode-Planung
encodePlan.js analysiert die MediaInfo-Ausgabe und erstellt einen strukturierten Encode-Plan mit Track-Auswahl.
Ablauf
MediaInfo-JSON
↓
Track-Parsing (Video, Audio, Untertitel)
↓
Sprach-Normalisierung (ISO 639-1 → 639-3)
↓
Codec-Klassifizierung (copy-kompatibel / transcode)
↓
Encode-Plan generieren
↓
Benutzer-Review im Frontend
↓
HandBrake-CLI-Argumente aufbauen
Encode-Plan-Format
Der generierte Plan wird als JSON im Job-Datensatz gespeichert:
{
"inputFile": "/mnt/raw/Inception_t00.mkv",
"outputFile": "/mnt/movies/Inception (2010).mkv",
"preset": "H.265 MKV 1080p30",
"audioTracks": [
{
"index": 1,
"codec": "dts",
"language": "deu",
"channels": 6,
"label": "Deutsch (DTS, 5.1)",
"copyCompatible": false,
"selected": true
},
{
"index": 2,
"codec": "truehd",
"language": "eng",
"channels": 8,
"label": "English (TrueHD, 7.1)",
"copyCompatible": true,
"selected": true
}
],
"subtitleTracks": [
{
"index": 1,
"language": "deu",
"label": "Deutsch",
"selected": true
}
]
}
Sprach-Normalisierung
MediaInfo liefert Sprachcodes in verschiedenen Formaten. encodePlan.js normalisiert diese auf ISO 639-3:
| MediaInfo-Output | Normalisiert |
|---|---|
de |
deu |
German |
deu |
en |
eng |
English |
eng |
fr |
fra |
ja |
jpn |
Codec-Klassifizierung
HandBrake kann einige Codecs direkt kopieren (ohne Transcoding):
| Codec | Copy-kompatibel | HandBrake-Encoder |
|---|---|---|
ac3 |
✅ Ja | copy:ac3 |
aac |
✅ Ja | copy:aac |
mp3 |
✅ Ja | copy:mp3 |
truehd |
✅ Ja | copy:truehd |
eac3 |
✅ Ja | copy:eac3 |
dts |
❌ Nein | ffaac (transcode) |
dtshd |
❌ Nein | ffaac (transcode) |
!!! info "DTS-Transcoding" HandBrake unterstützt kein DTS-Passthrough in den Standard-Builds. DTS-Tracks werden zu AAC transcodiert, es sei denn, du verwendest einen speziellen HandBrake-Build mit DTS-Unterstützung.
HandBrake-CLI-Argumente
Aus dem Encode-Plan generiert commandLine.js die HandBrake-Argumente:
HandBrakeCLI \
--input "/mnt/raw/Inception_t00.mkv" \
--output "/mnt/movies/Inception (2010).mkv" \
--preset "H.265 MKV 1080p30" \
--audio 1,2 \
--aencoder copy:truehd,ffaac \
--subtitle 1 \
--subtitle-default 1
Zusätzliche Argumente
Über die Einstellung handbrake_extra_args können beliebige HandBrake-Argumente ergänzt werden:
--crop 0:0:0:0 --loose-anamorphic
Dateiname-Template
Die Ausgabedatei wird über das konfigurierte Template benannt:
Template: {title} ({year})
Ergebnis: Inception (2010).mkv
Verfügbare Platzhalter:
| Platzhalter | Wert |
|---|---|
{title} |
Filmtitel von OMDb |
{year} |
Erscheinungsjahr |
{imdb_id} |
IMDb-ID (z.B. tt1375666) |
{type} |
movie oder series |
Sonderzeichen im Dateinamen werden automatisch sanitisiert (:, /, ? etc. werden entfernt oder ersetzt).
Re-Encoding
Abgeschlossene Jobs können mit geänderten Einstellungen neu encodiert werden:
- Job in der History auswählen
- "Re-Encode" klicken
- Neue Track-Auswahl treffen (oder bestehende übernehmen)
- Encoding startet mit aktuellen Einstellungen
Dies ist nützlich, wenn sich das HandBrake-Preset oder die Track-Auswahl geändert hat, ohne die zeitintensive Ripping-Phase zu wiederholen.