Comment mpv a obtenu une interface Android moderne avec Jetpack Compose

Si vous avez déjà essayé de regarder des fichiers vidéo lourds avec des sous-titres complexes sur Android, vous avez probablement rencontré mpv-android. Son moteur est polyvalent et rapide, fonctionnant avec la bibliothèque éprouvée libmpv en arrière-plan. Mais l'interface du client classique est restée austère pendant longtemps, comme figée dans l'ère d'Android 7.
Récemment, un fork appelé mpvEx (mpvExtended) a gagné en popularité sur GitHub. Son développeur a pris la base de code des projets mpvKt et mpv-android comme fondation, a réécrit l'interface en utilisant Jetpack Compose avec Material 3 Expressive, et a ajouté une multitude de fonctionnalités utiles pour le visionnage quotidien.
Pourquoi encore un fork de mpv
Le lecteur original est excellent dans son minimalisme, mais les utilisateurs mobiles manquent souvent de confort basique. Dans mpvEx, l'auteur s'est concentré sur trois choses : préserver les capacités de rendu de libmpv, moderniser l'interface utilisateur, et une prise en charge correcte des serveurs à domicile.
L'application n'a pas de publicités, de trackers, ni de permissions inutiles dans le manifeste. Le code est entièrement open source sous la licence Apache 2.0.
Ce qui rend le lecteur intéressant en pratique
Protocoles réseau prêts à l'emploi
Extraire des fichiers vidéo via le réseau local avec des gestionnaires de fichiers tiers est peu pratique. mpvEx inclut une prise en charge intégrée des protocoles SMB, FTP et WebDAV. Vous pouvez connecter un NAS domestique ou un disque de routeur directement dans le lecteur et ouvrir des vidéos sans les télécharger d'abord dans le stockage interne du téléphone.
Navigation image par image complète
Pour ceux qui analysent une vidéo image par image ou cherchent un moment précis dans un enregistrement, il existe une interface dédiée de navigation image par image. Appuyez sur un bouton et avancez ou reculez image par image sans délais de mise en mémoire tampon.
Gestion flexible des médias
En plus du mode image dans l'image (PiP) familier et de la lecture audio en arrière-plan avec l'écran éteint, le lecteur peut :
- Joindre des pistes de sous-titres et des fichiers audio externes
- Redimensionner la vidéo avec des gestes de pincement pour zoomer
- Basculer la vue du répertoire entre l'arborescence des dossiers et la liste plate
- Gérer les listes de lecture et la navigation par chapitres
Sous le capot
Le projet est écrit en Kotlin avec une utilisation intensive de Jetpack Compose. L'intégration avec la couche native libmpv et les bibliothèques FFmpeg est implémentée via JNI.
La compilation de l'application nécessite JDK 17 et Android SDK avec les outils de build version 34.0.0 ou ultérieure. Le dépôt dispose d'un pipeline GitHub Actions configuré qui compile automatiquement des APKs pour différentes architectures :
arm64-v8apour les smartphones modernesarmeabi-v7apour les anciennes puces 32 bitsx86etx86_64pour les émulateurs et les rares appareils basés sur Inteluniversalpackage universel avec toutes les bibliothèques regroupées
Si vous souhaitez compiler l'application depuis les sources avec votre propre signature, le dépôt décrit la procédure pour passer les clés via GitHub Secrets :
# Для Linux и macOS кодируем keystore в base64
base64 -i your-keystore.jks | tr -d '\n' > keystore.txt
Sur Windows PowerShell, cela utilise la méthode .NET intégrée :
[Convert]::ToBase64String([IO.File]::ReadAllBytes("your-keystore.jks")) | Out-File -FilePath keystore.txt -NoNewline
État actuel et conclusions
Le projet est en développement actif : le dépôt compte déjà plus de 2400 étoiles, bien qu'il y ait environ 250 issues ouvertes dans le tracker. Le développeur avertit honnêtement que des bugs peuvent survenir dans des scénarios non standard.
Si les lecteurs standard comme VLC vous semblent surchargés, et que mpv-android brut vous rebute par son design dépassé, mpvEx sera une excellente alternative. Vous pouvez essayer les builds prêts à l'emploi depuis la page des releases sur GitHub ou via le catalogue IzzyOnDroid. Pour les développeurs Android, le dépôt servira également d'un bon exemple d'encapsulation d'une lourde bibliothèque C/C++ dans une interface Compose moderne.
Projets similaires