Solution communautaire

Résoudre les erreurs de lecture « média non pris en charge » de Jellyfin sur ZimaOS

A ZimaOS Jellyfin case where a generic unsupported-media message was traced through logs to a Docker mount that exposed Music at /Media while the libraries expected /Media/Music, /Media/Movies, and /Media/TV Shows.

Un utilisateur de ZimaOS voyait le message Jellyfin « Échec de la lecture, car le média n’est pas pris en charge par ce client » pour les films et les fichiers MP3 sur tous les appareils testés. Comme le message évoquait la prise en charge des médias, les premières hypothèses portaient sur le cache du navigateur, les codecs, le transcodage ou les permissions.

Les journaux racontaient une tout autre histoire. Jellyfin avait démarré correctement, trouvé FFmpeg, exposé plusieurs décodeurs audio et vidéo et signalé que les permissions des périphériques graphiques étaient correctes. Au début de la lecture, le serveur a enregistré à plusieurs reprises Impossible de trouver le fichier. Le membre de la communauté gelbuilding a établi que ce message était dû à un chemin de volume Docker qui ne montait que le répertoire Music dans /Media, alors que les bibliothèques Jellyfin s’attendaient toujours à trouver les fichiers sous /Media/Music, /Media/Movies et /Media/TV Shows.

L’erreur de lecture affichée à tous les clients

MrPenguin a indiqué que Jellyfin et la configuration DNS de l’utilisateur étaient restés stables après les précédentes sessions d’assistance. Une sauvegarde avait également été créée. La nouvelle panne touchait à la fois les films et la musique, depuis n’importe quel appareil, ce qui rendait raisonnable l’hypothèse d’un problème de cache, de prise en charge des codecs ou de permissions sur les fichiers.

Lecteur web mobile Jellyfin affichant une erreur de lecture indiquant que le média n’est pas pris en charge
La capture d’écran originale montre l’erreur générique de lecture affichée au client par Jellyfin. Le message ne révélait pas que le chemin du fichier côté serveur était manquant.

Les utilisateurs qui souhaitent distinguer les limites matérielles des problèmes de chemins de stockage peuvent consulter les exigences matérielles de Jellyfin. Dans ce cas, cependant, les éléments décisifs provenaient des lignes signalant l’absence du fichier, et non du message du client.

Les journaux indiquaient un fichier manquant, et non un codec non pris en charge

Le journal de démarrage a identifié Jellyfin 10.10.7 sur Ubuntu 24.04.3 LTS, dans un conteneur LinuxServer.io Linux x64. Il indiquait également Jellyfin FFmpeg 7.1.2, de nombreux décodeurs et encodeurs disponibles, ainsi que des interfaces d’accélération matérielle, notamment CUDA, VA-API, QSV, DRM, OpenCL et Vulkan.

Les vérifications des périphériques graphiques étaient également positives :

Les permissions pour /dev/dri/renderD128 sont correctes
Les permissions pour /dev/dri/card0 sont correctes

La requête de lecture a ensuite produit la ligne qui a changé le diagnostic :

Impossible de trouver le fichier « /Media/Music/Beyonce/Unknown Album/Single Ladies ... .mp3 »

Un fichier manquant Folder.jpg Le chemin est également apparu. Cela signifiait que la base de données de Jellyfin faisait toujours référence à des chemins de bibliothèque qui n’existaient pas dans le conteneur actuel. La compatibilité des codecs ne pouvait rien résoudre si le serveur ne parvenait pas du tout à ouvrir le fichier source.

Le guide officiel de dépannage de Jellyfin recommande également de commencer le diagnostic de la lecture par les journaux du serveur et de FFmpeg, plutôt que de se fier uniquement au message affiché par le client.

Commandes utilisées pour vérifier les chemins du conteneur

Gelbuilding a demandé à l’auteur de confirmer ce que le conteneur Jellyfin en cours d’exécution pouvait réellement voir :

docker exec -it jellyfin ls -lah /Media
docker exec -it jellyfin ls -lah "/Media/Music"
docker exec -it jellyfin ls -lah "/Media/Music/Beyonce/Unknown Album" | head

La réponse demandait également les montages Docker actifs :

docker inspect jellyfin --format '{{json .Mounts}}' | sed 's/},/},\n/g'

Ces vérifications répondent à deux questions différentes. Les commandes docker exec indiquent si les chemins existent du point de vue de Jellyfin, tandis que docker inspect montre quels répertoires hôtes sont mappés dans le conteneur. La documentation officielle de Jellyfin sur les conteneurs fournit le contexte général concernant la configuration persistante et les mappages des volumes multimédias.

Le véritable problème de mappage des volumes

La sortie d’inspection de l’auteur montrait ce mappage des médias :

Hôte :      /media/2 TB Master Drive/Media/Music
Conteneur : /Media

Ce mappage place le contenu du Music le dossier directement dans le chemin du conteneur /Media. Il ne crée pas /Media/Music à l’intérieur du conteneur. La liste affichait donc les dossiers d’artistes directement sous /Media.

