从源码构建时需先跑 warp/build.sh 编译 WARP 组件,依赖 Go 和 Android NDK;构建还需 Android SDK platform 34 与 JDK 17+,且项目不用 Gradle;TV 与手机需分别下载对应 APK,装错包名入口不对
android
fmhyplayMIT活跃维护把任意流媒体网站变成真正的播放器:面向电视的 Android 应用,内置原生播放器、广告拦截、WARP 和 IPTV 支持。
FMHYPlay: any streaming site, a real player. A TV-first Android app with a native player, ad blocking, in-app WARP and IPTV.
adb install -r FMHYPlay-TV-vX.Y.Z.apk需 Android 8.0(API 26)及以上,arm64 或 32 位 ARM;README 未说明具体内存或存储要求,也未提及 x86 支持
把任意流媒体网站变成 TV 原生播放器,广告拦截加内置 WARP,遥控器可用
把任意流媒体网站变成真正的播放器:面向电视的 Android 应用,内置原生播放器、广告拦截、WARP 和 IPTV 支持。
核心能力
- 用 WebView 加载站点并抓取 HLS/DASH/FLV 流交给 ExoPlayer 硬解播放
- 播放器按钮反向点击站点自身的剧集、字幕、服务器和清晰度控件
- 内置 Cloudflare WARP 用户态隧道,仅代理应用流量且免 root
- 基于域名的广告、追踪器和弹窗拦截,并阻止重定向
- 内置 iptv-org 超 11000 个公共频道,支持自加 m3u8 与 Xtream 登录
容易踩的坑
- v2.18.6FMHYPlay 2.18.6最新正式版2026-11-09 · 2026-11-09 09:07 UTC
🐞 Fixed
- No loading screen after pressing OK on Next episode (TV remote): the player acts on the key going down and closes, and the key coming back up reached the site, whose loading screen counts OK as "dismiss" and took itself down at once. Only an OK press that began on the loading screen dismisses it now.
- Next episode could get stuck on the old episode for a resumed anime when the catalog had no address for it: the app now swaps the episode number in the page's own address (
…episode-3becomes…episode-4) before trying to press the episode in the site's list. - A page that fails to load (no network, timed out) now ends the loading screen in a few seconds with the staring cat, instead of waiting 40 seconds.
- v2.18.5FMHYPlay 2.18.52026-11-09 · 2026-11-09 08:23 UTC
查看更新说明
✨ New
- Home in one step: a house button at the top right of the player and of a website (phone); on a TV, More, Home in the player and Menu, Back to home on a site. Or hold Back for 3 seconds on any screen.
- A loading screen while the app works on a site (loading, searching, opening the episode, waiting for the stream): a translucent screen with the title, the step and a cat. Tap it or press Back to see the page; it gives up by itself if a step is stuck for 40 seconds.
- Debug overlay (More, Debug overlay, off by default): resolution, frame rate, codec and decoder, bitrates, network speed, buffer, frames shown and dropped, and more.
🔧 Changed
- Updates are looked for every hour and at every boot (it was every 12 hours, with the app open), also with the app closed. Settings, Check automatically turns it off.
- Subtitles sit 20 dp from the bottom by default (they were 100 dp up); a position you had set keeps its spot. The subtitles button shows CC and the Home house uses the accent colour.
🐞 Fixed
- Episodes opened several seconds late: the app pressed your Sub / Dub choice even when the page was already in it, then waited 6 seconds. It now waits at most 3.5 seconds and skips the press once it saw it changes nothing. Next episode went from about 11 s to about 5 s on the test phone.
- Subtitles you had on were off after resuming: picks are now remembered by title too (also a track of the stream itself), so resuming turns them on. A pick from an earlier version comes back after you open that title from its page once.
- Continue watching places were sometimes lost: the place is now saved every 10 seconds while playing, leaving right after resuming no longer wipes it, and a video the page had not recorded yet gets its entry.
- The name above the focused player button went stale (it said "English" after subtitles went off): it now follows the setting at once.
- Home and its tiles looked zoomed after a video or page in landscape on a phone.
- v2.18.4FMHYPlay 2.18.42026-11-08 · 2026-11-08 09:47 UTC
查看更新说明
Everything new since 2.17.1 (2.18.0 to 2.18.4 together).
✨ New
- Series and anime in the player: Episodes list (seasons, pictures, names), Previous and Next, and the next episode starts by itself.
- Skip intro, recap and credits, with a Next episode button at the credits (OK on the remote presses it). Settings, Skip intros skips them without asking.
- Sub / Dub button for anime: one press switches, each site remembers your pick.
- Episodes open directly on 34 TV sites and 22 anime sites. Elsewhere the app presses the episode on the site for you, also behind a player's Episodes menu (Cinefork, Aether, Basement).
- A title's own page opens on about 70 sites; the others are searched and the match opened. Anime opens on anime sites only, wherever you open it from.
- Title page: the sites in one row with the episodes right below, plus cast, director, seasons and episodes, still running or ended, country and awards.
- Subtitles in any language (Arabic and others that never showed), converted so every script shows right, and lined up with the speech by themselves when a file is off.
- Picture in picture on phones, and hold for 2x: right side forward, left side back.
- Site pop-ups like "Join our Discord" and "What's new" close by themselves; movies opened from the catalog start playing by themselves.
🔧 Changed
- New player look: one row of icons (Previous, Next, Quality, Audio, Sub / Dub, Episodes, Servers, Subtitles, More, Cast, Full screen) and what is picked under the title. Speed, boosts, zoom and From the start are in More. On a TV the button the remote is on shows its name.
- FMHYPlayer: the player has a name; its button sits on the site's own player.
- Anime tab: its big grid is Popular anime (real anime only) and keeps loading more.
- WARP connects on more networks, says why when it can't, and stops at once when Cloudflare limits sign-ups (HTTP 429). Settings, WARP DNS takes your provider's DNS.
- Movies, TV, Anime and the update alert no longer wait for WARP; new site addresses arrive within the hour.
- Phone top bar: the logo alone, so Search gets the room.
🐞 Fixed
- "Next episode" showed near the start of an episode (Death Note and others) instead of Skip intro: opening titles listed as credits in the skip data are now ignored.
- Next episode no longer starts by itself during the credits: the 10 second countdown is gone, only your press moves on before the video ends.
- Next from a resumed anime opens the episode's own page and returns to the player, instead of hunting for the episode on the site.
- Resuming an anime on AnimeX (and other players that load their playlist under an address without ".m3u8") stayed on the site: the playlist is noticed again, and a remembered Sub / Dub that was already playing no longer holds the video back.
- The site's own Settings / quality menu no longer opens by itself while FMHYPlay looks for servers, when the page already lists them.
- Resuming an anime could leave you on the site with "No video found" when the site remembered Dub (or Sub) and the episode didn't have it.
- Anime opened from the general catalog (Death Note and others) listed movie and TV sites.
- App closed on start on Android 8 and 9 (many TV boxes, Fire OS 7, older Sony TVs).
- StreamCorner showed a blank page and its live streams never reached the player.
- NekoWatch and other sites behind one proxy address: a new episode or the Dub version now reaches the player.
- Servers on Cinejoy listed the player's skip buttons.
- IPTV on a TV: a channel tile kept its ring after the remote moved to the chips.
- Subtitle settings in landscape: Reset and Done stay on screen.
- v2.18.3FMHYPlay 2.18.32026-11-08 · 2026-11-08 08:17 UTC
查看更新说明
Everything new since 2.17.1 (2.18.0 to 2.18.3 together).
✨ New
- Series and anime in the player: Episodes list (seasons, pictures, names), Previous and Next, and the next episode starts by itself.
- Skip intro, recap and credits, with a Next episode countdown at the credits (OK on the remote presses it). Settings, Skip intros skips them without asking.
- Sub / Dub button for anime: one press switches, each site remembers your pick.
- Episodes open directly on 34 TV sites and 22 anime sites. Elsewhere the app presses the episode on the site for you, also behind a player's Episodes menu (Cinefork, Aether, Basement).
- A title's own page opens on about 70 sites; the others are searched and the match opened. Anime opens on anime sites only, wherever you open it from.
- Title page: the sites in one row with the episodes right below, plus cast, director, seasons and episodes, still running or ended, country and awards.
- Subtitles in any language (Arabic and others that never showed), converted so every script shows right, and lined up with the speech by themselves when a file is off.
- Picture in picture on phones, and hold for 2x: right side forward, left side back.
- Site pop-ups like "Join our Discord" and "What's new" close by themselves; movies opened from the catalog start playing by themselves.
🔧 Changed
- New player look: one row of icons (Previous, Next, Quality, Audio, Sub / Dub, Episodes, Servers, Subtitles, More, Cast, Full screen) and what is picked under the title. Speed, boosts, zoom and From the start are in More. On a TV the button the remote is on shows its name.
- FMHYPlayer: the player has a name; its button sits on the site's own player.
- Anime tab: its big grid is Popular anime (real anime only) and keeps loading more.
- WARP connects on more networks, says why when it can't, and stops at once when Cloudflare limits sign-ups (HTTP 429). Settings, WARP DNS takes your provider's DNS.
- Movies, TV, Anime and the update alert no longer wait for WARP; new site addresses arrive within the hour.
- Phone top bar: the logo alone, so Search gets the room.
🐞 Fixed
- Resuming an anime on AnimeX (and other players that load their playlist under an address without ".m3u8") stayed on the site: the playlist is noticed again, and a remembered Sub / Dub that was already playing no longer holds the video back.
- The site's own Settings / quality menu no longer opens by itself while FMHYPlay looks for servers, when the page already lists them.
- Resuming an anime could leave you on the site with "No video found" when the site remembered Dub (or Sub) and the episode didn't have it.
- Anime opened from the general catalog (Death Note and others) listed movie and TV sites.
- App closed on start on Android 8 and 9 (many TV boxes, Fire OS 7, older Sony TVs).
- StreamCorner showed a blank page and its live streams never reached the player.
- NekoWatch and other sites behind one proxy address: a new episode or the Dub version now reaches the player.
- Servers on Cinejoy listed the player's skip buttons.
- IPTV on a TV: a channel tile kept its ring after the remote moved to the chips.
- Subtitle settings in landscape: Reset and Done stay on screen.
- v2.18.2FMHYPlay 2.18.22026-11-08 · 2026-11-08 07:58 UTC
查看更新说明
Everything new since 2.17.1 (2.18.0, 2.18.1 and 2.18.2 together).
✨ New
- Series and anime in the player: Episodes list (seasons, pictures, names), Previous and Next, and the next episode starts by itself.
- Skip intro, recap and credits, with a Next episode countdown at the credits (OK on the remote presses it). Settings, Skip intros skips them without asking.
- Sub / Dub button for anime: one press switches, each site remembers your pick.
- Episodes open directly on 34 TV sites and 22 anime sites. Elsewhere the app presses the episode on the site for you, also behind a player's Episodes menu (Cinefork, Aether, Basement).
- A title's own page opens on about 70 sites; the others are searched and the match opened. Anime opens on anime sites only, wherever you open it from.
- Title page: the sites in one row with the episodes right below, plus cast, director, seasons and episodes, still running or ended, country and awards.
- Subtitles in any language (Arabic and others that never showed), converted so every script shows right, and lined up with the speech by themselves when a file is off.
- Picture in picture on phones, and hold for 2x: right side forward, left side back.
- Site pop-ups like "Join our Discord" and "What's new" close by themselves; movies opened from the catalog start playing by themselves.
🔧 Changed
- New player look: one row of icons (Previous, Next, Quality, Audio, Sub / Dub, Episodes, Servers, Subtitles, More, Cast, Full screen) and what is picked under the title. Speed, boosts, zoom and From the start are in More. On a TV the button the remote is on shows its name.
- FMHYPlayer: the player has a name; its button sits on the site's own player.
- Anime tab: its big grid is Popular anime (real anime only) and keeps loading more.
- WARP connects on more networks, says why when it can't, and stops at once when Cloudflare limits sign-ups (HTTP 429). Settings, WARP DNS takes your provider's DNS.
- Movies, TV, Anime and the update alert no longer wait for WARP; new site addresses arrive within the hour.
- Phone top bar: the logo alone, so Search gets the room.
🐞 Fixed
- Resuming an anime could leave you on the site with "No video found" when the site remembered Dub (or Sub) and the episode didn't have it.
- Anime opened from the general catalog (Death Note and others) listed movie and TV sites.
- App closed on start on Android 8 and 9 (many TV boxes, Fire OS 7, older Sony TVs).
- StreamCorner showed a blank page and its live streams never reached the player.
- NekoWatch and other sites behind one proxy address: a new episode or the Dub version now reaches the player.
- Servers on Cinejoy listed the player's skip buttons.
- IPTV on a TV: a channel tile kept its ring after the remote moved to the chips.
- Subtitle settings in landscape: Reset and Done stay on screen.
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Why
Streaming sites are built for a desktop browser with a mouse. On a TV remote they are painful, they are full of pop-ups, and their embedded players stutter on weak hardware. FMHYPlay keeps the site (so you keep every title and server it offers) but takes over the part that goes wrong:
- It finds the video stream the page starts and plays it in FMHYPlayer (ExoPlayer with the hardware decoder), with nothing painted over the picture.
- It drives the site for you: pick a title and it opens that title's page (or the exact episode); the player's Episodes, Sub / Dub, Servers and Quality buttons press the site's own buttons, so you do not go back to the page.
- It blocks ads and pop-ups, tunnels the app's own traffic through Cloudflare WARP when you want it, and works with a TV remote and with touch.
Features
Cast to TV
- The Cast button in the phone's player sends the video to a TV on the same Wi-Fi, from the same spot. The phone becomes the remote: play, pause, seek, ±10 s and TV volume (the phone's volume keys work too)
- TV with FMHYPlay (recommended): the TV plays the stream itself, with the site's headers and cookie, WARP, ad blocking and subtitles. It opens even when FMHYPlay is closed on the TV
- Chromecast, Google TV and TVs with Cast built in: no app needed on the TV; the phone relays the stream so sites still accept it
- DLNA / UPnP smart TVs (Samsung, LG, Sony, Kodi and others): same relay; works best with MP4 and TS streams, since not every TV plays HLS
Series and anime
- Episodes list in the player (seasons, stills, names), Previous and Next, and the next episode starts by itself
- Skip intro, recap and credits (times from TheIntroDB and AniSkip), with a Next episode button at the credits; Settings, Skip intros skips them for you
- Sub / Dub button for anime, remembered per site
- Opens the exact episode directly on 34 TV sites and 22 anime sites; elsewhere it presses the episode in the site's own list or menus
FMHYPlayer
- Hands off automatically when a page starts an HLS, DASH or live FLV stream; falls back to the page if the stream cannot be played
- One row of icon buttons: Previous, Next, Quality, Audio, Sub / Dub, Episodes, Servers, Subtitles, More, Cast, Full screen; what is picked shows under the title, and on a TV the button the remote is on shows its name
- Replays the page's Referer, Origin and cookies, so streams that check them still play
- Resumes where you stopped on any site or server, with a Restart button
- Quality list with frame rate (for example 1080p60), audio and subtitle tracks, speed and zoom modes
- Servers and Quality buttons that control the site's own player, including players inside cross-origin iframes
- Volume boost (up to +12 dB) and Dialog boost (clearer voices, on by default)
- Subtitles in any language from OpenSubtitles, converted so every script shows right, remembered per title, optional auto subtitles in your language, and auto-sync that lines a file up with the speech; size, position, color, background and timing
- Simkl and PunchPlay tracking (optional): what you watch is tracked there, titles you finish are marked watched
- Phone: picture in picture, hold the right or left side for 2x, follows the rotation lock with a Full screen button; swipe for brightness and volume, double-tap to skip 10 seconds
Browsing
- Home with Continue watching, Favorites, and New and Popular for Movies, TV and Anime (from Cinemeta and Kitsu)
- One search for movies, series, IPTV channels and sites, by typing or by voice
- A directory of streaming sites that tracks the FMHY lists; opens a title's own page on about 70 sites and searches the rest for you, then opens the match
- Anime opens on anime sites only
- Add your own site, an optional address bar, dark pages, a cursor for the TV remote (with funny and useful looks)
- Pop-ups that are real links open in the same tab (Back returns); pop-up ads are dropped, and "Join our Discord" style nag dialogs close by themselves
Your language
- English, Hindi, Spanish, Portuguese, Indonesian, Arabic (right to left) and German, picked from the phone's or TV's language
Network and privacy
- In-app Cloudflare WARP: a userspace WireGuard tunnel for the app's traffic only, with no VPN permission and no root; LAN addresses stay direct. A WARP log to share when it fails
- Domain-based ad, tracker and pop-up blocking, plus redirect blocking
- No FMHYPlay account, no analytics, no telemetry. Updates come from this repository's releases, with What's new before you install
IPTV
- More than 11,000 public channels from iptv-org, grouped by category and country, with logos
- A background check hides channels that are offline, and a Working row shows the ones that played
- Add your own playlist, a single
.m3u8stream link, an Xtream Codes login or a Stalker portal (MAC address); each playlist gets its own row - Category and Language filters in every channel list, and pins: keep a list with its filters (India · News · Hindi) as its own row
- Favorite channels with a heart; channels also show up in the one search
Engineering
- Plain Java and SDK command-line tools, no Gradle, roughly 11 MB per APK
- Reproducible CI build and signed releases from a tag
Screenshots
Install
Download the APK for your device from Releases:
| File | For |
|---|---|
FMHYPlay-TV-vX.Y.Z.apk | Android TV, Google TV, Fire TV, boxes (adds the TV launcher entry) |
FMHYPlay-Android-vX.Y.Z.apk | phones and tablets |
Allow installs from your file manager or browser, open the APK, done. On a TV, adb install -r FMHYPlay-TV-vX.Y.Z.apk works over the network. Updates install over the old version because releases are signed with the same key. Check a download with SHA256SUMS.txt from the release.
Requires Android 8.0 (API 26) or newer, arm64 or 32-bit ARM.
Fire TV
- On the Fire TV: Settings → My Fire TV → About, press OK on the device name 7 times (developer options on).
- Install Downloader (by AFTVnews) from the Amazon Appstore.
- Settings → My Fire TV → Developer options → Install unknown apps → turn on Downloader.
- In Downloader, type the code
9828006orhttps://github.com/fmhyplay/android/releases/latest/download/FMHYPlay-TV.apk, then Go → Install → Open.
Fire OS 7 or newer (Fire TV Stick 4K and later). The app updates itself afterwards. That link always gets the newest TV APK (FMHYPlay-Android.apk for phones).
Build from source
git clone https://github.com/fmhyplay/android
cd android
warp/build.sh # builds the WARP helper (needs Go and the Android NDK)
./build.sh # needs an Android SDK (platform 34, build-tools) and JDK 17+
The APKs appear in the project folder. Details, signing and the CI setup are in the build guide.
How it works
- The page loads in a WebView. A small script (
assets/frame.js) runs in every frame, including cross-origin embeds. - The WebView's requests are watched for HLS and DASH playlists; some sites hide them behind URLs without an extension, so downloads are also recognised by their first bytes.
- When a stream shows up, the page is paused and the stream goes to ExoPlayer with the same headers and cookies the page used.
- The same script reads the page's server and quality lists. The player's buttons send a click back to it, the page switches, and the new stream is handed over the same way.
Support
FMHYPlay is free and made in spare time. If it is useful to you: Buy me a coffee or PayPal.
Legal
FMHYPlay is a browser and a media player. It does not host, store, index or distribute any video, and it ships no list of streams. The sites it opens, the IPTV playlists it reads and the content they serve are provided by third parties; what you open and play is your responsibility, and you should only use content you have the right to watch. See THIRD_PARTY.md for the components and data sources it builds on. FMHYPlay is not affiliated with or endorsed by FMHY, Cloudflare, Stremio, OpenSubtitles, iptv-org or any streaming site.