FMHYPlay

Verified safeOpen sourceExclusive
—
No reviews reviews
55
downloads
8.0
android

AI summary

Open-source streaming browser and native player for Android phones and TVs, with IPTV, casting, subtitles, and playback controls. Opens user-selected sites rather than hosting or indexing video.

Generated by AI. May contain inaccuracies.

About this app

# FMHYPlay Android - Especificación Técnica Detallada

### 1. Identidad del Proyecto

- *Nombre:* FMHYPlay - *Repositorio:* `fmhyplay/android` - *Tipo:* Aplicación Android open-source, TV-first - *Licencia:* MIT - *Estado:* Activo, 19 releases, última versión 2.19.0 - *Web:* `fmhyplay.github.io/android/` - *Métricas del repo:* 368 stars, 22 forks, 5 watchers, 1 contribuidor principal - *Filosofía:* "Any streaming site, a real player" - Cualquier sitio, un reproductor de verdad.

*Definición funcional:* Es un cliente de navegación + reproductor. No es un agregador de contenido. No aloja, indexa ni distribuye video. Abre páginas web elegidas por el usuario en un WebView, detecta el flujo de video que la página inicia y lo transfiere a un reproductor nativo.

### 2. Stack Tecnológico

*Lenguajes:* - *Java 87.6%* - Lógica principal de la app, UI, reproductor, gestión de red y cast. - *JavaScript 8.7%* - Script de inyección en WebView (`assets/frame.js`) para inspección de DOM y comunicación bidireccional. - *Go 2.3%* - Helper de WARP, túnel WireGuard en userspace. - *Otros 1.4%* - Recursos, XML, scripts de build, docs.

*Sin Gradle:* Build con Java puro + herramientas SDK por línea de comandos. Esto reduce dependencias, hace el build más reproducible y el APK final más ligero.

*Tamaño final:* ∼11 MB por APK. Muy ligero para lo que hace.

*Requisitos mínimos:* - Android 8.0+ / API 26+ - Arquitecturas: arm64-v8a y armeabi-v7a (32-bit ARM) - Sin root requerido - Sin permiso de VPN (WARP es userspace)

*Herramientas de build:* - Android SDK Platform 34 + Build-Tools - JDK 17+ - Go + Android NDK (solo para compilar `warp/build.sh`) - Scripts: `warp/build.sh` + `./build.sh` - CI reproducible + releases firmados desde tag, con `SHA256SUMS.txt` para verificación.

### 3. Estructura del Repositorio .github/ - Workflows CI, build reproducible, releases assets/ - frame.js, recursos web inyectados en WebView docs/ - Documentación, guía de usuario, guía de build libs/ - Librerías nativas / dependencias empaquetadas res/ - Recursos Android: layouts TV/phone, drawables, strings i18n scripts/ - Scripts de automatización de build y release src/me/champdev/weblock/ - Código fuente principal Java test/ - Tests unitarios warp/ - Código Go para helper WARP + build.sh .gitignore README Esta estructura separa claramente: UI (res), lógica (src), bridge web (assets), red segura (warp) y automatización (scripts/.github).

### 4. Arquitectura de Ejecución - Pipeline de Reproducción

Este es el núcleo del sistema, en 5 fases:

*Fase 1: Carga en WebView* La página del sitio se carga en un WebView de Android. Se mantiene la navegación completa del sitio para que el usuario conserve catálogo, buscador, servidores y episodios.

*Fase 2: Inyección de `frame.js`* Un script JS se ejecuta en cada frame, incluyendo embeds cross-origin. Su función es: - Observar el DOM. - Leer listas de servidores y calidades que la página expone. - Exponer una interfaz de bridge para recibir clics desde el reproductor nativo. - Reportar cuando la página intenta iniciar un flujo.

*Fase 3: Detección de Stream* La app observa las peticiones del WebView buscando playlists HLS (.m3u8) y DASH (.mpd). Como algunos sitios ocultan la extensión, también hay detección por sniffing de primeros bytes del contenido descargado.

Tipos soportados: HLS, DASH, Live FLV. Si el stream no es reproducible, hace fallback a la página.

*Fase 4: Handover a ExoPlayer* Cuando se detecta un stream válido: 1. La página se pausa. 2. El stream se entrega a FMHYPlayer (ExoPlayer con decodificador por hardware). 3. Se reenvían los mismos headers que usó la página: `Referer`, `Origin` y `Cookies`. Esto es crítico porque muchos servidores validan esos headers para aceptar la reproducción. 4. Se muestra una pantalla de carga translúcida con título, paso actual y animación mientras se hace el handover.

