Como o mpv Obteu uma Interface Android Moderna com Jetpack Compose

Se você já tentou assistir arquivos de vídeo pesados com legendas complexas no Android, provavelmente já encontrou o mpv-android. Seu motor é versátil e rápido, executando a biblioteca libmpv testada em batalha nos bastidores. Mas a interface do cliente clássico permaneceu espartana por muito tempo, como se estivesse presa na era do Android 7.
Recentemente, um fork chamado mpvEx (mpvExtended) ganhou popularidade no GitHub. Seu desenvolvedor usou a base de código dos projetos mpvKt e mpv-android, reescreveu a interface usando Jetpack Compose com Material 3 Expressive e adicionou um conjunto de funcionalidades úteis para uso diário.
Por que outro fork do mpv
O player original é ótimo em seu minimalismo, mas usuários móveis frequentemente carecem de conforto básico. No mpvEx, o autor focou em três coisas: preservar as capacidades de renderização do libmpv, modernizar a UI e suporte adequado para servidores domésticos.
O app não tem anúncios, rastreadores ou permissões desnecessárias no manifesto. O código é totalmente open source sob a licença Apache 2.0.
O que torna o player interessante na prática
Protocolos de rede prontos para uso
Baixar arquivos de vídeo pela rede local através de gerenciadores de arquivos de terceiros é inconveniente. O mpvEx inclui suporte integrado para protocolos SMB, FTP e WebDAV. Você pode conectar um NAS doméstico ou drive de roteador diretamente no player e abrir vídeos sem baixá-los primeiro para o armazenamento interno do celular.
Navegação completa quadro a quadro
Para quem analisa vídeos quadro a quadro ou procura um momento específico em uma gravação, existe uma interface dedicada de navegação quadro a quadro. Pressione um botão e avance ou volte sem atrasos de buffering.
Manipulação flexível de mídia
Além do familiar modo picture-in-picture (PiP) e reprodução de áudio em segundo plano com a tela desligada, o player pode:
- Anexar faixas de legendas e arquivos de áudio externos
- Redimensionar vídeo com gestos de pinça para zoom
- Alternar visualização de diretório entre árvore de pastas e lista simples
- Gerenciar playlists e navegação por capítulos
Por baixo do capô
O projeto é escrito em Kotlin com uso extensivo de Jetpack Compose. A integração com a camada nativa libmpv e bibliotecas FFmpeg é implementada através de JNI.
Compilar o app requer JDK 17 e Android SDK com build tools versão 34.0.0 ou mais recente. O repositório tem um pipeline GitHub Actions configurado que compila automaticamente APKs para diferentes arquiteturas:
arm64-v8apara smartphones modernosarmeabi-v7apara chips antigos de 32 bitsx86ex86_64para emuladores e dispositivos raros baseados em Inteluniversalpacote universal com todas as bibliotecas incluídas
Se você quiser compilar o app a partir do código-fonte com sua própria assinatura, o repositório descreve o procedimento para passar chaves através do GitHub Secrets:
# Для Linux и macOS кодируем keystore в base64
base64 -i your-keystore.jks | tr -d '\n' > keystore.txt
No Windows PowerShell, isso usa o método .NET integrado:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("your-keystore.jks")) | Out-File -FilePath keystore.txt -NoNewline
Estado atual e conclusões
O projeto está em desenvolvimento ativo: o repositório já tem mais de 2400 estrelas, embora haja cerca de 250 issues abertas no rastreador. O desenvolvedor avisa honestamente que bugs podem ocorrer em cenários não padrão.
Se players padrão como o VLC parecem sobrecarregados para você, e o mpv-android simples te afasta com seu design desatualizado, o mpvEx será uma excelente alternativa. Você pode experimentar builds prontos da página de releases no GitHub ou através do catálogo IzzyOnDroid. Para desenvolvedores Android, o repositório também servirá como um bom exemplo de como envolver uma biblioteca pesada de C/C++ em uma UI moderna em Compose.
Projetos relacionados