Sous-titres roumains automatiques dans Jellyfin : subs.ro et OpenSubtitles, calés sur votre release

La plupart des sous-titres roumains dérivent parce qu’ils ont été faits pour une autre release. Rosub associe le bon fichier et vérifie la synchro avec ffprobe avant de l’enregistrer.

Si vous faites tourner Jellyfin pour un foyer roumain — le vôtre ici, ou de la famille en Allemagne, en Espagne, en France ou en Italie qui regarde la même bibliothèque par internet — vous avez probablement vécu ceci : le sous-titre se charge, puis glisse lentement hors de la synchro, et à la vingtième minute le dialogue a une scène de retard. Neuf fois sur dix, le fichier est bon et le sous-titre est bon ; ils ont simplement été faits pour des releases différentes.

Ce tutoriel traite la cause, pas le symptôme. Rosub est un plugin Jellyfin qui cherche des sous-titres roumains sur subs.ro et choisit le fichier fait pour votre release, puis vérifie la synchro par rapport au sous-titre déjà incrusté dans votre vidéo avant d’enregistrer quoi que ce soit.

Pourquoi les sous-titres dérivent

Un sous-titre est calé sur un montage précis d’un film ou d’un épisode. Changez le groupe de release, la source (WEB-DL, BluRay, HDTV), le service d’origine ou la fréquence d’images, et les timings ne correspondent plus. Parfois la dérive est un décalage constant — tout le fichier est en avance de deux secondes — et parfois elle grandit au fil du film, ce qui signifie que les deux versions ont des montages différents et qu’aucun simple décalage ne les sauvera.

Une recherche de sous-titres qui ne compare que le titre et l’année vous remettra sans hésiter un fichier fait pour une autre release. C’est la dérive que vous constatez. La solution est de faire correspondre le nom de release et de vérifier la synchro avant d’enregistrer le sous-titre.

Prérequis

  • Jellyfin Server 12.2 ou plus récent, sous Linux, Windows ou Docker.
  • Une clé API subs.ro gratuite, depuis subs.ro sous My account → API.
  • En option : une clé API OpenSubtitles.com gratuite, utilisée uniquement en solution de repli.
  • Le ffprobe du serveur, que Rosub utilise pour la vérification de synchro.
  • Un compte MediaLab Works avec une licence qui couvre le plugin (abonnement, licence à vie dans sa fenêtre de mise à jour, le bundle Jellyfin, ou l’essai gratuit de 30 jours).

Étape 1 — Obtenir vos propres clés API

Rien n’est fourni : vous utilisez vos propres clés. Créez d’abord la clé subs.ro et conservez-la en lieu sûr ; vous la collerez dans Jellyfin à l’étape 3. Si vous voulez aussi la solution de repli OpenSubtitles, créez-y également une clé API.

Les deux services ont des limites de requêtes quotidiennes. subs.ro autorise 300 requêtes par jour et par clé, et Rosub reste sous le budget que vous configurez, en gardant une réserve pour les éléments nouvellement ajoutés. Les valeurs par défaut sont 250 requêtes par jour pour subs.ro et 5 pour OpenSubtitles, ce qui suffit largement pour la bibliothèque d’un foyer normal.

Étape 2 — Installer le plugin

La méthode recommandée est votre dépôt privé de plugins, pour que Jellyfin installe et mette à jour Rosub tout seul :

  1. Dans votre compte MediaLab Works, ouvrez Licenses → Jellyfin plugin repository et cliquez sur Create address. Copiez l’adresse — elle est privée, ne la partagez pas.
  2. Dans Jellyfin, allez dans Dashboard → Plugins → Repositories, cliquez sur +, donnez-lui un nom (par exemple MediaLab Works), collez l’adresse et enregistrez.
  3. Dans Dashboard → Plugins → Catalog, trouvez Rosub by MediaLab, cliquez sur Install, puis redémarrez Jellyfin.

Il existe aussi un catalogue public à l’adresse https://medialab.works/jellyfin/manifest.json, et une installation manuelle par zip si vous préférez ; le guide détaille les deux, y compris les chemins du dossier de plugins pour Linux, Docker et Windows.

Étape 3 — Activer la licence et saisir vos clés

  1. Ouvrez Dashboard → Plugins → Rosub by MediaLab et cliquez sur Open License page. Collez votre clé de licence et cliquez sur Activate with key. Pas encore de clé ? La même page lance l’essai gratuit de 30 jours.
  2. Ouvrez Dashboard → Rosub, saisissez votre clé API subs.ro, puis enregistrez. Sans elle, le plugin ne fait rien.
  3. Choisissez les bibliothèques concernées (vide signifie toutes les bibliothèques de films et de séries) et le mode de correspondance : strict (par défaut), relaxed ou any.
  4. Ajoutez éventuellement la solution de repli OpenSubtitles.com avec votre propre clé API, ainsi que le budget quotidien de requêtes et la réserve pour les nouveaux éléments.

Vos clés et le mot de passe du compte OpenSubtitles sont stockés chiffrés au repos dans secrets.enc.json dans le dossier de données du plugin et ne sont jamais envoyés au navigateur — la page affiche seulement « set ✓ ».

