>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Kotlin

Hoe mpv een Modern Android-Interface Kreeg met Jetpack Compose

banner

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-v8a voor moderne smartphones
  • armeabi-v7a voor oude 32-bit chips
  • x86 en x86_64 voor emulators en zeldzame Intel-apparaten
  • universal universeel 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