Parallèlement, Jellyfin essayait d’ouvrir des chemins commençant par :

  • /Media/Music/...
  • /Media/Movies/...
  • /Media/TV Shows/...

La base de données des bibliothèques et le mappage actif du conteneur ne décrivaient plus la même structure de répertoires. C’est pourquoi les éléments multimédias pouvaient rester visibles dans Jellyfin alors que la lecture échouait à zéro seconde.

Paramètres Jellyfin de ZimaOS montrant le dossier hôte Music mappé directement vers Media
Les paramètres de l’application ZimaOS montrent que le sous-dossier Music est directement mappé vers Media /Media, tandis que Jellyfin attendait des chemins distincts pour Music, Movies et TV Shows sous ce répertoire du conteneur.

La modification du mappage suggérée par la communauté

Gelbuilding recommandait de monter le dossier parent Media dossier plutôt que seulement le Music sous-dossier :

Remplacer :
/media/2 TB Master Drive/Media/Music  →  /Media

Remplacer par :
/media/2 TB Master Drive/Media        →  /Media

Avec le dossier parent monté, le conteneur peut exposer /Media/Music, /Media/Movies, et /Media/TV Shows en utilisant les chemins déjà enregistrés dans Jellyfin. Les espaces et les majuscules doivent correspondre exactement ; même un espace manquant dans Séries TV modifie le chemin.

Après l’enregistrement de la correction du mappage des volumes, la réponse conseillait à l’auteur de redémarrer Jellyfin et d’exécuter Tableau de bord → Bibliothèques → Analyser toutes les bibliothèques. Le guide officiel des bibliothèques Jellyfin indique où gérer les bibliothèques dans le tableau de bord du serveur.

Avant de modifier ou de reconstruire l'application, conservez la sauvegarde de la configuration existante. L'article de la boutique sur la sauvegarde de Jellyfin avant une maintenance explique pourquoi l'état de l'application et la bibliothèque multimédia doivent être considérés comme deux aspects distincts de la récupération.

Autres lignes du journal qui ne constituaient pas la cause confirmée de l'échec de la lecture

Le journal contenait également un refus de connexion de NextPVR sur localhost:8866 et un avertissement WebRootPath statique. Ces entrées peuvent nécessiter un examen distinct pour Live TV ou les ressources web, mais les requêtes MP3 en échec se terminaient par des erreurs explicites de fichier introuvable. Le fil n'établissait pas de lien entre l'échec de NextPVR et les fichiers musicaux et vidéo manquants.

De même, rien n'indiquait que l'accélération matérielle était défaillante. Le journal montrait que FFmpeg et plusieurs codecs étaient disponibles. Pour un véritable cas de transcodage, le guide de diffusion accélérée matériellement de ZimaOS est pertinent, mais modifier les paramètres d'accélération ne corrigerait pas un montage Docker incorrect.

Ce que le fil a confirmé et ce qu'il n'a pas confirmé

Les éléments du journal et l'inspection de Docker ont clairement mis en évidence une discordance de mappage des chemins, et la réponse finale fournissait un mappage corrigé précis. Toutefois, le fil s'est terminé avant que MrPenguin ne publie un test de lecture final après l'application de la modification. La page doit donc présenter la correction du mappage comme la solution étayée par les éléments disponibles dans la communauté, et non comme une réussite confirmée par l'auteur d'origine.

FAQ sur la lecture Jellyfin et les chemins Docker

Pourquoi Jellyfin indiquait-il que le média n'était pas pris en charge alors que le fichier était manquant ?

Le client affichait une erreur de lecture générique. Le journal du serveur indiquait la cause précise : Jellyfin ne trouvait pas le fichier source au chemin de bibliothèque enregistré dans sa base de données.

Réinstaller FFmpeg ou changer de codec résoudrait-il ce problème ?

Non. Le journal affichait déjà FFmpeg de Jellyfin ainsi que de nombreux décodeurs et encodeurs. Un codec ne peut pas traiter un fichier source absent du chemin du conteneur.

Pourquoi Jellyfin pouvait-il afficher des éléments de bibliothèque qu'il ne pouvait plus lire ?

Jellyfin peut conserver les métadonnées analysées dans sa base de données après une modification du montage. L'élément reste visible, mais la lecture échoue lorsque Jellyfin tente d'ouvrir l'ancien chemin du système de fichiers.

Le dossier parent Media doit-il être monté ?

Pour la structure des dossiers présentée dans ce fil, oui. Mapper le dossier parent de l'hôte Media répertoire vers le chemin du conteneur /Media conserve les sous-répertoires Music, Movies et TV Shows attendus par les bibliothèques existantes.

L'auteur d'origine a-t-il confirmé que la lecture fonctionnait ensuite ?

Aucune confirmation finale n'apparaît dans le fil visible. La dernière réponse a identifié la discordance et fourni la correspondance corrigée ainsi que les étapes de nouvelle analyse.