Étape 4 — Comment la correspondance par release choisit le bon fichier

C’est le cœur du sujet. Rosub découpe votre nom de fichier en titre, année, saison/épisode, résolution, source (WEB-DL, BluRay, HDTV), service, codec et groupe de release, et le compare à chaque sous-titre trouvé sur subs.ro. En mode strict, il n’accepte que les sous-titres faits pour la même release, le même groupe ou la même source de streaming. C’est ce qui empêche la dérive avant même qu’elle commence : un fichier WEB-DL reçoit le sous-titre WEB-DL, pas celui du BluRay.

Si votre bibliothèque est mixte avec des noms inhabituels, les modes relaxed ou any offrent plus de candidats — mais strict est le bon défaut, et c’est lui qui évite les ennuis à une famille de la diaspora qui regarde la même bibliothèque depuis trois pays.

Étape 5 — La vérification de synchro avec ffprobe

Quand votre vidéo contient une piste de sous-titres incrustée, Rosub compare la synchro du candidat avec celle-ci à l’aide du ffprobe du serveur. Un décalage constant — tout le fichier en avance ou en retard de quelques secondes — est corrigé automatiquement. Un sous-titre désynchronisé d’une manière qu’un décalage constant ne peut pas corriger est rejeté, et le journal de la page du plugin vous explique pourquoi.

Soyez réaliste sur la limite : la vérification de synchro corrige les décalages constants. Elle ne peut pas réparer un sous-titre fait pour un autre montage du film, où la dérive grandit au fil du film. Dans ce cas, il vous faut un autre candidat, et c’est exactement le rôle de la correspondance par release.

Étape 6 — Nouveaux éléments et rattrapage

  • À l’arrivée : quelques minutes après que Jellyfin a identifié un nouveau film ou épisode, Rosub cherche sur subs.ro par identifiant IMDb/TMDb et enregistre le sous-titre à côté de la vidéo sous le nom Name.ro.srt.
  • Quotidien : la tâche planifiée Missing Romanian subtitles s’exécute à 04:00 et réessaie tout ce qui n’a pas de sous-titre roumain, du plus récent au plus ancien. Les éléments encore introuvables sont retentés après quelques jours, car les sous-titres apparaissent souvent plusieurs jours après une sortie. Vous pouvez aussi lancer la tâche à la main depuis Dashboard → Scheduled Tasks.

Étape 7 — Recherche manuelle et diacritiques corrects

Parfois vous voulez intervenir. Dans Edit subtitles → Search d’un élément, les résultats Rosub apparaissent à côté des autres fournisseurs. Les sous-titres sont enregistrés comme de simples fichiers externes .srt en UTF-8 avec les diacritiques roumains corrects — ș et ț avec la virgule sous la lettre, et non les anciennes formes à cédille.

Astuces et dépannage

  • Rien n’est téléchargé. Vérifiez la clé API et si le budget quotidien est épuisé. subs.ro répond 429 à la limite ; le compteur se réinitialise chaque jour.
  • Quota atteint. Baissez le budget quotidien ou laissez la réserve faire son travail pour les nouveaux éléments ; la tâche de rattrapage prendra le reste demain.
  • Le sous-titre ne s’affiche pas. Jellyfin reconnaît ro et rum comme du roumain. Si l’élément était ouvert dans un client pendant le téléchargement du sous-titre, rafraîchissez ses métadonnées.
  • Sous-titres invisibles sur une TV. Rosub écrit de simples fichiers externes .srt, qui s’affichent dans tout client affichant les sous-titres externes. Les applications natives individuelles ne sont pas testées ; si une application de TV se comporte mal, essayez Jellyfin Web sur le même réseau pour confirmer que le fichier est bien là.
  • Lisez le journal. La page du plugin liste ce qui a été téléchargé, rejeté et pourquoi — le moyen le plus rapide de comprendre un élément récalcitrant.
  • Confidentialité. Pour subs.ro, Rosub n’envoie que l’identifiant IMDb ou TMDb et la langue — ni titres, ni noms de fichiers, ni noms de release, ni hashes. La correspondance par release et la vérification de synchro se font localement avec ffprobe.

Conclusion

La dérive est un problème de correspondance, pas un problème de sous-titre. Installez Rosub, saisissez votre propre clé subs.ro gratuite, gardez la correspondance stricte, et laissez la vérification de synchro par ffprobe rejeter tout ce qui glisserait hors de la synchro. Les nouveaux éléments sont traités en quelques minutes, la tâche de 04:00 remplit le rattrapage, et votre bibliothèque obtient des sous-titres roumains avec les bons ș et ț. Commencez sur la page produit, suivez le guide, et consultez le changelog quand une mise à jour arrive. Des questions ? La base de connaissances, la FAQ et la page contact sont là.

Cet article a été rédigé avec l’aide de l’IA à partir de la documentation de nos produits ou des sources indiquées et vérifié automatiquement avant publication.

À lire ensuite

Vous utilisez Emby, Jellyfin ou Nextcloud ?

Nos plugins et applications ajoutent la TV en direct, les sous-titres, l’inscription et la sécurité à votre propre serveur, avec un essai gratuit.