Comment transformer votre TV en plateforme web avec WebHomeTV
Quiconque a essayé de configurer un centre multimédia sur Android TV ou un TV box a probablement croisé l'écosystème TVBox et FongMi. Ce sont des lecteurs open source populaires qui peuvent charger du contenu via des scripts Python et JavaScript. Ils ont un problème : l'interface de l'écran d'accueil est fortement liée à la grille d'applications standard. Modifier la disposition ou intégrer un flux de recommandations personnalisé sans recompiler entièrement l'APK est tout simplement impossible.
Le développeur fish2018 a décidé de prendre une approche différente et a créé le dépôt webhtv (WebHomeTV). Le projet est basé sur la base de code de FongMi mais change radicalement le concept de l'écran d'accueil. Maintenant, l'écran d'accueil est une page web complète construite avec HTML, CSS et JS qui communique avec Android via un pont JS intégré et les API natives de l'application.
Ce qu'il y a à l'intérieur et comment ça fonctionne
En essence, c'est une application Android hybride pour smartphones et TV. À l'intérieur, deux couches fonctionnent ensemble. D'un côté, les parseurs de contenu familiers (Spider/CSP) restent, tandis que de l'autre, un contexte Chromium et un serveur web local se lancent pour afficher des dispositions personnalisées.
Vous pouvez créer n'importe quel frontend, le placer sur votre propre serveur ou le stockage du box, et à partir de là contrôler la recherche, appeler le lecteur vidéo, vérifier la disponibilité des liens et synchroniser l'historique de visionnage.
Ce qui rend ce projet intéressant
Les développeurs ont conçu un SDK natif pour le contexte du navigateur. Lorsque le frontend se charge dans le WebView de l'application, il a accès à un objet avec des méthodes pour interagir avec le matériel et le système d'exploitation. La page web peut envoyer indépendamment des requêtes réseau cross-domain en contournant les règles CORS, demander l'historique de visionnage, utiliser le proxy système et transmettre les flux vidéo directement au lecteur vidéo interne. Si la grille de catégories standard devient ennuyeuse, vous pouvez créer un frontend dans le style d'un tableau de bord interactif cinématographique ou comme un terminal textuel.
Une attention particulière devrait être portée au système intégré de vérification des liens pour le stockage cloud et au moteur de classement intelligent des sources. L'application vérifie la validité des dossiers partagés sur les services de partage de fichiers populaires dès le départ. En même temps, le système suit le taux de réussite des recherches et de la lecture pour chaque site connecté. Au fil du temps, les sources les plus rapides et les plus stables remontent automatiquement dans la liste des résultats.
Contrôler tout cela avec une télécommande n'est pas toujours pratique, c'est pourquoi un panneau d'administration est intégré à l'application. Si vous exécutez WebHomeTV sur votre TV et ouvrez l'adresse /m dans un navigateur sur votre ordinateur ou smartphone, un panneau de contrôle web s'ouvre. Vous pouvez y configurer commodément les sources, passer les jetons d'autorisation, télécharger des scripts d'extension personnalisés et consulter les journaux du lecteur vidéo.
Si vous avez plusieurs TV boxes et téléphones chez vous, vous n'aurez pas besoin d'ajuster manuellement la configuration sur chaque appareil. La synchronisation du réseau local est implémentée à l'intérieur : les paramètres, l'historique de visionnage, les cookies d'autorisation et les favoris sont transférés entre les clients en quelques clics. Pour les appareils distants, vous pouvez configurer un relais intermédiaire en Go, Rust, Cloudflare Workers ou Vercel.
Architecture et bibliothèques natives
Le contenu technique du dépôt semble sérieux. C'est loin d'être une simple façade sur le MediaPlayer Android système.
L'application est construite avec Java 21 et Android SDK 37 (compileSdk 37, minSdk 24). Le code supporte deux variantes : mobile pour les écrans tactiles et leanback pour le fonctionnement par télécommande.
La partie la plus intéressante est cachée dans le moteur de lecture. Les auteurs ne se sont pas limités au ExoPlayer standard et ont intégré un MPV profondément personnalisé basé sur C/C++. À l'intérieur, il utilise des builds récents de FFmpeg (n8.0.3), libplacebo et curl avec support HTTP/2. Pour la sortie vidéo sur Android 15, ils ont utilisé une combinaison de Vulkan et MediaCodec via AImageReader et Android Hardware Buffer, ce qui permet de décoder le flux vidéo directement dans la mémoire GPU sans copies de frames inutiles.
En plus de MPV, le projet inclut un fork de Media3 (version 1.11.0-alpha01-fongmi) avec des correctifs personnalisés. Par exemple, un correctif ajoute un gestionnaire WebSocket haute performance pour les commentaires et sous-titres en ligne avec support de file d'attente et limites de taux d'images.
Compilation à partir des sources
Si vous souhaitez compiler le projet vous-même, vous aurez besoin d'un Android SDK préparé avec NDK 28.2.13676358 et JDK 21. Le dépôt contient déjà des bibliothèques .so précompilées, vous n'aurez donc pas besoin de recompiler MPV et FFmpeg à partir de zéro lors de la première compilation.
Le processus de compilation depuis la console ressemble à ceci :
git clone https://github.com/fish2018/webhtv.git
cd webhtv
echo "sdk.dir=$ANDROID_HOME" > local.properties
bash gradlew :app:assembleMobileArm64_v8aDebug :app:assembleLeanbackArm64_v8aDebug
Les fichiers APK terminés sont placés dans des répertoires dans app/build/outputs/apk/. Le dépôt contient également des scripts dans le dossier scripts/ qui vérifient l'intégrité des en-têtes ELF et reconstruisent les ponts JNI si nécessaire.
Kit développeur et outils IA
Dans le dossier webhome-devkit, les auteurs ont partagé une boîte à outils complète pour créer vos propres écrans d'accueil. Il y a des modèles de disposition prêts à l'emploi, des exemples d'extensions pour injecter du code JS dans les pages web et de la documentation pour travailler avec le SDK.
Un détail intéressant : les développeurs ont ajouté un ensemble de règles prêtes à l'emploi (skills) pour les assistants IA. Vous pouvez les connecter à Cursor, Claude ou d'autres éditeurs de réseau neuronal pour générer automatiquement de nouveaux modules et parseurs pour WebHomeTV via des prompts.
Qui trouvera ce projet utile
Si vous écrivez des projets personnels pour Android TV ou souhaitez créer un hub multimédia personnalisé pour un usage domestique, WebHomeTV vous offrira une base prête à l'emploi et puissante. Vous n'avez pas besoin d'écrire des décodeurs, des gestionnaires de requêtes réseau et la gestion des événements de la télécommande à partir de zéro. Construisez simplement une belle page web et liez-la au SDK natif.
Le projet s'est avéré spécifique mais extrêmement bien pensé. Il résout le problème de longue date des lecteurs TV monolithiques, donnant aux développeurs web une liberté complète dans la création d'interfaces pour les grands écrans.
Projets similaires