Skip to content

luocch/cocoTV

Repository files navigation

cocoTV - 网络电视直播聚合平台

一、项目概述

项目名称 :cocoTV 项目类型 :网络电视直播聚合播放平台 开发语言 :Python / JavaScript 技术栈 :FastAPI + React + SQLite

cocoTV 是一款面向家庭用户的网络电视直播聚合平台,旨在为用户提供便捷、高效的电视直播观看体验。系统采用前后端分离架构,支持本地化部署,开箱即用。

二、开发背景

本项目的开发初衷源于一个真实的家庭需求场景:当家中的电视机或机顶盒出现故障时,家庭成员往往面临无法及时观看电视直播节目的困境。传统的解决方案(如等待维修、购买新设备)存在时间成本高等问题。

cocoTV 的设计理念是: 让任何一台联网设备都能快速变身为电视终端 。用户只需在电脑上启动应用程序,即可通过浏览器访问直播服务,实现电视节目的即时观看,有效解决了设备故障期间的应急观看需求。

三、核心功能

3.1 直播源管理

功能 说明 M3U/M3U8 导入 支持本地文件上传及远程 URL 导入直播源 自定义直播源 手动添加、编辑和管理个性化直播频道 多清晰度支持 同一频道可配置多个不同清晰度的播放源 批量导入 支持批量添加直播源,最多单次 500 个

3.2 频道管理

  • 分类浏览 :按频道类别(央视、卫视、地方台等)分类展示
  • 收藏夹 :收藏常观看频道,快速访问
  • 观看历史 :自动记录观看历史,便于追溯
  • 频道搜索 :快速定位目标频道

3.3 播放功能

  • HLS 流播放 :基于 hls.js 实现流畅的 HLS 直播流播放
  • 多源切换 :同一频道多源自动切换,保障播放稳定性
  • 跨域代理 :内置 M3U8/TS 代理服务,解决跨域播放问题

3.4 系统功能

  • 直播源有效性检测 :自动验证直播源可用性,过滤失效频道
  • 响应时间测试 :评估直播源服务器响应速度
  • 配置备份与恢复 :支持用户配置数据的导出与导入
  • M3U 文件导出 :整理后的直播源可导出为标准 M3U 格式

四、技术架构

4.1 系统架构图

┌─────────────────────────────────────────────────────────┐
│                     cocoTV 系统架构                      │
├─────────────────────────────────────────────────────────┤
│                                                        │
│  ┌─────────────┐    HTTP/WS   ┌─────────────────────┐  │
│  │   Browser   │ ◄──────────► │      Frontend       │  │
│  │  (用户界面)  │              │  React + Ant Design │  │
│  └─────────────┘              └──────────┬──────────┘  │
│                                          │ API Calls   │
│                                          ▼             │
│                               ┌─────────────────────┐  │
│                               │      Backend        │  │
│                               │  FastAPI + Uvicorn  │  │
│                               └──────────┬──────────┘  │
│                                          │             │
│                    ┌─────────────────────┼─────────────┤
│                    │                     │             │
│                    ▼                     ▼             │
│           ┌─────────────┐       ┌─────────────┐        │
│           │   SQLite    │       │  直播源服务  │         │
│           │  (数据存储)  │       │  (外部接口)  │         │
│           └─────────────┘       └─────────────┘         │
│                                                         │
└─────────────────────────────────────────────────────────┘

4.2 技术选型

后端技术栈:

  • FastAPI:高性能异步 Web 框架

  • Uvicorn:ASGI 服务器

  • SQLAlchemy:ORM 数据库操作

  • SQLite:轻量级嵌入式数据库

  • Requests:HTTP 请求处理 前端技术栈:

  • React 19:现代化 UI 框架

  • Ant Design 6:企业级 UI 组件库

  • React Router 7:路由管理

  • hls.js:HLS 流播放器

  • Tailwind CSS:原子化 CSS 框架

  • Vite 8:构建工具

4.3 数据模型

Channel (频道)
├── id: 主键
├── name: 频道名称
├── category: 分类
├── logo: 图标
└── streams: Stream[] (播放源列表)

