直接双击 index.html 可能因跨域限制导致部分功能异常,建议用本地服务器打开;模拟器依赖 EmulatorJS 核心,首次加载需联网下载;Arcade/FBNeo 预置 ROM 列表为空,需自行上传或填 URL。
Easy-Web-TV-M3u8
zhangbohengMPL-2.0活跃维护把网页变成电视盒子:用 JavaScript 和 jQuery 插件在浏览器里播放 m3u8 直播源,看 IPTV、影视剧、动漫,也能听播客、电台和看小说。
Easy way to listen to podcasts or music or radio stations, watch movies, series, animes, shows, porn or IPTV, read novel or manga books and play games on the website.
git clone https://github.com/zhangboheng/Easy-Web-TV-M3u8.git
cd Easy-Web-TV-M3u8
python -m http.server 8000README 未说明;项目为纯前端静态网页,浏览器打开即可,模拟器游戏在浏览器内运行
纯前端网页娱乐聚合站,一个页面看直播、影视、音乐、小说并玩模拟器游戏
把网页变成电视盒子:用 JavaScript 和 jQuery 插件在浏览器里播放 m3u8 直播源,看 IPTV、影视剧、动漫,也能听播客、电台和看小说。
核心能力
- 聚合 6000+ 全球电视频道,可按国家语言分类筛选
- 接入 28000+ 全球电台,支持按名称国家语言搜索
- 内置 EmulatorJS 模拟器,覆盖 29 个复古平台
- 预置 11313 个 ROM,支持列表选择、上传或 URL 加载
- 收藏、搜索、多语言与响应式深色主题 UI
容易踩的坑
- v8.4.5v8.4.5 Releases最新正式版2026-11-10 · 2026-11-10 05:34 UTC
- add second data sources
- fixed some bugs
- v8.4.4v8.4.4 Releases2026-11-09 · 2026-11-09 16:29 UTC
查看更新说明
- add second data sources
- fixed some bugs
- v8.4.3🎮 Game Feature Update2026-09-26 · 2026-09-26 16:00 UTC
查看更新说明
- Add dynamic ROM loading with 11000+ preset ROMs
- Expand emulator controller Keywords
- Fixed Some Bugs
- v8.4.2Change jQuery to JavaScript2026-05-26 · 2026-05-26 13:09 UTC
这个版本没有写更新说明。
- v8.4.1🎤Support Podcast2026-05-18 · 2026-05-18 05:01 UTC
查看更新说明
- Improved podcast browsing and added podcast favorites
- Fixed some bugs
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。

Easy-Web-TV-M3u8
An all-in-one web entertainment platform to watch TV, movies, series, anime, shows, listen to music and radio, read novels and manga, and play games - all in one place.
📋 Table of Contents
- Demo
- Features
- Screenshots
- Tech Stack
- Getting Started
- Project Structure
- Contributing
- Sponsor
- Thanks
- License
🎬 Demo
✨ Features
📺 TV & IPTV
- Watch 6000+ TV channels from around the world
- Filter by country, language, and category
- Support for M3U8 video links
- Favorite channels for quick access
🎬 Movies & Series
- Search and watch movies, series, animes, and shows
- Multiple source options
- Favorites and watch history
🎵 Music & Radio
- Search and listen to music
- Browse and play podcasts with cover art and titles
- Podcast episode list with search and playback controls
- Access 28000+ radio stations worldwide
- Radio station search by name, country, language
- Favorites system for music and podcast episodes
📖 Reading
- Search and read novels/books
- Search and read manga
- Reading progress tracking
- Chapter navigation
🎮 Games
- Built-in mini games (Square Obstacles, Pong, Breakout, Tic Tac Toe)
- Emulator support - Play retro console games, powered by EmulatorJS
- Nintendo: NES, SNES, N64, GB/GBC, GBA, NDS
- PlayStation: PS1/PSX
- Sega: Genesis/Mega Drive, Master System, Game Gear, Sega CD, Sega 32X, Saturn
- Atari: 2600, 5200, 7800, Jaguar, Lynx
- Commodore: C64, C128, VIC-20, PET, Plus/4, Amiga
- Other: 3DO, Arcade (FBNeo, MAME 2003), ColecoVision, Virtual Boy
- 11000+ preset ROMs across 17 platforms, with search on the game launcher
- Nintendo: NES (805), SNES (772), GB/GBC (800), GBA (992), N64 (116)
- Sega: Genesis/Mega Drive (1841), Master System + Game Gear (1283)
- Atari: 2600 (4145), 5200 (72), 7800 (27), Jaguar (49), Lynx (77)
- Other: ColecoVision (94), Virtual Boy (28), Commodore 64 (49)
- Arcade preset is currently empty - bring your own or load from a URL
- Three ways to load a ROM: pick from the preset list, upload a file (core auto-detected by extension), or paste a ROM URL
- Manual download fallback: if a preset or URL fails to load, an inline button lets you download the ROM file directly, then load it via upload
- Gamepad support
- Save/load states and fullscreen via the in-emulator controls
- Reset button to return to the ROM selection screen
- 🎮 How to play with a gamepad on TV:
- Access the app through the browser on your TV
- Select an emulator to enter
- Plug in the gamepad before the game starts
🔧 Other Features
- 🌐 Multi-language support
- ⭐ Favorites system for all content types
- 🔍 Powerful search functionality
- 📱 Responsive design for mobile devices
- 🎨 Modern dark theme UI
- 🔒 Sensitive content filter (adult content)
📸 Screenshots
Homepage

