Télécharger · Fonctionnalités · Thèmes · Plugins · Compiler
Jellyflix est un client Jellyfin natif pour Android et Android TV (un seul APK). Il reprend l'essentiel de l'app officielle, mais avec un design moderne, des thèmes et un système de plugins pour l'adapter à vos goûts.
- Ouvrez la page des Releases et téléchargez le fichier
Jellyflix-vX.Y.Z.apk. - Téléphone : ouvrez l'APK et autorisez l'installation depuis cette source.
- Android TV : installez l'app Downloader et saisissez l'adresse de l'APK, ou envoyez le fichier avec Send Files to TV.
- Lancez Jellyflix, entrez l'adresse de votre serveur, connectez-vous (mot de passe ou Quick Connect).
Prérequis : Android 8.0 ou plus, serveur Jellyfin 10.10 ou plus récent.
Un APK est publié automatiquement à chaque push sur main : la page Releases (et le lien releases/latest) donne toujours le plus récent. Chaque pull request obtient aussi un APK de test, dont le lien est posté en commentaire.
| 🔐 Connexion | Détection de l'adresse (http/https, port), mot de passe, Quick Connect, plusieurs comptes |
| 🌐 Interface du serveur | Par défaut, l'app affiche l'interface web de votre Jellyfin elle-même, connectée automatiquement : même thème, même CSS personnalisé, mêmes plugins (Media Bar, Home Screen Sections, JavaScript Injector…), avec la disposition TV du client web sur Android TV. Bascule vers l'interface native dans Réglages → Interface, ou via le menu (touche Menu de la télécommande, ou Retour à la racine) |
| 🪞 Fidèle au serveur (interface native) | Reprend l'organisation configurée sur Jellyfin : ordre des sections d'accueil, bibliothèques masquées ou réordonnées, thème du serveur, pistes audio et sous-titres par défaut, pastilles « non vus » |
| 🏠 Accueil | Reprendre la lecture / l'écoute, À suivre, Télé en direct, Derniers ajouts par bibliothèque, Favoris |
| 📚 Bibliothèques | Grille paginée, tri, contenu adapté au type (films, séries, musique, playlists, collections) |
| 🎬 Fiches | Films, séries, saisons, épisodes, distribution et filmographie, similaires, vu / favori |
| ⬇️ Hors-ligne | Téléchargement de films, épisodes et saisons entières, reprise après coupure, Wi‑Fi uniquement (réglable), lecture sans réseau, progression renvoyée au serveur au retour du réseau |
| 🎵 Musique | Albums, artistes, titres, playlists, lecture en arrière-plan avec notification et contrôles écran verrouillé, file d'attente, aléatoire, répétition |
| 📡 Télé en direct | Chaînes avec programme en cours, enregistrements, libération du tuner à la fermeture |
| 📺 Chromecast | Diffusion depuis le lecteur vidéo (transcodage H.264/AAC par le serveur) |
| 🔎 Recherche | Instantanée, sans requêtes inutiles |
| Lecture directe ou transcodage automatique, pistes audio et sous-titres sans perdre la position, qualité, reprise, épisode suivant | |
| ⏭️ Passer l'intro | Intro / générique / résumé via les segments du serveur (compatible Intro Skipper) |
| 📱 Android TV | Navigation complète à la télécommande, menu latéral, focus bien visible |
Sous le capot : le profil de l'appareil est construit à partir de ses vrais décodeurs (HEVC, VP9, AV1, AC3…) pour ne transcoder que si nécessaire, avec repli automatique si la lecture directe échoue. La progression est renvoyée au serveur.
Réglages → Apparence :
| Thème | Accent |
|---|---|
| Jellyfin | violet / bleu |
| Ocean | bleu / turquoise |
| Forest | vert |
| Sunset | orange |
| Rose | rose / mauve |
| Mono | gris |
Thème du serveur : par défaut, Jellyflix reprend le thème de votre serveur Jellyfin — le thème web choisi par l'utilisateur (dark, light, blueradiance, purplehaze, wmc, appletv) et les couleurs du CSS personnalisé de l'administrateur (variables comme --accent ou --background, @import compris). Désactivable dans Réglages → Apparence. Le CSS complet n'est pas interprété : seules les couleurs d'accent et de fond sont reprises.
En plus : mode clair / sombre / système, couleurs dynamiques (Material You), noir pur AMOLED, accent personnalisé.
- Plugins de l'app : activables un par un dans Réglages → Plugins (lignes d'accueil, favoris, saut d'intro, épisode suivant automatique). Les développeurs peuvent en ajouter via
HomeSectionPluginetPlayerPlugin(plugin/Plugins.kt). - Plugins du serveur : la liste s'affiche dans les réglages (si votre compte a les droits), et l'app exploite ceux qu'elle connaît, comme Intro Skipper.
Prérequis : JDK 17+ et Android SDK (API 35).
./gradlew :app:assembleDebug # APK de test
./gradlew :app:assembleRelease # APK optimisé (R8)Architecture
app/src/main/java/dev/jellyflix
├── data/ SessionManager, MediaRepository, Settings (DataStore), AppContainer
├── plugin/ contrats et plugins intégrés
├── player/ PlayerViewModel (Media3), DeviceProfiles
└── ui/ theme, components, screens, navigation (téléphone : barre / TV : rail)
Kotlin, Jetpack Compose, Media3, Coil, SDK officiel org.jellyfin.sdk, DataStore. Pas de framework d'injection : un graphe unique créé par l'Application.
Publier une nouvelle version et signer l'APK
Poussez sur main : le workflow Release lance les tests, compile l'APK, vérifie sa signature et crée la release, sans rien d'autre à faire.
- Première publication d'une
versionName(dansapp/build.gradle.kts) : tagvX.Y.Z. - Pushes suivants avec la même
versionName: tagvX.Y.Z-build.N. LeversionCodeaugmente à chaque build, donc chaque APK s'installe par-dessus le précédent (avec la signature stable). - Pour une nouvelle version « officielle », changez seulement
versionName. - APK de test des PR : identifiant
dev.jellyflix.debug, il s'installe à côté de la version publiée.
Signature stable (pour que les mises à jour s'installent par-dessus sans désinstaller) :
- Générez la clé :
scripts/create-keystore.sh(ou utilisez la vôtre). - Dans le dépôt GitHub : Settings → Secrets and variables → Actions, créez
KEYSTORE_BASE64,KEYSTORE_PASSWORD,KEY_ALIASetKEY_PASSWORDavec les valeurs générées. - Sauvegardez la clé : si elle est perdue, plus aucune mise à jour ne pourra s'installer sur les versions déjà signées avec elle.
Le résumé de chaque release affiche l'empreinte du certificat et indique si la clé stable a bien été utilisée. Sans secrets, l'APK est signé avec la clé de debug (les mises à jour exigent alors de désinstaller l'ancienne version).
Les jetons de connexion sont chiffrés (AES-256-GCM) avec une clé stockée dans l'Android Keystore, qui ne quitte pas l'appareil. Les comptes enregistrés par une version précédente sont migrés automatiquement. La sauvegarde Android est désactivée.
- Interface du serveur : c'est le client web de Jellyfin dans une WebView. La vidéo est lue par le décodeur de l'appareil (ExoPlayer, décodage matériel) quand le profil de l'appareil le permet ; sinon le serveur transcode, et l'app bascule automatiquement sur le transcodage si la lecture directe échoue. Réglable dans Réglages (« Lecteur vidéo » : appareil / web). Dans ce mode la vidéo s'affiche dans le lecteur de l'app (pas l'OSD web) ; le client web continue de gérer la progression et le serveur. Téléchargements hors-ligne, musique en arrière-plan et Chromecast restent propres à l'interface native.
- Navigation à la télécommande : cadre de focus net et contrasté sur Android TV. Le temps de réponse de l'interface web dépend surtout du client web lui-même : des essais de CSS d'optimisation n'ont pas donné de gain mesurable et n'ont donc pas été livrés.
- Diagnostic de l'appareil : Réglages (ou menu de l'interface serveur) → liste les décodeurs matériels (HEVC, AV1, Dolby Vision, Atmos…), l'écran et le HDR, avec un bouton « Copier » pour partager le rapport et affiner la lecture sur une box ou une TV donnée.
- Lecteur : vitesse de lecture, heure de fin, chapitres, double-tap gauche/droite pour ±10 s, saut d'intro/générique, pistes audio et sous-titres, qualité. Il reprend les couleurs du serveur. Il ne reproduit pas l'OSD web (plugins d'OSD non repris).
- Aperçu de la barre de lecture : les planches de vignettes (trickplay) sont préchargées en tâche de fond, les plus proches de la position en premier, pour un aperçu instantané (web et lecteur natif). Nécessite que le serveur ait généré les vignettes.
- Téléchargements : le fichier original est téléchargé (le compte doit avoir le droit de téléchargement sur le serveur) ; les sous-titres externes en texte (SRT/ASS) sont téléchargés avec la vidéo (pour les téléchargements lancés à partir de cette version) ; les sous-titres image externes ne le sont pas. La musique se télécharge (pistes, albums, playlists) et se lit hors-ligne.
- Chromecast : nécessite un téléphone avec les services Google Play et un serveur joignable depuis l'appareil Cast. Le bouton est masqué sur Android TV et si Cast est indisponible.
- Télé en direct : lecture des chaînes et des enregistrements ; onglet Guide (12 h à venir par chaîne) avec programmation et annulation d'enregistrements ; pas de grille horaire en tableau ni d'enregistrements de séries (un programme à la fois).
- Thème du serveur : seules les couleurs sont reprises, pas le reste du CSS.
- Non testé sur appareil physique : à valider sur un téléphone, une TV et un vrai serveur avant diffusion large.
Voir LICENSE. Jellyflix n'est pas affilié au projet Jellyfin.