Jellyfin ne détecte pas votre carte graphique tout seul. Vous choisissez la méthode d’accélération et les codecs à la main dans Dashboard → Playback → Transcoding, et un mauvais choix ou une permission manquante renvoie discrètement le transcodage vers le processeur. Aucune erreur, aucune bannière — juste un CPU qui chauffe et des ventilateurs qu’on entend depuis le couloir.
Transcode Doctor est un plugin Jellyfin qui met fin à ces tâtonnements. Il teste ce que votre serveur peut réellement faire avec le ffmpeg de Jellyfin, nomme le problème d’environnement avec la solution exacte, applique les réglages qui ont réussi en un clic et explique en termes simples pourquoi chaque lecture est transcodée. Ce tutoriel parcourt toute la boucle sur un serveur auto-hébergé.
Lecture directe et transcodage, en un paragraphe
Si le client peut lire le fichier tel quel, Jellyfin le diffuse sans le modifier (lecture directe) et le CPU ne s’en aperçoit presque pas. Quand ce n’est pas possible — le conteneur, le codec vidéo, le codec audio, les sous-titres, le HDR ou une limite de débit s’en mêlent — Jellyfin transcode, et ce travail revient au GPU ou au CPU. Bien configurer l’accélération matérielle, c’est ce qui permet de garder ce second cas peu coûteux.
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, accessible par Jellyfin : pour NVIDIA, un pilote avec
nvidia-smi; pour Intel et AMD, un périphérique de rendu/dev/drique l’utilisateur Jellyfin peut ouvrir, généralement via le grouperender. Dans Docker, le périphérique doit être transmis au conteneur. - Un compte MediaLab Works avec une licence couvrant le plugin (abonnement, licence à vie dans sa fenêtre de mises à jour, pack Jellyfin, ou l’essai gratuit de 30 jours).
Étape 1 — Installer et activer le plugin
Installez depuis votre dépôt de plugins privé (Dashboard → Plugins → Repositories, puis le catalogue), depuis le catalogue public, ou manuellement à partir du zip. Le guide utilisateur indique les chemins exacts pour les installations par paquet, Docker et Windows. Après un redémarrage de Jellyfin, ouvrez la page du plugin et cliquez sur License, puis collez votre clé et cliquez sur Activate with key — ou démarrez l’essai gratuit de 30 jours depuis la même page.
Étape 2 — Lancer le diagnostic de l’accélération matérielle
Ouvrez Transcode Doctor dans le menu du dashboard et cliquez sur Run the tests. Le plugin :
- vérifie ffmpeg, la carte NVIDIA et les périphériques
/dev/driavec les permissions du processus Jellyfin ; - génère quelques courts extraits de test avec ffmpeg dans le dossier de cache de Jellyfin (
transcode-doctor/) — vos médias ne sont pas touchés ; - essaie chaque méthode — NVIDIA NVENC, Intel QuickSync et VA-API (Intel/AMD) — en décodage H.264, HEVC, HEVC 10 bits, MPEG-2, VP9 et AV1 et en encodage H.264 et HEVC, avec la vitesse mesurée.
Chaque test dure une minute au maximum. Le tableau montre ce qui fonctionne et à quelle vitesse — cette vitesse mesurée est le chiffre qui compte vraiment, pas le nom marketing sur la boîte.
Étape 3 — Lire le problème et appliquer la solution exacte
Si quelque chose bloque l’accélération, la page indique quoi et comment le corriger. Le cas le plus fréquent est Jellyfin sans accès à /dev/dri/renderD128. Le plugin affiche la commande à exécuter, qui ajoute l’utilisateur Jellyfin au groupe render :
sudo usermod -aG render jellyfin
Redémarrez Jellyfin, puis relancez les tests. Parmi les autres cas signalés par le plugin figurent une carte NVIDIA dont le pilote ne répond pas, et ffmpeg absent au chemin configuré. Dans Docker, le périphérique GPU doit être transmis au conteneur avant que tout cela puisse réussir.
Étape 4 — Appliquer la recommandation (et savoir comment revenir en arrière)
Une fois les tests terminés, la page affiche la méthode qui a réussi le plus de tests, les codecs de décodage, l’encodage matériel et environ combien de transcodages 1080p peuvent tourner en parallèle — à côté de vos réglages actuels.
Apply the settings écrit la recommandation dans Dashboard → Playback → Transcoding : la méthode d’accélération, les codecs de décodage matériel qui ont réussi, le décodage HEVC 10 bits, l’encodage matériel et le périphérique VA-API / QuickSync. Rien ne change tant que vous n’avez pas cliqué. Le décodage VC-1, VP8 et MPEG-4 ne peut pas être testé, il reste donc tel que vous l’avez réglé ; l’encodage HEVC est désactivé s’il a échoué et n’est jamais activé par le plugin.
Avant d’appliquer, le plugin enregistre vos réglages de transcodage précédents. Restore the previous settings les remet exactement en place, ce qui est utile si une mise à jour de pilote ou de Jellyfin change la donne. Vous pouvez toujours modifier les réglages à la main dans Jellyfin.
Étape 5 — Découvrir pourquoi chaque lecture est transcodée
C’est la partie qui fait gagner le plus de temps par la suite. Why it transcodes liste les lectures transcodées récentes — quand, qui, quoi — avec les raisons de Jellyfin expliquées en termes simples et ce qui peut être fait, ainsi que l’indication que le travail a été fait par le GPU ou le CPU. Jusqu’à 500 lectures sont conservées.
Raisons typiques que vous verrez :
- Sous-titres PGS incrustés. Les sous-titres en image doivent être dessinés dans les images vidéo, le flux est donc réencodé. Une piste de sous-titres textuelle l’évite.
- HDR sur un écran SDR. Le tone mapping est un transcodage par définition, sauf si le client gère le HDR lui-même.
- Codec audio. Le client peut accepter la vidéo mais pas la piste audio, ce qui force quand même un transcodage du flux.
- La limite de débit de l’application. Un client réglé sous le débit du fichier demande un flux de moindre qualité.
« CPU (GPU not used) » sur une lecture alors que l’accélération est configurée signifie que la carte n’a pas été utilisée pour celle-ci — cela vaut un coup d’œil à la combinaison méthode et codec.
Étape 6 — Laisser le journal d’activité surveiller le retour sur CPU
Quand un transcodage vidéo tourne sur le CPU alors que l’accélération matérielle est configurée, le plugin écrit une entrée dans le journal d’activité de Jellyfin. L’alerte est active par défaut et s’écrit uniquement en local. C’est l’avertissement précoce le moins coûteux après une mise à jour de pilote ou de Jellyfin.
Astuces et dépannage
- Relancez les tests après tout changement de pilote, de Jellyfin ou de matériel. Une méthode qui réussissait le mois dernier peut échouer après une mise à jour.
- Le diagnostic indique ffmpeg introuvable : installez jellyfin-ffmpeg et définissez son chemin dans le dashboard, puis relancez les tests.
- Docker : le périphérique de rendu doit être mappé dans le conteneur ; les corrections de permissions sur l’hôte ne servent à rien si le périphérique n’atteint jamais Jellyfin.
- Notes par plateforme : les vérifications sont orientées Linux (
/dev/dri,nvidia-smi, le grouperender). NVIDIA NVENC est vérifié sur une vraie Quadro M2000 ; Intel QSV et VA-API sont détectés et testés par le plugin mais n’ont pas été testés sur du matériel réel par le développeur. AMD AMF, Apple VideoToolbox et Rockchip ne sont pas pris en charge. - Confidentialité : le plugin ne télécharge aucun fichier de test — les extraits sont générés localement — et rien de ce qu’il stocke ne quitte le serveur. Le diagnostic ne s’exécute que lorsque vous cliquez sur le bouton ; voir Licences et confidentialité dans nos plugins.
- Mises à jour : restez sur votre dépôt de plugins privé pour que Jellyfin ne propose que les versions autorisées par votre licence, et utilisez Roll back to x.y.z sur la page License si une mise à jour pose problème. Les notes de version sont dans le changelog.
Conclusion
L’accélération matérielle dans Jellyfin n’est pas une case à cocher qu’on devine : la méthode, les codecs et les permissions doivent tous s’aligner, et quand ce n’est pas le cas, le seul symptôme est un CPU occupé. Transcode Doctor en fait une réponse mesurée — tester avec le ffmpeg de Jellyfin, corriger la seule chose réellement cassée, appliquer ce qui a réussi en un clic avec un retour arrière en un clic, et lire la raison derrière chaque transcodage. Si vous bloquez, la base de connaissances et la FAQ sont un bon point de départ, ou contactez-nous avec le rapport de diagnostic.