TV

Movie

Radio

Novel

Manga

Music & Podcast

Game

🛠️ Tech Stack
- Frontend: HTML5, CSS3, JavaScript (ES6+)
- Library: jQuery 3.6.0
- Video Player: Video.js
- Image Viewer: Spotlight.js
- Emulator: EmulatorJS (RetroArch-based)
- APIs:
- iptv-org - TV channels
- Radiobrowser - Radio stations
🎮 Emulator Features
Dynamic ROM Loading
- JSON-based ROM catalogue: ROM lists are stored in separate JSON files for easy maintenance
- Platform-specific loading: Each platform has its own JSON file under
data/roms/(18 catalogue files) - Caching system: Loaded ROM lists are cached for faster switching
- Search filter: Filter ROMs by name in real-time
Supported Platforms
All 29 emulators and their EmulatorJS cores. Preset ROMs = bundled games (– = none bundled; load your own via upload or URL). Preset total: 11313 games across 18 JSON files (Arcade/FBNeo preset is currently empty).
| Family | Platform | Core | Preset ROMs | JSON File |
|---|---|---|---|---|
| Nintendo | NES | fceumm | 805 | nes.json |
| Nintendo | SNES | snes9x | 772 | snes.json |
| Nintendo | GB / GBC | gambatte | 800 | gb.json |
| Nintendo | GBA | mgba | 992 | gba.json |
| Nintendo | Nintendo 64 | mupen64plus_next | 116 | n64.json |
| Nintendo | Nintendo DS | melonds | – | – |
| PlayStation | PS1 / PSX | pcsx_rearmed | – | – |
| Sega | Genesis / Mega Drive | genesis_plus_gx | 1841 | genesis.json |
| Sega | Master System | smsplus | 1283 | sms.json |
| Sega | Game Gear | smsplus | – ¹ | sms.json |
| Sega | Sega CD | picodrive | – | – |
| Sega | Sega 32X | picodrive | – | – |
| Sega | Saturn | yabause | – | – |
| Atari | Atari 2600 | stella2014 | 4145 | atari2600.json |
| Atari | Atari 5200 | a5200 | 72 | atari5200.json |
| Atari | Atari 7800 | prosystem | 27 | atari7800.json |
| Atari | Atari Jaguar | virtualjaguar | 49 | atarijaguar.json |
| Atari | Atari Lynx | handy | 77 | atarilynx.json |
| Commodore | Commodore 64 | vice_x64 | 51 | c64.json |
| Commodore | Commodore 128 | vice_x128 | 5 | c128.json |
| Commodore | VIC-20 | vice_xvic | 156 | vic20.json |
| Commodore | PET | vice_xpet | – | – |
| Commodore | Plus/4 | vice_xplus4 | – | – |
| Commodore | Amiga | puae | – | – |
| Other | 3DO | opera | – | – |
| Other | Arcade (FBNeo) | fbneo | 0 (empty) | arcade.json |
| Other | Arcade (MAME 2003) | mame2003 | – | – |
| Other | ColecoVision | gearcoleco | 94 | coleco.json |
| Other | Virtual Boy | beetle_vb | 28 | vb.json |
| Total | 29 platforms | – | 11313 | 18 files |
¹ Master System and Game Gear share sms.json (1283 games combined).
Core Features
- Automatic core detection: Upload any ROM file and the system automatically detects the platform
- URL parameter support: Direct link to specific platform (e.g.,
?core=snes9x) - No core selection UI: Simplified interface with automatic detection
- Error handling: Comprehensive error handling with user-friendly messages
- CORS proxy support: Proxy fallback with timeout and retry for reliable ROM loading from cross-origin sources
🚀 Getting Started
n
Prerequisites
- A modern web browser (Chrome, Firefox, Safari, Edge)
- Internet connection
Installation
-
Clone the repository:
git clone https://github.com/zhangboheng/Easy-Web-TV-M3u8.git -
Navigate to the project directory:
cd Easy-Web-TV-M3u8 -
Open
index.htmlin your browser or use a local server:# Using Python python -m http.server 8000 # Using Node.js npx serve -
Open
http://localhost:8000in your browser
📁 Project Structure
Easy-Web-TV-M3u8/
├── index.html # Main entry point
├── manifest.json # PWA manifest
├── sw.js # Service worker
├── css/
│ ├── main.css # Main styles
│ ├── style.css # Additional styles
│ └── emulatorjs.css # Emulator-specific styles
├── js/
│ ├── index.js # Main JavaScript
│ ├── catalogues.js # Catalogue functions
│ ├── translator.js # Translation handler
│ ├── emulatorjs.js # Emulator logic & ROM loading
│ ├── togame.js # Game launcher & emulator picker
│ ├── music.js # Music player logic
│ ├── podcast.js # Podcast player with favorites
│ ├── tomusic.js # Music page navigation & podcast browsing
│ └── ... # Other modules
├── data/
│ └── roms/ # ROM catalogue files
│ ├── nes.json # 805 NES games
│ ├── snes.json # 772 SNES games
│ ├── gb.json # 800 GB/GBC games
│ ├── gba.json # 992 GBA games
│ ├── n64.json # 116 N64 games
│ ├── genesis.json # 1841 Genesis games
│ ├── atari2600.json # 4145 Atari 2600 games
│ ├── atari5200.json # 72 Atari 5200 games
│ ├── sms.json # 1283 Master System + Game Gear games
│ ├── atari7800.json # 27 Atari 7800 games
│ ├── atarijaguar.json # 49 Atari Jaguar games
│ ├── atarilynx.json # 77 Atari Lynx games
│ ├── coleco.json # 94 ColecoVision games
│ ├── vb.json # 28 Virtual Boy games
│ ├── c64.json # 49 Commodore 64 games
│ └── arcade.json # Arcade (FBNeo) presets (currently empty)
├── routes/
│ ├── tv.html # TV page
│ ├── movie.html # Movie page
│ ├── music.html # Music page
│ ├── radio.html # Radio page
│ ├── novel.html # Novel page
│ ├── manga.html # Manga page
│ ├── game.html # Game page
│ ├── emulatorjs.html # Emulator pages
│ └── ... # Other pages
├── catalogues/
│ └── *play.html # Player pages
├── gamebox/
│ └── ... # Mini games
└── images/
└── ... # Image assets
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
☕ Sponsor
If you like this project, consider buying me a coffee! ☕
🙏 Thanks
This project uses the following open source projects:
- jQuery - JavaScript library
- iptv-org - IPTV channels database
- Radiobrowser - Radio stations API
- Video.js - Video player
- Spotlight.js - Image viewer
- EmulatorJS - RetroArch-based emulator
- Font Awesome - Icons
Star History
📄 License
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.
Permissions of this weak copyleft license are conditioned on making available source code of licensed files and modifications of those files under the same license. Copyright and license notices must be preserved. Contributors provide an express grant of patent rights.
Made with ❤️ by Zhang Boheng
