Skip to content

dogledogle/easy-tv

Repository files navigation

Easy TV

Easy TV 是面向 Windows 11 的 Electron 桌面 IPTV 直播播放器。应用不内置直播源,也不推荐未经授权的直播源;用户自行添加有权访问的 M3U/M3U8 网络播放列表,应用负责下载、解析、保存和播放。

功能

  • 添加、刷新、删除网络 M3U/M3U8 播放列表。
  • 解析频道名、分组、logo、tvg-id、播放地址和播放格式。
  • 支持频道搜索、分组筛选、收藏筛选、最近观看筛选和列表倒序。
  • 支持收藏、播放历史、启动后播放最近观看频道、隐藏不支持频道。
  • 支持直播源自定义标题、复制源地址、查看每次导入频道数量和刷新错误。
  • 支持浅色、深色、跟随系统主题,以及中文、英文界面语言。
  • 支持正常窗口和小窗模式;小窗保持 16:9、置顶播放,并保留窗口恢复入口。
  • 支持快捷键:上下切台、空格播放/暂停、F 全屏、M 静音。
  • 支持 HLS、FLV、MPEG-TS、DASH 和浏览器原生视频格式;RTMP/RTSP 会通过本机 FFmpeg 转码为临时 HLS 后播放。
  • 使用 SQLite 保存直播源、频道、收藏、播放历史和设置。

架构

项目使用 Electron、electron-vite、React、TypeScript、SQLite、hls.js、mpegts.js、dash.js、ffmpeg-static、i18next 和 lucide-react。

  • src/main/:Electron 主进程,负责窗口、SQLite、播放列表下载、M3U 解析、IPC 和 FFmpeg 转码。
  • src/preload/:通过 contextBridge 暴露 typed window.easyTV API。
  • src/shared/:main、preload、renderer 共用的类型契约。
  • src/renderer/:React UI、播放器、频道列表、设置、主题和语言。
  • tests/:Vitest 单元测试,覆盖 M3U 解析和 SQLite repository。
  • build/:Windows 图标和 electron-builder afterPack 脚本。

渲染进程不直接访问 Node、SQLite、文件系统或主进程模块,只能通过 preload 暴露的 window.easyTV 调用主进程能力。

命令

npm install
npm run dev
npm run test
npm run build
npm run dist
npm run rebuild
  • npm run dev:启动 Electron 开发环境。
  • npm run test:运行 Vitest。
  • npm run build:执行 tsc --noEmit 并构建 main、preload、renderer。
  • npm run dist:先 build,再用 electron-builder 生成 Windows NSIS 安装包。
  • npm run rebuild:重新安装 Electron 原生依赖,常用于修复 better-sqlite3 加载问题。

如果首次安装依赖时 ffmpeg-static 下载较慢,可以先设置镜像:

$env:FFMPEG_BINARIES_URL='https://cdn.npmmirror.com/binaries/ffmpeg-static'
npm install

数据与安全

  • 数据库保存在 Electron userData 目录,不写入项目目录。
  • 直播源 URL 只允许 http://https:// 播放列表地址。
  • 媒体频道 URL 支持 httphttpsrtmprtsp;不支持的格式会标记为不可播放。
  • RTMP/RTSP 转码只暴露本机临时 HLS 地址,并在切换频道、退出或停止播放时清理 FFmpeg session。
  • 不要提交 out/release/output/node_modules/coverage/ 或用户本地数据库文件。

About

Easy TV 是面向 Windows 11 的 Electron 桌面 IPTV 直播播放器。

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages