Come mpv ha ottenuto un'interfaccia Android moderna con Jetpack Compose

Se hai mai provato a guardare file video pesanti con sottotitoli complessi su Android, probabilmente ti sei imbattuto in mpv-android. Il suo motore è versatile e veloce, gira con la libreria collaudata libmpv sotto il cofano. Ma l'interfaccia del client classico è rimasta spartana per molto tempo, come se fosse bloccata nell'era di Android 7.
Recentemente, un fork chiamato mpvEx (mpvExtended) ha guadagnato popolarità su GitHub. Il suo sviluppatore ha preso la codebase dai progetti mpvKt e mpv-android come base, ha riscritto l'interfaccia usando Jetpack Compose con Material 3 Expressive e ha aggiunto una serie di funzionalità utili per la visione quotidiana.
Perché un altro fork di mpv
Il player originale è ottimo nel suo minimalismo, ma gli utenti mobile spesso mancano di comfort di base. In mpvEx, l'autore si è concentrato su tre cose: preservare le capacità di rendering di libmpv, modernizzare l'interfaccia utente e il supporto adeguato per i server domestici.
L'app non ha annunci, tracker o permessi inutili nel manifest. Il codice è completamente open source sotto licenza Apache 2.0.
Cosa rende interessante il player in pratica
Protocolli di rete out of the box
Trasferire file video sulla rete locale attraverso gestori di file di terze parti è scomodo. mpvEx include il supporto integrato per i protocolli SMB, FTP e WebDAV. Puoi connetterti a un NAS domestico o a un disco del router direttamente nel player e aprire i video senza prima scaricarli nella memoria interna del telefono.
Navigazione fotogramma per fotogramma completa
Per chi analizza i video fotogramma per fotogramma o cerca un momento specifico in una registrazione, c'è un'interfaccia dedicata per la navigazione fotogramma per fotogramma. Premi un pulsante e vai avanti o indietro senza ritardi di buffering.
Gestione flessibile dei media
Oltre alla familiare modalità picture-in-picture (PiP) e alla riproduzione audio in background con lo schermo spento, il player può:
- Allegare tracce di sottotitoli e file audio esterni
- Scalare il video con gesti pinch-to-zoom
- Passare dalla visualizzazione ad albero delle cartelle alla lista piatta
- Gestire playlist e navigazione dei capitoli
Sotto il cofano
Il progetto è scritto in Kotlin con uso estensivo di Jetpack Compose. L'integrazione con il layer nativo libmpv e le librerie FFmpeg è implementata attraverso JNI.
Per buildare l'app è necessario JDK 17 e Android SDK con build tools versione 34.0.0 o successiva. Il repository ha una pipeline GitHub Actions configurata che builda automaticamente APK per diverse architetture:
arm64-v8aper smartphone moderniarmeabi-v7aper vecchi chip a 32 bitx86ex86_64per emulatori e dispositivi rari basati su Inteluniversalpacchetto universale con tutte le librerie incluse
Se vuoi buildare l'app dal codice sorgente con la tua firma, il repository descrive la procedura per passare le chiavi attraverso GitHub Secrets:
# Для Linux и macOS кодируем keystore в base64
base64 -i your-keystore.jks | tr -d '\n' > keystore.txt
Su Windows PowerShell, questo usa il metodo .NET integrato:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("your-keystore.jks")) | Out-File -FilePath keystore.txt -NoNewline
Stato attuale e conclusioni
Il progetto è in sviluppo attivo: il repository ha già oltre 2400 stelle, anche se ci sono circa 250 issue aperte nel tracker. Lo sviluppatore avvisa onestamente che potrebbero verificarsi bug in scenari non standard.
Se i player standard come VLC ti sembrano troppo carichi e mpv-android con il suo design datato ti scoraggia, mpvEx sarà un'ottima alternativa. Puoi provare le build pronte dalla pagina delle release su GitHub o attraverso il catalogo IzzyOnDroid. Per gli sviluppatori Android, il repository servirà anche come buon esempio di wrapping di una pesante libreria C/C++ in un'interfaccia Compose moderna.
Progetti correlati