Wenn du Jellyfin für einen rumänischen Haushalt betreibst — deinen eigenen hier oder Familie in Deutschland, Spanien, Frankreich oder Italien, die dieselbe Bibliothek über das Internet schaut — hast du das vermutlich schon erlebt: Der Untertitel lädt, dann rutscht er langsam aus dem Takt, und in Minute zwanzig ist der Dialog eine ganze Szene hinterher. Neun von zehn Malen ist die Datei in Ordnung und der Untertitel auch; sie wurden einfach für verschiedene Releases erstellt.
In dieser Anleitung geht es darum, die Ursache zu beheben, nicht das Symptom. Rosub ist ein Jellyfin-Plugin, das auf subs.ro nach rumänischen Untertiteln sucht und die Datei auswählt, die für dein Release erstellt wurde, und dann das Timing gegen den bereits in deinem Video eingebetteten Untertitel prüft, bevor irgendetwas gespeichert wird.
Warum Untertitel aus dem Takt geraten
Ein Untertitel ist auf einen bestimmten Schnitt eines Films oder einer Episode abgestimmt. Ändere die Release-Gruppe, die Quelle (WEB-DL, BluRay, HDTV), den Dienst, von dem sie stammt, oder die Bildrate, und die Cue-Zeiten passen nicht mehr. Manchmal ist der Versatz ein konstanter Offset — die ganze Datei ist zwei Sekunden zu früh —, und manchmal wächst er über die Laufzeit, was bedeutet, dass die beiden Versionen unterschiedliche Schnitte haben und keine einfache Verschiebung sie retten wird.
Eine Untertitersuche, die nur nach Titel und Jahr sucht, gibt dir ohne Weiteres eine Datei, die für ein anderes Release erstellt wurde. Das ist der Versatz, den du siehst. Die Lösung ist, nach dem Release-Namen zu suchen und das Timing zu prüfen, bevor der Untertitel gespeichert wird.
Voraussetzungen
- Jellyfin Server 12.2 oder neuer, unter Linux, Windows oder Docker.
- Ein kostenloser subs.ro API-Schlüssel, zu finden auf subs.ro unter My account → API.
- Optional: ein kostenloser OpenSubtitles.com API-Schlüssel, der nur als Ausweichquelle dient.
- Das
ffprobedes Servers, das Rosub für die Sync-Prüfung verwendet. - Ein MediaLab Works Konto mit einer Lizenz, die das Plugin abdeckt (Abo, Lifetime-Lizenz innerhalb ihres Update-Zeitraums, das Jellyfin-Bundle oder die kostenlose 30-Tage-Testversion).
Schritt 1 — Hol dir deine eigenen API-Schlüssel
Nichts ist mitgeliefert: Du verwendest deine eigenen Schlüssel. Erstelle zuerst den subs.ro-Schlüssel und bewahre ihn sicher auf; du fügst ihn in Schritt 3 in Jellyfin ein. Wenn du auch die OpenSubtitles-Ausweichquelle möchtest, erstelle dort ebenfalls einen API-Schlüssel.
Beide Dienste haben tägliche Anfrage-Limits. subs.ro erlaubt 300 Anfragen pro Tag und Schlüssel, und Rosub bleibt unter dem Budget, das du konfigurierst, und hält eine Reserve für neu hinzugefügte Einträge zurück. Die Standardwerte sind 250 Anfragen pro Tag für subs.ro und 5 für OpenSubtitles, was für eine normale Haushaltsbibliothek mehr als genug ist.
Schritt 2 — Installiere das Plugin
Der empfohlene Weg ist dein privates Plugin-Repository, damit Jellyfin Rosub selbst installiert und aktualisiert:
- Öffne in deinem MediaLab Works Konto Licenses → Jellyfin plugin repository und klicke auf Create address. Kopiere die Adresse — sie ist privat, also teile sie nicht.
- Gehe in Jellyfin zu Dashboard → Plugins → Repositories, klicke auf +, gib einen Namen ein (zum Beispiel MediaLab Works), füge die Adresse ein und speichere.
- Suche in Dashboard → Plugins → Catalog nach Rosub by MediaLab, klicke auf Install und starte Jellyfin neu.
Es gibt auch einen öffentlichen Katalog unter https://medialab.works/jellyfin/manifest.json und eine manuelle Installation per Zip, wenn dir das lieber ist; die Anleitung beschreibt beides, einschließlich der Plugin-Ordnerpfade für Linux, Docker und Windows.
Schritt 3 — Aktiviere die Lizenz und gib deine Schlüssel ein
- Öffne Dashboard → Plugins → Rosub by MediaLab und klicke auf Open License page. Füge deinen Lizenzschlüssel ein und klicke auf Activate with key. Noch kein Schlüssel? Auf derselben Seite startest du die kostenlose 30-Tage-Testversion.
- Öffne Dashboard → Rosub und gib deinen subs.ro API key ein, dann speichere. Ohne ihn tut das Plugin nichts.
- Wähle die Bibliotheken aus, in denen es arbeiten soll (leer bedeutet alle Film- und Serienbibliotheken), und den Match-Modus: strict (der Standard), relaxed oder any.
- Füge optional die OpenSubtitles.com-Ausweichquelle mit deinem eigenen API-Schlüssel hinzu, dazu das tägliche Anfrage-Budget und die Reserve für neue Einträge.
Deine Schlüssel und das Passwort des OpenSubtitles-Kontos werden verschlüsselt im Ruhezustand in secrets.enc.json im Plugin-Datenordner gespeichert und nie an den Browser gesendet — die Seite zeigt nur "set ✓".
Schritt 4 — Wie das Release-Matching die richtige Datei auswählt
Das ist das Herzstück. Rosub zerlegt deinen Dateinamen in Titel, Jahr, Staffel/Episode, Auflösung, Quelle (WEB-DL, BluRay, HDTV), Dienst, Codec und Release-Gruppe und vergleicht das mit jedem Untertitel, den es auf subs.ro findet. Im Modus strict akzeptiert es nur Untertitel, die für dasselbe Release, dieselbe Gruppe oder dieselbe Streaming-Quelle erstellt wurden. Das verhindert den Versatz, bevor er entsteht: Eine WEB-DL-Datei bekommt den WEB-DL-Untertitel, nicht den BluRay-Untertitel.
Wenn du eine gemischte Bibliothek mit ungewöhnlicher Benennung hast, geben dir die Modi relaxed oder any mehr Kandidaten — aber strict ist der richtige Standard, und er ist es, der eine Diaspora-Familie, die dieselbe Bibliothek aus drei Ländern schaut, aus Schwierigkeiten heraushält.
Schritt 5 — Die Sync-Prüfung mit ffprobe
Wenn dein Video eine eingebettete Untertitelspur hat, vergleicht Rosub das Timing des Kandidaten mit dieser Spur mithilfe des ffprobe des Servers. Ein konstanter Offset — die ganze Datei ein paar Sekunden zu früh oder zu spät — wird automatisch korrigiert. Ein Untertitel, der so aus dem Takt ist, dass eine konstante Verschiebung ihn nicht reparieren kann, wird abgelehnt, und das Journal auf der Plugin-Seite sagt dir, warum.
Sei realistisch, was die Grenze angeht: Die Sync-Prüfung korrigiert konstante Offsets. Sie kann keinen Untertitel reparieren, der für einen anderen Schnitt des Films erstellt wurde, bei dem der Versatz über die Laufzeit wächst. In diesem Fall willst du einen anderen Kandidaten, und genau dafür ist das Release-Matching da.
Schritt 6 — Neue Einträge und der Rückstand
- Bei Eingang: Wenige Minuten, nachdem Jellyfin einen neuen Film oder eine neue Episode erkannt hat, sucht Rosub auf subs.ro nach IMDb-/TMDb-ID und speichert den Untertitel neben dem Video als
Name.ro.srt. - Täglich: Der geplante Task Missing Romanian subtitles läuft um 04:00 und versucht erneut alles ohne rumänischen Untertitel, das Neueste zuerst. Einträge, die noch nicht gefunden wurden, werden nach ein paar Tagen erneut versucht, weil Untertitel oft erst Tage nach einem Release erscheinen. Du kannst den Task auch manuell unter Dashboard → Scheduled Tasks starten.
Schritt 7 — Manuelle Suche und korrekte diakritische Zeichen
Manchmal möchtest du eingreifen. In Edit subtitles → Search eines Eintrags erscheinen Rosub-Ergebnisse neben denen der anderen Anbieter. Untertitel werden als gewöhnliche externe .srt-Dateien in UTF-8 mit korrekten rumänischen diakritischen Zeichen gespeichert — ș und ț mit Komma darunter, nicht die alten Cedilla-Formen.
Tipps und Fehlerbehebung
- Es wird nichts heruntergeladen. Prüfe den API-Schlüssel und ob das Tagesbudget aufgebraucht ist. subs.ro antwortet am Limit mit 429; der Zähler wird jeden Tag zurückgesetzt.
- Kontingent erreicht. Senke das Tagesbudget oder lass die Reserve für neue Einträge ihre Arbeit tun; der Rückstands-Task holt den Rest morgen.
- Der Untertitel wird nicht angezeigt. Jellyfin erkennt
roundrumals Rumänisch. Wenn der Eintrag in einem Client geöffnet war, während der Untertitel heruntergeladen wurde, aktualisiere seine Metadaten. - Untertitel erscheinen nicht auf einem Fernseher. Rosub schreibt einfache externe
.srt-Dateien, die in jedem Client angezeigt werden, der externe Untertitel darstellt. Einzelne native Apps werden nicht getestet; wenn sich eine TV-App seltsam verhält, probiere Jellyfin Web im selben Netzwerk, um zu bestätigen, dass die Datei vorhanden ist. - Lies das Journal. Die Plugin-Seite listet auf, was heruntergeladen, abgelehnt und warum — der schnellste Weg, einen hartnäckigen Eintrag zu verstehen.
- Datenschutz. Für subs.ro sendet Rosub nur die IMDb- oder TMDb-ID und die Sprache — keine Titel, Dateinamen, Release-Namen oder Hashes. Release-Matching und Sync-Prüfung laufen lokal mit ffprobe.
Fazit
Versatz ist ein Matching-Problem, kein Untertitelproblem. Installiere Rosub, gib deinen eigenen kostenlosen subs.ro-Schlüssel ein, behalte strict Matching bei und lass die ffprobe-Sync-Prüfung alles ablehnen, was aus dem Takt geraten würde. Neue Einträge werden innerhalb von Minuten behandelt, der 04:00-Task füllt den Rückstand auf, und deine Bibliothek bekommt rumänische Untertitel mit korrektem ș und ț. Starte auf der Produktseite, folge der Anleitung und schau ins Changelog, wenn ein Update erscheint. Fragen? Die Wissensdatenbank, die FAQ und Kontakt sind für dich da.