>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
Java

Cómo convertir tu TV en una plataforma web con WebHomeTV

Cualquiera que haya intentado configurar un centro multimedia en Android TV o en un TV box probablemente se ha topado con el ecosistema TVBox y FongMi. Estos son reproductores de código abierto populares que pueden cargar contenido a través de scripts en Python y JavaScript. Tienen un problema: la interfaz de la pantalla de inicio está acoplada al diseño estándar de cuadrícula de aplicaciones. Cambiar el diseño o incrustar un feed de recomendaciones personalizado sin reconstruir todo el APK simplemente no es posible.

El desarrollador fish2018 decidió tomar un enfoque diferente y creó el repositorio webhtv (WebHomeTV). El proyecto está basado en la base de código de FongMi pero cambia el concepto mismo de la pantalla de inicio. Ahora la pantalla de inicio es una página web completa construida con HTML, CSS y JS que se comunica con Android a través de un puente JS integrado y las API nativas de la aplicación.

Qué hay dentro y cómo funciona

En esencia, esta es una aplicación Android híbrida para smartphones y TVs. En su interior, dos capas trabajan juntas. Por un lado, se mantienen los analizadores de contenido familiares (Spider/CSP), mientras que por otro, un contexto de Chromium y un servidor web local se inicializan para renderizar diseños personalizados.

Puedes construir cualquier frontend, colocarlo en tu propio servidor o en el almacenamiento del box, y desde allí controlar la búsqueda, llamar al reproductor de video, verificar la disponibilidad de enlaces y sincronizar el historial de visualización.

Qué hace interesante este proyecto

Los desarrolladores diseñaron un SDK nativo para el contexto del navegador. Cuando el frontend se carga dentro del WebView de la aplicación, obtiene acceso a un objeto con métodos para interactuar con el hardware y el sistema operativo. La página web puede enviar solicitudes de red entre dominios de forma independiente, evitando las reglas CORS, solicitar el historial de visualización, usar el proxy del sistema y pasar transmisiones de video directamente al reproductor de video interno. Si la cuadrícula de categorías estándar se vuelve aburrida, puedes construir un frontend al estilo de un panel interactivo cinematográfico o como una terminal basada en texto.

Se debe prestar especial atención al sistema integrado de verificación de enlaces para almacenamiento en la nube y al motor de clasificación inteligente para fuentes. La aplicación verifica la validez de las carpetas compartidas en servicios populares de intercambio de archivos desde el primer momento. Al mismo tiempo, el sistema rastrea la tasa de éxito de búsquedas y reproducción para cada sitio conectado. Con el tiempo, las fuentes más rápidas y estables ascienden automáticamente en la lista de resultados.

Controlar todo esto con un control remoto no siempre es conveniente, por lo que se integra un panel de administración en la aplicación. Si ejecutas WebHomeTV en tu TV y abres la dirección /m en un navegador de tu computadora o smartphone, se abre un panel de control web. A través de él, puedes configurar fuentes convenientemente, pasar tokens de autorización, subir scripts de extensión personalizados y ver los registros del reproductor de video.

Si tienes varios TV boxes y teléfonos en tu hogar, no necesitarás ajustar manualmente la configuración en cada dispositivo. La sincronización de red local está implementada en el interior: la configuración, el historial de visualización, las cookies de autorización y los marcadores se transfieren entre clientes en un par de clics. Para dispositivos remotos, puedes configurar un relé intermedio en Go, Rust, Cloudflare Workers o Vercel.

Arquitectura y bibliotecas nativas

El contenido técnico del repositorio se ve serio. Esto está lejos de ser una simple fachada sobre el MediaPlayer de Android del sistema.

La aplicación está construida con Java 21 y Android SDK 37 (compileSdk 37, minSdk 24). El código soporta dos variantes: mobile para pantallas táctiles y leanback para operación con control remoto.

La parte más interesante está oculta en el motor del reproductor. Los autores no se limitaron al ExoPlayer estándar e incorporaron un MPV profundamente personalizado basado en C/C++. En su interior, utiliza builds recientes de FFmpeg (n8.0.3), libplacebo y curl con soporte para HTTP/2. Para la salida de video en Android 15, usaron una combinación de Vulkan y MediaCodec a través de AImageReader y Android Hardware Buffer, lo que hace posible decodificar la transmisión de video directamente en la memoria GPU sin copias de frames innecesarias.

Además de MPV, el proyecto incluye un fork de Media3 (versión 1.11.0-alpha01-fongmi) con parches personalizados. Por ejemplo, un parche añade un handler WebSocket de alto rendimiento para comentarios y subtítulos en línea con soporte de cola y límites de tasa de frames.

Compilación desde el código fuente

Si quieres compilar el proyecto tú mismo, necesitarás un Android SDK preparado con NDK 28.2.13676358 y JDK 21. El repositorio ya contiene bibliotecas .so precompiladas, por lo que no necesitarás recompilar MPV y FFmpeg desde cero en la primera compilación.

El proceso de compilación desde la consola se ve estándar:

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

Los archivos APK terminados se colocan en directorios en app/build/outputs/apk/. El repositorio también tiene scripts en la carpeta scripts/ que verifican la integridad del encabezado ELF y reconstruyen los puentes JNI si es necesario.

Kit de desarrollo y herramientas de IA

En la carpeta webhome-devkit, los autores compartieron un conjunto completo de herramientas para crear tus propias pantallas de inicio. Hay plantillas de diseño listas para usar, ejemplos de extensiones para inyectar código JS en páginas web y documentación para trabajar con el SDK.

Un detalle interesante: los desarrolladores añadieron un conjunto de reglas listas (skills) para asistentes de IA. Puedes conectarlos a Cursor, Claude u otros editores de redes neuronales para generar automáticamente nuevos módulos y analizadores para WebHomeTV a través de prompts.

A quién le será útil este proyecto

Si estás escribiendo proyectos personales para Android TV o quieres hacer un centro multimedia personalizado para uso doméstico, WebHomeTV te dará una base potente lista para usar. No necesitas escribir decodificadores, administradores de solicitudes de red y manejo de eventos de control remoto desde cero. Solo construye una página web elegante y vincúlala al SDK nativo.

El proyecto resultó ser específico pero extremadamente bien pensado. Resuelve el problema de larga data de los reproductores de TV monolíticos, dando a los desarrolladores web libertad completa para crear interfaces para pantallas grandes.

Proyectos relacionados