>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Kotlin

Jak mpv zyskało nowoczesny interfejs na Androida dzięki Jetpack Compose

banner

Jeśli kiedykolwiek próbowałeś oglądać ciężkie pliki wideo ze złożonymi napisami na Androidzie, prawdopodobnie natknąłeś się na mpv-android. Jego silnik jest wszechstronny i szybki, działający pod maską na sprawdzoną bibliotekę libmpv. Ale klasyczny interfejs klienta przez długi czas pozostawał surowy, jakby utknął w erze Androida 7.

Ostatnio na GitHubie zyskał popularność fork o nazwie mpvEx (mpvExtended). Jego autor wykorzystał bazę kodu z projektów mpvKt i mpv-android jako fundament, przepisał interfejs przy użyciu Jetpack Compose z Material 3 Expressive i dodał mnóstwo przydatnych funkcji do codziennego oglądania.

Dlaczego jeszcze jeden fork mpv

Oryginalny odtwarzacz jest świetny w swoim minimalizmie, ale użytkownicy mobilni często brakuje podstawowego komfortu. W mpvEx autor skupił się na trzech rzeczach: zachowaniu możliwości renderowania libmpv, unowocześnieniu interfejsu użytkownika i właściwej obsłudze serwerów domowych.

Aplikacja nie zawiera reklam, trackerów ani niepotrzebnych uprawnień w manifeście. Kod jest w pełni open source na licencji Apache 2.0.

Co sprawia, że odtwarzacz jest interesujący w praktyce

Protokoły sieciowe out of the box

Ściąganie plików wideo przez sieć lokalną za pomocą zewnętrznych menedżerów plików jest niewygodne. mpvEx zawiera wbudowaną obsługę protokołów SMB, FTP i WebDAV. Możesz połączyć domowy NAS lub dysk routera bezpośrednio w odtwarzaczu i otwierać filmy bez wcześniejszego pobierania ich do pamięci wewnętrznej telefonu.

Pełna nawigacja klatka po klatce

Dla tych, którzy analizują wideo klatka po klatce lub szukają konkretnego momentu w nagraniu, istnieje dedykowany interfejs nawigacji klatka po klatce. Naciśnij przycisk i przesuwaj się do przodu lub do tyłu bez opóźnień związanych z buforowaniem.

Elastyczna obsługa mediów

Oprócz znanego trybu picture-in-picture (PiP) i odtwarzania audio w tle przy wyłączonym ekranie, odtwarzacz potrafi:

  • Dołączać zewnętrzne ścieżki napisów i pliki audio
  • Skalować wideo gestami szczypania
  • Przełączać widok katalogu między drzewem folderów a płaską listą
  • Zarządzać listami odtwarzania i nawigacją po rozdziałach

Pod maską

Projekt jest napisany w Kotlinie z szerokim wykorzystaniem Jetpack Compose. Integracja z warstwą natywną libmpv i bibliotekami FFmpeg jest realizowana przez JNI.

Budowanie aplikacji wymaga JDK 17 i Android SDK z narzędziami do budowania w wersji 34.0.0 lub nowszej. Repozytorium ma skonfigurowany pipeline GitHub Actions, który automatycznie buduje APK dla różnych architektur:

  • arm64-v8a dla nowoczesnych smartfonów
  • armeabi-v7a dla starych układów 32-bitowych
  • x86 i x86_64 dla emulatorów i rzadkich urządzeń opartych na procesorach Intel
  • universal uniwersalny pakiet ze wszystkimi dołączonymi bibliotekami

Jeśli chcesz zbudować aplikację ze źródeł z własnym podpisem, repozytorium opisuje procedurę przekazywania kluczy przez GitHub Secrets:

# Для Linux и macOS кодируем keystore в base64
base64 -i your-keystore.jks | tr -d '\n' > keystore.txt

W Windows PowerShell wykorzystuje to wbudowaną metodę .NET:

[Convert]::ToBase64String([IO.File]::ReadAllBytes("your-keystore.jks")) | Out-File -FilePath keystore.txt -NoNewline

Aktualny stan i wnioski

Projekt aktywnie się rozwija: repozytorium ma już ponad 2400 gwiazdek, choć w trackerze jest około 250 otwartych zgłoszeń. Autor uczciwie ostrzega, że błędy mogą występować w niestandardowych scenariuszach.

Jeśli standardowe odtwarzacze jak VLC wydają ci się przeładowane, a zwykły mpv-android odstrasza swoim przestarzałym designem, mpvEx będzie doskonałą alternatywą. Możesz wypróbować gotowe buildy ze strony wydań na GitHubie lub przez katalog IzzyOnDroid. Dla programistów Androida repozytorium posłuży również jako dobry przykład opakowania ciężkiej biblioteki C/C++ w nowoczesny interfejs Compose.

Powiązane projekty