*Fase 5: Control Bidireccional* El reproductor no es pasivo. Sus botones envían clics de vuelta a la página vía `frame.js`: - Cambiar servidor -> clic en el botón de servidor del sitio. - Cambiar calidad -> clic en el botón de calidad del sitio. - Cambiar episodio -> clic en el episodio en la lista del sitio. - Cambiar Sub/Dub -> clic en el control correspondiente.

La página cambia, genera un nuevo stream, y el nuevo stream vuelve a ExoPlayer por el mismo pipeline. El usuario nunca vuelve a la página.

### 5. FMHYPlayer - Reproductor Nativo

*Motor:* ExoPlayer con decodificador por hardware.

*UI - Dos grupos de botones:* - *Izquierda:* Anterior, Siguiente, Episodios - *Derecha:* Calidad, Audio, Sub/Dub, Servidores, Subtítulos, Más, Cast, Pantalla completa - Los menús abren como panel lateral. - La selección actual se muestra bajo el título. - En TV, el botón con foco muestra su nombre.

*Funciones de reproducción:* - *Resume:* Guarda posición cada 10 segundos. Al volver, reanuda donde lo dejaste en cualquier sitio o servidor. Botón Restart. - *Calidad:* Lista con framerate (ej. 1080p60), pistas de audio y subtítulos, velocidad y modos de zoom. - *Volume Boost:* Hasta +12 dB. - *Dialog Boost:* Realce de voces, desactivado por defecto, activable en Settings o en el reproductor. - *Skip:* Intro, recap y créditos con datos de TheIntroDB y AniSkip. Botón Next episode en créditos. Opción en Settings para skip automático. - *Episodios:* Strip inferior con stills y nombres mientras se reproduce. Anterior/Siguiente + autoplay del siguiente. - *Sub/Dub:* Para anime, recordado por sitio. - *Precisión de episodio:* Abre el episodio exacto directamente en 34 sitios de TV y 22 sitios de anime. En el resto, pulsa el episodio en la lista del sitio.

*Subtítulos:* - Fuente: OpenSubtitles, en cualquier idioma. - Conversión para que cada script se muestre correctamente. - Recordados por título. - Auto-subtítulos opcionales en tu idioma. - Auto-sync: alinea el archivo con el habla. - Personalización: tamaño, posición, color, fondo y timing.

*Debug Overlay (Más > Debug overlay, off por defecto):* Panel en borde derecho, refresco cada 1 segundo, con: Resolución, framerate, codec, decoder (hardware/software), bitrate video/audio, velocidad de red, buffer, frames mostrados y perdidos, tipo de stream, host, tiempo de apertura del video y memoria.

*Móvil:* - Picture-in-Picture. - Mantener lado derecho/izquierdo para 2x. - Respeta bloqueo de rotación + botón Full screen. - Swipe para brillo y volumen. - Doble toque para saltar 10s.

*Navegación rápida:* - Back to Home en 1 paso desde el reproductor (móvil: botón casa, TV: Más > Home) y desde web (móvil: casa arriba derecha, TV: Menú > Back to home) o manteniendo Back 3 segundos en cualquier pantalla.

### 6. Módulo de Cast

*Objetivo:* El móvil como mando, la TV como pantalla.

*Modos:*

*a) TV con FMHYPlay (Recomendado)* La TV reproduce el stream ella misma, con headers y cookie del sitio, WARP, bloqueo de anuncios y subtítulos. Funciona incluso cuando FMHYPlay está cerrado en la TV.

*b) Chromecast / Google TV / TVs con Cast integrado* Sin app en la TV. El móvil hace relay del stream para que los sitios lo acepten.

*c) DLNA / UPnP (Samsung, LG, Sony, Kodi y otros)* Mismo relay. Mejor rendimiento con MP4 y TS, ya que no todas las TVs reproducen HLS.

*Controles desde el móvil:* Play, pausa, seek, ±10s y volumen de TV (las teclas de volumen del móvil también funcionan).

### 7. Módulo de Navegación y Descubrimiento

*Home:* - Continue watching - Favorites - Contenido de tu país primero (por idioma, desde TMDB) - Luego New y Popular para Movies, TV y Anime (desde Cinemeta y Kitsu) - Side rail en TV, bottom tabs en móvil - Pull to refresh - Trailers en páginas de títulos

