Transcode Doctor pour Jellyfin

Faites tourner le transcodage sur la carte graphique, pas sur le CPU : testez l’accélération matérielle, appliquez les paramètres qui fonctionnent et voyez pourquoi chaque lecture est transcodée.

Hardware acceleration diagnosis on a real server: NVIDIA NVENC, Intel QuickSync and VA-API tested for every codec, with measured speed1 sur 4

Jellyfin ne détecte pas votre carte graphique tout seul : la méthode d’accélération et les codecs se choisissent à la main, et un mauvais choix ou une permission manquante renvoie le transcodage vers le processeur sans aucun avertissement. Transcode Doctor teste ce que votre serveur peut vraiment faire, vous dit ce qui manque et applique les paramètres qui fonctionnent.

Ce qu’il fait

  • Diagnostic de l’accélération matérielle : vérifie ffmpeg, la carte NVIDIA et les périphériques /dev/dri (avec les permissions du processus Jellyfin), puis exécute de courts transcodages de test sur le serveur avec chaque méthode — NVIDIA NVENC, Intel QuickSync et VA-API (Intel / AMD). Chaque méthode est testée en décodage H.264, HEVC, HEVC 10 bits, MPEG-2 (TV), VP9 et AV1 et en encodage H.264 et HEVC, avec la vitesse mesurée. Les clips de test sont générés par ffmpeg dans le dossier de cache de Jellyfin ; vos médias ne sont pas touchés.
  • Problèmes avec la correction exacte : par exemple « Jellyfin ne peut pas accéder à /dev/dri/renderD128 — sudo usermod -aG render jellyfin, puis redémarrez Jellyfin », une carte NVIDIA dont le pilote ne répond pas, ou ffmpeg absent au chemin configuré.
  • Recommandation et application en un clic : la méthode qui fonctionne le mieux, les codecs de décodage qui ont réussi, l’encodage matériel et une estimation du nombre de transcodes 1080p qui peuvent tourner en même temps. Apply the settings les écrit dans les paramètres de transcodage de Jellyfin ; rien ne change tant que vous ne cliquez pas dessus.
  • Rétablissement en un clic : avant l’application, le plugin enregistre vos paramètres de transcodage précédents ; Restore the previous settings les rétablit exactement.
  • Pourquoi il transcode : les lectures transcodées récentes, chacune avec les raisons de Jellyfin expliquées en langage clair et ce qui peut être fait (par exemple des sous-titres PGS incrustés, du HDR sur un écran SDR, la limite de débit de l’application). Jusqu’à 500 lectures sont conservées.
  • Alerte de repli sur le CPU : une entrée dans le journal d’activité de Jellyfin quand un transcodage vidéo tourne sur le processeur alors que l’accélération matérielle est configurée.
  • En anglais et en roumain.

Ce qu’il change dans Jellyfin

Uniquement quand vous cliquez sur Apply the settings, et uniquement dans Dashboard → Playback → Transcoding : la méthode d’accélération matérielle, les codecs de décodage matériel (ceux qui ont réussi ; VC-1, VP8 et MPEG-4, qui ne peuvent pas être testés, restent tels que vous les avez réglés), le décodage HEVC 10 bits, l’encodage matériel et le périphérique VA-API / QuickSync. L’encodage HEVC est désactivé s’il a échoué au test ; le plugin ne l’active jamais. La restauration rétablit les paramètres d’avant la dernière application.

Prérequis

  • Jellyfin Server 12.2 ou plus récent, avec jellyfin-ffmpeg (la version de ffmpeg fournie avec Jellyfin).
  • Une carte graphique NVIDIA, Intel ou AMD avec son pilote : pour NVIDIA, le pilote avec nvidia-smi ; pour Intel et AMD, un périphérique de rendu /dev/dri que l’utilisateur Jellyfin peut ouvrir (généralement via le groupe render). Dans Docker, le périphérique doit être transmis au conteneur.

Questions fréquentes

Pourquoi Jellyfin transcode-t-il sur le CPU alors que mon serveur a un GPU ? Généralement, la méthode d’accélération ou les codecs sont mal réglés, ou l’utilisateur Jellyfin n’a pas accès au GPU. Transcode Doctor trouve lequel et corrige les paramètres. Voir le guide.

Peut-il casser mon transcodage ? Il n’applique que des paramètres qui ont réussi les tests sur votre serveur, après un clic, et conserve les précédents pour un rétablissement en un clic.

Ce qu’il envoie et où

  • Aucun contact externe en dehors du client de licence. Il ne télécharge aucun fichier de test : les clips d’exemple (H.264, HEVC, HEVC 10 bits, MPEG-2, VP9, AV1) sont générés localement avec jellyfin-ffmpeg, dans le dossier de cache du serveur (transcode-doctor/). Vos fichiers multimédias ne sont pas touchés.
  • Processus locaux : jellyfin-ffmpeg, nvidia-smi (seulement si une carte NVIDIA existe), une vérification d’accès sur /dev/dri/renderD*.
  • Le diagnostic ne s’exécute que quand vous cliquez sur le bouton. La surveillance des sessions (toutes les 15 s, sous licence uniquement) lit les informations de transcodage des lectures actives ; l’alerte « repli sur le CPU » (activée par défaut) n’écrit que dans le journal d’activité local.
  • « Apply » (un clic, réservé à l’administrateur) enregistre les paramètres d’accélération matérielle recommandés, après avoir sauvegardé les anciens dans state/encoding-before.json ; « Revert » les rétablit.
  • Plus le client de licence, le même dans chaque plugin : voir Licences et confidentialité dans nos plugins.

