>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Java

Como Transformar Sua TV de Casa em uma Plataforma Web com WebHomeTV

Qualquer pessoa que já tentou configurar um centro de mídia no Android TV ou em uma TV box provavelmente já se deparou com o ecossistema TVBox e FongMi. Esses são players open-source populares que podem carregar conteúdo através de scripts em Python e JavaScript. Eles têm um problema: a interface da tela inicial é fortemente acoplada ao layout padrão de grade de aplicativos. Alterar o layout ou incorporar um feed de recomendação personalizado sem recompilar o APK inteiro simplesmente não é possível.

O desenvolvedor fish2018 decidiu seguir uma abordagem diferente e criou o repositório webhtv (WebHomeTV). O projeto é baseado na base de código do FongMi, mas muda o próprio conceito da tela inicial. Agora a tela inicial é uma página web completa construída com HTML, CSS e JS que se comunica com o Android através de uma bridge JS integrada e das APIs nativas do aplicativo.

O Que Está Por Dentro e Como Funciona

Essencialmente, este é um aplicativo Android híbrido para smartphones e TVs. Por dentro, duas camadas trabalham juntas. De um lado, os parsers de conteúdo familiares (Spider/CSP) permanecem, enquanto do outro, um contexto Chromium e um servidor web local são iniciados para renderizar layouts personalizados.

Você pode construir qualquer frontend, colocá-lo em seu próprio servidor ou no armazenamento da box, e a partir daí controlar a busca, chamar o player de vídeo, verificar a disponibilidade de links e sincronizar o histórico de visualização.

O Que Torna Este Projeto Interessante

Os desenvolvedores criaram um SDK nativo para o contexto do navegador. Quando o frontend carrega dentro do WebView do aplicativo, ele obtém acesso a um objeto com métodos para interagir com o hardware e o sistema operacional. A página web pode independentemente enviar requisições de rede cross-domain contornando as regras CORS, solicitar o histórico de visualização, usar o proxy do sistema e passar streams de vídeo diretamente para o player de vídeo interno. Se a grade de categorias padrão ficar entediante, você pode construir um frontend no estilo de um dashboard interativo cinematográfico ou como um terminal baseado em texto.

Uma atenção especial deve ser dada ao sistema integrado de verificação de links para armazenamento em nuvem e ao motor inteligente de classificação de fontes. O aplicativo verifica a validade de pastas compartilhadas em serviços populares de compartilhamento de arquivos logo de cara. Ao mesmo tempo, o sistema rastreia a taxa de sucesso de buscas e reprodução para cada site conectado. Com o tempo, as fontes mais rápidas e estáveis sobem automaticamente no topo da lista de resultados.

Controlar tudo isso com um controle remoto nem sempre é conveniente, então um painel de administração é integrado ao aplicativo. Se você executar o WebHomeTV na sua TV e abrir o endereço /m em um navegador no seu computador ou smartphone, um painel de controle web é aberto. Através dele, você pode configurar convenientemente as fontes, passar tokens de autorização, fazer upload de scripts de extensão personalizados e visualizar os logs do player de vídeo.

Se você tiver várias TV boxes e telefones em casa, não será necessário ajustar manualmente a configuração em cada dispositivo. A sincronização na rede local é implementada internamente: configurações, histórico de visualização, cookies de autorização e favoritos são transferidos entre os clientes em poucos cliques. Para dispositivos remotos, você pode configurar um relay intermediário em Go, Rust, Cloudflare Workers ou Vercel.

Arquitetura e Bibliotecas Nativas

O conteúdo técnico do repositório parece sério. Isso está longe de ser uma simples fachada sobre o MediaPlayer padrão do sistema Android.

O aplicativo é construído com Java 21 e Android SDK 37 (compileSdk 37, minSdk 24). O código suporta dois flavors: mobile para telas touch e leanback para operação com controle remoto.

A parte mais interessante está escondida no motor de reprodução. Os autores não se limitaram ao ExoPlayer padrão e incorporaram um MPV profundamente personalizado baseado em C/C++. Por dentro, ele usa builds recentes do FFmpeg (n8.0.3), libplacebo e curl com suporte a HTTP/2. Para saída de vídeo no Android 15, eles usaram uma combinação de Vulkan e MediaCodec via AImageReader e Android Hardware Buffer, o que torna possível decodificar o stream de vídeo diretamente na memória GPU sem cópias de frame desnecessárias.

Além do MPV, o projeto inclui um fork do Media3 (versão 1.11.0-alpha01-fongmi) com patches personalizados. Por exemplo, um patch adiciona um handler WebSocket de alto desempenho para comentários e legendas online com suporte a filas e limites de taxa de quadros.

Compilando a Partir do Código-Fonte

Se você quiser compilar o projeto por conta própria, precisará de um Android SDK preparado com NDK 28.2.13676358 e JDK 21. O repositório já contém bibliotecas .so pré-compiladas, então você não precisará recompilar o MPV e o FFmpeg do zero na primeira compilação.

O processo de compilação pelo console parece padrão:

git clone https://github.com/fish2018/webhtv.git
cd webhtv
echo "sdk.dir=$ANDROID_HOME" > local.properties
bash gradlew :app:assembleMobileArm64_v8aDebug :app:assembleLeanbackArm64_v8aDebug

Os arquivos APK finalizados são colocados em diretórios em app/build/outputs/apk/. O repositório também possui scripts na pasta scripts/ que verificam a integridade do cabeçalho ELF e recompilam as bridges JNI se necessário.

Kit do Desenvolvedor e Ferramentas de IA

Na pasta webhome-devkit, os autores compartilharam um kit completo de ferramentas para criar suas próprias telas iniciais. Existem templates de layout prontos, exemplos de extensões para injeção de código JS em páginas web e documentação para trabalhar com o SDK.

Um detalhe interessante: os desenvolvedores adicionaram um conjunto de regras prontas (skills) para assistentes de IA. Você pode conectá-los ao Cursor, Claude ou outros editores de rede neural para gerar automaticamente novos módulos e parsers para o WebHomeTV através de prompts.

Para Quem Este Projeto Será Útil

Se você está escrevendo projetos pessoais para Android TV ou quer fazer um hub de mídia personalizado para uso doméstico, o WebHomeTV lhe dará uma base pronta poderosa. Você não precisa escrever decodificadores, gerenciadores de requisições de rede e tratamento de eventos de controle remoto do zero. Basta construir uma página web elegante e vinculá-la ao SDK nativo.

O projeto acabou sendo específico, mas extremamente bem pensado. Ele resolve o antigo problema dos players de TV monolíticos, dando aos desenvolvedores web total liberdade na criação de interfaces para telas grandes.

Projetos relacionados