Vayou para Android — Vídeo, Música e IPTV num app só (Kotlin + Compose)
Fiz a versão Android do Vayou, meu player de vídeo. Só que no celular ele cresceu: virou também player de música e cliente de IPTV, e toca arquivo de compartilhamento de rede sem baixar.
Kotlin + Jetpack Compose + Media3/ExoPlayer, com um decodificador FFmpeg embutido para os formatos que o hardware do aparelho recusa — e dá para forçar um ou outro, quando você quer descobrir qual dos dois é o culpado.

Dois apps, um código
| Celular e tablet | Android TV | |
|---|---|---|
| Id | dev.vayou | dev.vayoutv |
| Interface | Material 3, para o dedo | androidx.tv.material3, para o controle a 3 metros |
| Compartilhado | o player, a biblioteca, o banco, a rede, os tokens de design |
São listagens e instalações separadas — um celular não é uma televisão, e as duas não dividem tela nenhuma. Mas tudo abaixo da interface é o mesmo código.
Música
Biblioteca própria: músicas, playlists, pastas, álbuns, artistas. Fila que você reordena segurando a linha. Edição de tag e troca de capa dentro do app.
O equalizador é de 5 bandas — 60, 230, 910, 3600 e 14000 Hz — usando o efeito do próprio Android, então vale para o que estiver tocando. Tem preset para flat, voz, clássica, dance, folk, heavy metal, hip hop, jazz, pop e rock, além da sua curva.
O preset de voz existe porque nenhuma curva de gênero serve para fala: ele corta o ronco abaixo de 300 Hz e levanta as consoantes na região de 3,6 kHz. É isso que "não dá para entender o que estão falando" quer dizer, na prática.
Rede — SMB e IPTV
- SMB: compartilhamentos descobertos na rede ou adicionados por endereço, navegados e tocados sem baixar. Dá para fixar as pastas que você abre sempre.
- IPTV: listas M3U adicionadas por endereço, navegáveis por país ou grupo, com favoritos.
- Google Cast: aqui tem um detalhe que eu gosto — o celular serve o arquivo ao receptor pela rede local. O Chromecast busca, em vez de receber uma cópia empurrada. A legenda vai junto.
![]() | ![]() | ![]() |
| Biblioteca | Música | Rede |
Legenda
O mesmo motivo pelo qual escrevi a versão de desktop:
- Faixas embutidas e externas, do arquivo ou escolhidas do armazenamento
- Busca no OpenSubtitles, por arquivo ou por nome
- Tradução ao vivo da legenda em execução
- Ajuste de atraso, para frente e para trás
- Estilo completo: fonte, tamanho, posição, cor, contorno, sombra, plaquinha de fundo, negrito — ou respeitar o estilo com que a legenda foi escrita, ou entregar a questão inteira para as legendas do próprio Android
O resto que vale citar
- Picture in picture — o filme encolhe num canto quando você sai
- Sleep timer, inclusive na opção quando este acabar
- Pular silêncio, brilho lembrado entre filmes, trava de controles para a palma da mão não fazer nada
- Brilho ambiente: as barras laterais do filme assumem a cor dele
- Miniaturas geradas de um quadro que você escolhe — o primeiro, um mais adiante depois dos créditos de abertura, ou mais adiante com plano B quando aquele quadro é uma cor chapada
- Acervo Privado, para o que não deve aparecer na biblioteca
- Onze idiomas, com RTL diagramado de verdade, não espelhado por acidente
Sendo honesto
- GPL-3, código aberto. (O desktop é MIT — projetos diferentes, licenças diferentes.)
- O app de Android TV ainda não está publicado na loja. Sai do mesmo repositório, mas por enquanto só compilando você mesmo.
- A tradução de legenda usa um endpoint não oficial do Google Translate. Pode limitar por volume ou parar de responder sem aviso.
minSdk 23, ou seja, Android 6 para cima.
Links
- Play Store: https://play.google.com/store/apps/details?id=dev.vayou
- Código: https://github.com/0hgawa/vayou-android
Feedback é bem-vindo — principalmente sobre formatos que não abrirem, que é onde o decodificador embutido deveria salvar e às vezes não salva.