Stocké localement (state/ dans le dossier de données du plugin) : report.json (dernier diagnostic : chemin de ffmpeg, GPU, résultats), history.json (les 500 dernières lectures transcodées : heure, utilisateur, application, appareil, titre, raisons du transcodage, matériel/CPU), clips synthétiques dans le cache.

Jamais envoyé : rien de ce qui précède ne quitte le serveur.

Compatibilité avec les clients

  • La lecture et les alertes se font côté serveur : 🟢 fonctionne avec tout client qui déclenche un transcodage.
  • Interface : page d’administration uniquement — Jellyfin Web / medialab Server ✅ (vérifié visuellement ; pas de test de bout en bout automatisé).
  • Matériel testé : NVIDIA (NVENC) sur une vraie Quadro M2000 ✅. Intel QSV / VA-API : détectés et testés par le plugin, ❔ non testés sur du vrai matériel. AMD AMF, Apple VideoToolbox, Rockchip : non pris en charge.
  • Les vérifications sont orientées Linux (/dev/dri, nvidia-smi, groupe render) ; Windows/macOS : ❔ non testés.

Légende : ✅ vérifié (test de bout en bout ou sur l’appareil) · 🟢 côté serveur, fonctionne avec tout client (par conception, sans test propre à un client) · ➖ non applicable · ❔ non testé.

Licence

Le plugin est open source (GPL-3.0). Les versions compilées prêtes à installer sont publiques, comme le code source. Ce que vous achetez, c’est l’abonnement : la licence d’utilisation du plugin sur un serveur Jellyfin, les mises à jour incluses dans votre formule et le support : chaque mise à jour tant que l’abonnement est actif, via votre dépôt de plugins privé, et de l’aide quand quelque chose ne fonctionne pas. Le plugin vérifie la clé d’abonnement une fois par jour ; sans abonnement valide, il s’arrête jusqu’au renouvellement (rien n’est supprimé). Mensuel, annuel ou à vie (la licence à vie inclut un an de mises à jour), ou inclus dans le pack Jellyfin. Essai gratuit de 30 jours.

Code source. Pour chaque version, le code source complet correspondant est public, à côté de la version compilée, dans l’historique des versions, et aussi dans votre compte (Account → Licenses, Source code) ; chaque archive contient le texte intégral de la GPL-3.0 (LICENSE). Si vous avez besoin du code source d’une version que vous ne pouvez plus télécharger, demandez-le-nous et nous vous l’envoyons. Voir la section 10 de la CLUF.

Transcode Doctor est notre propre code, écrit par MediaLab Works pour Jellyfin ; il ne contient aucun code tiers.

Fonctionne au mieux avec medialab Server

Ce plugin fonctionne sur Jellyfin officiel 12.2 ou plus récent. Sur medialab Server, notre serveur basé sur Jellyfin, avec les mêmes données, bibliothèques, utilisateurs et applications, il fonctionne mieux :

  • Verified – medialab. Le serveur vérifie la signature de nos plugins et vous montre que les fichiers sont exactement ceux que nous avons publiés. Un plugin modifié après sa publication est signalé.
  • Intégré à l’interface. Les plugins peuvent ajouter des boutons et des liens dans le menu de vos utilisateurs (par exemple « TV », « Share ») sans configuration web manuelle.
  • Prioritaire par défaut. Les plugins medialab passent en premier là où cela compte : tuners TV en direct, sources de guide et fournisseurs de sous-titres. L’ordre reste le vôtre : vous pouvez le modifier à tout moment.
  • Le catalogue medialab.works inclus, avec une installation sans confirmations supplémentaires.
  • Mises à jour depuis l’interface web, sans terminal (avec Self-Update de MediaLab) : vérifiez, mettez à jour et revenez en arrière depuis le tableau de bord ; si une nouvelle version ne démarre pas, le serveur revient de lui-même à la version précédente, avec vos données intactes.
  • Le même Jellyfin, à jour. medialab Server suit chaque semaine les versions stables de Jellyfin 12.x ; une nouvelle version n’est publiée qu’après avoir réussi tous les tests, y compris ceux de nos plugins.

Les applications Jellyfin (Android, iOS, TV, web) se connectent exactement comme à Jellyfin officiel.

Pour l’installer, lancez l’image de conteneur (guide) ou, sur Debian 12, les paquets apt, qui remplacent jellyfin-server et jellyfin-web en conservant vos données en place (guide).

medialab Server est un logiciel libre (GPL-2.0), basé sur Jellyfin. Le code source est public : medialab-server et medialab-server-web.

Configuration requise

  • Jellyfin Server 12.2 ou plus récent (Linux, Windows ou Docker)
  • jellyfin-ffmpeg, la compilation de ffmpeg fournie avec Jellyfin
  • Une carte graphique NVIDIA, Intel ou AMD avec son pilote, accessible pour Jellyfin (groupe render pour /dev/dri)
  • Open source (GPL-3.0) : le code source de chaque version est dans votre compte

Dernière version

0.1.5
publiée le 20 oct. 2026
Voir toutes les modifications →

La version compilée est publique ; l’utilisation du plugin nécessite une licence ou l’essai gratuit de 30 jours.