项目介绍
LibreTV 是一个免费开源的在线视频聚合搜索与观看平台,基于 Next.js 构建,支持 Docker 一键部署。项目定位是「个人自用的轻量影视站」,不内置任何视频内容,通过对接第三方采集站接口实现聚合搜索与播放功能。
简单来说,你提供采集源,它负责把搜索、播放、换源、进度同步这些事情做好。部署后只要浏览器就能用,PC、手机、平板通用,还支持 PWA 安装到桌面。
项目目前由 LibreSpark 组织维护,采用 AGPL-3.0 开源协议,已发布到 GHCR 和 Docker Hub,支持 amd64 与 arm64 双架构,普通服务器和树莓派都能跑。
功能特性
聚合搜索。支持多个采集站并行搜索,同名影片自动合并为一张卡片,展开即可对比不同来源的更新进度和画质,不用在各个站点之间来回切换。
智能换源与测速。播放时一键切换其他来源,系统会自动对可用源进行测速排序,切换后保留当前集数位置。搜索过程中还会记录各源的健康状态,连续失败的源会按阶梯时长自动停用(30分钟 → 24小时 → 长期),避免每次搜索都等死源超时。
HLS 播放器。基于 ArtPlayer + hls.js,支持广告分片过滤、自动连播、倍速播放、快捷键操作。移动端支持长按 3 倍速快速浏览。播放进度和观看历史存储在本地 IndexedDB,精确到秒的续播,换浏览器或清缓存后可通过导入导出迁移。
直播 / IPTV。支持 M3U 订阅,可按分组浏览频道、搜索台名,站内直接播放(支持 HLS 和 HTTP-FLV 两种协议)。配合 XMLTV 节目单(EPG)可显示当前及后续节目与播放进度。频道可收藏,订阅可导出为标准 M3U 文件供外部播放器使用。
首页推荐。提供三种推荐数据源:豆瓣分类浏览、Bangumi 新番放送表、影视热播榜(豆瓣周榜 + 百度热播),在设置中可自由切换。推荐数据经服务端直连 + 缓存,无需额外配置 API Key。
数据源订阅与分享。可将点播源和直播源导出为一份 JSON,托管到任意静态地址后,他人填入订阅链接即可一键导入。同时兼容 TVBOX 配置格式,自动识别并导入其中可用的 Apple CMS 站点和 M3U 直播源。
安全与隐私。访问密码仅存储在服务端环境变量中,登录接口有 IP 速率限制。代理内置 SSRF 防护,拒绝内网和保留地址请求,仅放行 HTTP/HTTPS 协议。
技术选型
- 前端框架:Next.js 15(App Router)+ React 19 + TypeScript
- 样式方案:Tailwind CSS,支持亮暗双主题无闪烁切换
- 状态管理:Zustand(全局状态)+ React Query(服务端状态与缓存)
- 本地存储:IndexedDB + Dexie.js,存放播放进度、观看历史、用户配置
- 播放器内核:ArtPlayer + hls.js(点播 / HLS 直播)+ mpegts.js(HTTP-FLV 直播)
- 服务端能力:Next.js Route Handlers,提供搜索代理、直播流代理、EPG 解析等接口
- 测试框架:Vitest,覆盖核心解析器、SSRF 校验、m3u8 处理等模块
- 部署方式:Docker / Docker Compose,双架构镜像(amd64 + arm64)
整体架构比较轻量,Next.js 同时承担前端和后端 API 的角色,不需要单独的后端服务,也不需要数据库。用户数据全部存在浏览器本地,服务端只做代理和转发,部署成本很低。
项目截图


开源地址
- GitHub 仓库:https://github.com/LibreSpark/LibreTV
- 官方网站:https://libretv.is-an.org/
- 在线演示:https://tv.bagiinlink.eu.org(访问密码:libretv)
- 使用文档:https://libretv.is-an.org/wiki/
- Docker 镜像:ghcr.io/librespark/libreTV 或 docker.io/bestzwei/libretv
部署非常简单,一行 Docker 命令即可启动。适合有一定服务器基础、想搭建个人或小范围自用影视站的用户。