*Búsqueda Unificada:* Un solo buscador para películas, series, canales IPTV y sitios. Por escritura o por voz.

*Directorio de Sitios:* Sigue las listas FMHY. Abre la página propia del título en ∼70 sitios y busca en el resto, luego abre el match. Anime abre solo en sitios de anime.

*Extras de navegación:* - Añadir tu propio sitio. - Barra de direcciones opcional. - Páginas oscuras. - Cursor para mando de TV con estilos divertidos y útiles. - Pop-ups que son links reales abren en la misma pestaña (Back vuelve). Pop-up ads se descartan. Diálogos tipo "Join our Discord" se cierran solos.

### 8. Módulo IPTV

*Fuente principal:* iptv-org, más de 11,000 canales públicos, agrupados por categoría y país, con logos.

*Lógica:* - Check en background que oculta canales offline. - Canales de tu país y sus categorías primero. - En el reproductor: Canal +/-, Anterior/Siguiente y strip de canales para moverte dentro de la categoría.

*Playlists personalizadas:* - Playlist propia .m3u / .m3u8 - Un solo link de stream .m3u8 - Login Xtream Codes - Portal Stalker (MAC address) - Cada playlist tiene su propia fila.

*Filtros y organización:* - Filtros de Categoría e Idioma en cada lista. - Pins: guarda una lista con sus filtros (ej. India · News · Hindi) como su propia fila. - Favoritos con corazón. - Los canales aparecen también en la búsqueda unificada.

### 9. Módulo de Red, Privacidad y Seguridad

*WARP Integrado (Cloudflare):* - Túnel WireGuard en userspace, implementado en Go. - Solo para el tráfico de la app, no para todo el sistema. - Sin permiso VPN, sin root. - Direcciones LAN quedan directas, no pasan por el túnel. - Log de WARP para compartir cuando falla.

*Bloqueo:* - Bloqueo por dominio de anuncios, trackers y pop-ups. - Bloqueo de redirecciones. - Sin cuenta FMHYPlay. - Sin analítica, sin telemetría. - Actualizaciones desde releases del repositorio, buscadas cada hora y en cada boot (incluso con app cerrada), con What's new antes de instalar.

*Integraciones de terceros (ver THIRD_PARTY.md):* - TMDB, Cinemeta, Kitsu para metadatos. - TheIntroDB, AniSkip para skip. - OpenSubtitles para subtítulos. - iptv-org para IPTV. - Simkl y PunchPlay para tracking opcional. - Cloudflare WARP para red.

### 10. Internacionalización

Idiomas soportados: Inglés, Hindi, Español, Portugués, Indonesio, Árabe (RTL) y Alemán. Se toma del idioma del teléfono o TV.

### 11. Formatos de Distribución

- *FMHYPlay-TV-vX.Y.Z.apk:* Android TV, Google TV, Fire TV, boxes. Añade entrada en launcher TV. - *FMHYPlay-Android-vX.Y.Z.apk:* Teléfonos y tablets. - Firmados con la misma clave, por lo que las actualizaciones se instalan sobre la versión anterior. - Verificación con `SHA256SUMS.txt` del release.

### 12. Resumen de Ingeniería

FMHYPlay es un ejemplo de ingeniería minimalista pero muy eficaz: - *Ligero* porque evita Gradle y usa Java puro. - *Potente* porque delega la reproducción a ExoPlayer hardware. - *Inteligente* porque no intenta replicar el catálogo de los sitios, sino que los usa como fuente y toma el control solo de la reproducción. - *Respetuoso* porque no pide cuenta, no hace tracking y su red es aislada por app.

Es una arquitectura de *bridge*: WebView para descubrir, JS para controlar, ExoPlayer para reproducir, Go para tunelizar, y Java para orquestar todo con UI TV-first.

---

About this version

Version
2.19.1 (21901)
Size
11.69 MB
Requires Android
8.0
Target SDK
26
Architecture
arm64-v8a, armeabi-v7a
Downloads
55
Updated
Nov 12, 2026
Package
me.champdev.weblock
Languages7
ArabicEnglishGermanHindiIndonesianPortugueseSpanish

Similar apps

Ratings & reviews

—
0 ratings
  • 5
    0
  • 4
    0
  • 3
    0
  • 2
    0
  • 1
    0

Write a review

Tap a star to rate this app