Stream (播放源)
├── id: 主键
├── channel_id: 所属频道
├── url: 播放地址
├── quality: 清晰度
├── is_default: 是否默认
└── is_active: 是否可用

CustomSource (自定义源)
FavoriteChannel (收藏频道)
WatchHistory (观看历史)
UserSettings (用户设置)

五、项目结构

cocoTV_integrated/
├── cocoTV.exe              # 编译后的可执行文件
├── main.py                 # 应用入口
├── requirements.txt        # Python 依赖
├── app/                    # 后端模块
│   ├── api.py              # API 路由
│   ├── database.py         # 数据模型
│   ├── config.py           # 配置管理
│   ├── live_source.py      # 直播源管理
│   ├── m3u_parser.py       # M3U 解析器
│   ├── cache.py            # 缓存模块
│   ├── proxy_cache.py      # 代理缓存
│   ├── middleware.py       # 中间件
│   └── logging_config.py   # 日志配置
├── frontend/               # 前端项目
│   ├── src/
│   │   ├── pages/          # 页面组件
│   │   ├── components/     # 公共组件
│   │   ├── contexts/       # React Context
│   │   └── utils/          # 工具函数
│   └── package.json
├── static/                 # 前端构建产物
├── data/                   # 数据目录(运行时生成)
└── tests/                  # 测试用例

六、安装与使用

6.1 环境要求

  • 操作系统:Windows 10/11
  • 网络:需要互联网连接以获取直播流

6.2 快速使用(推荐)

本项目已编译为独立可执行文件,无需安装 Python 环境即可运行。

使用步骤:

  1. 双击运行 cocoTV.exe
  2. 程序启动后将自动打开浏览器访问应用界面
  3. 如浏览器未自动打开,手动访问 http://localhost:8000 首次运行说明:
  • 程序启动时会自动创建 data 目录存储数据库
  • 首次启动可能需要几秒钟初始化直播源数据
  • 默认端口为 8000,如被占用将自动切换到可用端口

6.3 源码运行(开发者)

如需基于源码运行或进行二次开发:

环境要求:

  • Python 3.10+
  • Node.js 18+(前端开发需要) 运行步骤:
# 安装后端依赖
pip install -r requirements.txt

# 启动应用
python main.py

前端开发:

cd frontend
npm install
npm run dev

构建前端:

cd frontend
npm run build

构建产物将输出到 static 目录。

6.4 编译可执行文件

如需自行编译可执行文件:

# 安装 PyInstaller
pip install pyinstaller

# 编译
pyinstaller cocoTV.spec

编译产物位于 dist 目录。

七、项目亮点

7.1 用户价值

  1. 应急替代方案 :电视设备故障时的即时观看解决方案
  2. 零安装成本 :无需复杂的有线电视线路铺设
  3. 操作简便 :直观的 Web 界面,适合大多年龄段用户
  4. 数据本地化 :所有数据存储于本地,保护用户隐私

7.2 技术亮点

  1. 轻量级架构 :基于 SQLite 嵌入式数据库,无需额外数据库服务
  2. 跨域代理 :内置流媒体代理服务,解决浏览器跨域限制
  3. 智能检测 :直播源有效性自动检测与过滤
  4. 端口自适应 :自动检测可用端口,避免端口冲突
  5. 可执行打包 :支持打包为独立可执行程序,开箱即用

7.3 功能完整性

  • ✅ 直播源导入与管理
  • ✅ 频道分类浏览
  • ✅ HLS 流播放
  • ✅ 收藏与历史记录
  • ✅ 配置备份恢复
  • ✅ 多源自动切换
  • ✅ 直播源有效性检测

八、未来规划

  • 支持 RTMP、FLV 等更多流媒体协议
  • 添加电子节目单(EPG)功能
  • 支持多用户账户管理
  • 移动端适配优化
  • Docker 容器化部署支持

九、开发动机

开发动机 :解决家庭电视设备故障时的应急观看需求,让家人能够快速恢复电视节目的正常观看。因为我的家人喜欢观看电视台直播,会使用电脑,并且我发现现在可以观看电视台直播的app和网页数量少,且频道不多,所以我使用solo在1天内做好了cocoTV电视台直播播放器,方便了家人继续观看直播

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors