0

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.

Vayou tocando um vídeo no celular

Dois apps, um código

Celular e tabletAndroid TV
Iddev.vayoudev.vayoutv
InterfaceMaterial 3, para o dedoandroidx.tv.material3, para o controle a 3 metros
Compartilhadoo 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.
BibliotecaMúsicaRede
BibliotecaMúsicaRede

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.

Feedback é bem-vindo — principalmente sobre formatos que não abrirem, que é onde o decodificador embutido deveria salvar e às vezes não salva.

Carregando publicação patrocinada...