Hoe mpv een Modern Android-Interface Kreeg met Jetpack Compose

Als je ooit hebt geprobeerd zware videobestanden met complexe ondertitels op Android te bekijken, ben je waarschijnlijk mpv-android tegengekomen. De engine is veelzijdig en snel, en gebruikt de beproefde libmpv-bibliotheek onder de motorkap. Maar de interface van de klassieke client bleef lange tijd karig, alsof deze vastzat in het Android 7-tijdperk.
Onlangs heeft een fork genaamd mpvEx (mpvExtended) populariteit gekregen op GitHub. De ontwikkelaar nam de codebase van de mpvKt- en mpv-android-projecten als basis, herschreef de interface met Jetpack Compose en Material 3 Expressive, en voegde een heleboel nuttige functies toe voor dagelijks gebruik.
Waarom Nog Een mpv-Fork
De originele speler is geweldig in zijn minimalisme, maar mobiele gebruikers missen vaak basiscomfort. In mpvEx richtte de auteur zich op drie dingen: het behouden van de rendercapaciteiten van libmpv, het moderniseren van de UI, en goede ondersteuning voor thuisservers.
De app heeft geen advertenties, trackers of onnodige machtigingen in het manifest. De code is volledig open source onder de Apache 2.0-licentie.
Wat de speler interessant maakt in de praktijk
Netwerkprotocollen uit de doos
Videobestanden via het lokale netwerk ophalen via externe bestandsbeheerders is onhandig. mpvEx heeft ingebouwde ondersteuning voor SMB-, FTP- en WebDAV-protocollen. Je kunt een thuis-NAS of router-schijf direct in de speler aansluiten en video's openen zonder ze eerst naar het interne opslag van de telefoon te downloaden.
Volledige frame-voor-frame navigatie
Voor degenen die video frame voor frame analyseren of een specifiek moment in een opname zoeken, is er een speciale frame-voor-frame navigatie-interface. Druk op een knop en stap vooruit of achteruit zonder buffervertragingen.
Flexibele mediaverwerking
Naast de vertrouwde picture-in-picture (PiP)-modus en audio-achtergrondafspeel met het scherm uit, kan de speler:
- Externe ondertitelsporen en audiobestanden toevoegen
- Video schalen met pinch-to-zoom gebaren
- Schakelen tussen mapstructuur en platte lijst voor directory-weergave
- Afspeellijsten en hoofdstuknavigatie beheren
Onder de motorkap
Het project is geschreven in Kotlin met uitgebreid gebruik van Jetpack Compose. Integratie met de native laag libmpv en FFmpeg-bibliotheken is geïmplementeerd via JNI.
Het bouwen van de app vereist JDK 17 en Android SDK met build-tools versie 34.0.0 of nieuwer. De repository heeft een GitHub Actions-pipeline geconfigureerd die automatisch APK's bouwt voor verschillende architecturen:
arm64-v8avoor moderne smartphonesarmeabi-v7avoor oude 32-bit chipsx86enx86_64voor emulators en zeldzame Intel-apparatenuniversaluniverseel pakket met alle bibliotheken gebundeld
Als je de app vanaf de bron wilt bouwen met je eigen ondertekening, beschrijft de repository de procedure voor het doorgeven van sleutels via GitHub Secrets:
# Для Linux и macOS кодируем keystore в base64
base64 -i your-keystore.jks | tr -d '\n' > keystore.txt
Op Windows PowerShell maakt dit gebruik van de ingebouwde .NET-methode:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("your-keystore.jks")) | Out-File -FilePath keystore.txt -NoNewline
Huidige staat en conclusies
Het project ontwikkelt actief: de repository heeft al meer dan 2400 sterren, hoewel er ongeveer 250 openstaande issues zijn in de tracker. De ontwikkelaar waarschuwt eerlijk dat bugs kunnen voorkomen in niet-standaard scenario's.
Als standaard spelers zoals VLC je overladen lijken, en mpv-android je afschrikt met zijn verouderde ontwerp, is mpvEx een uitstekend alternatief. Je kunt kant-en-klare builds uit de releases-pagina op GitHub of via de IzzyOnDroid-catalogus proberen. Voor Android-ontwikkelaars dient de repository ook als een goed voorbeeld van het inpakken van een zware C/C++-bibliotheek in een moderne Compose-UI.
Gerelateerde projecten