开箱即有 800+ 可稳定流畅播放频道的自托管 IPTV 直播源管理与分发系统,聚合了央视频、咪咕、央视、卫视、凤凰卫视、亚太、国际、地方台、体育赛事、B 站直播、斗鱼直播、虎牙直播等,以及自定义抓取源和订阅,并提供 EPG 节目单与聚合功能;另外还自带 GUI 可视化管理后台,支持 Docker Compose 或 Node.js 运行,适合 NAS 与家庭服务器。
See the code自托管 · 模块化 · 可视化 · NAS 友好
推荐通过 Docker 在 NAS / 服务器上部署,镜像:akiralereal/iptv:latest
iPTV 是一个面向家庭影音与 NAS 用户的模块化 IPTV 直播源管理与分发系统。它内置央视频、咪咕、B站、虎牙、斗鱼及多地区广电等抓取模块,也能接入需要网页解析的内置源、维护者筛选的公开独立源、自定义直连地址和 M3U/TXT 订阅;所有来源统一完成聚合、去重、编排,再输出干净的播放列表与 EPG 节目单。
[!IMPORTANT] 本项目是自托管的软件工具。除项目自制的使用公告短片外,不托管第三方音视频节目;仓库及运行时可能整理互联网上公开可访问的播放地址与频道元数据,但“公开可访问”不代表内容属于公有领域,也不代表已获得复制、转播或商业使用授权。请仅在获得合法授权的范围内使用;如你是权利人并认为相关条目侵权,请按版权与侵权处理提交下架通知。
我的频道 · 所有频道一处编排

源管理 · 每个内容来源独立、透明、可控

播放器实况 · 输出标准订阅,接入常用客户端

| 📺 开箱即用 | 🧩 模块化源管理 | 🪄 可视化编排 |
|---|---|---|
| 默认聚合 800+ 频道,其中央视频模块提供 63 个公开高清频道及 10 个本人账号可访问的会员频道,另有 B站、虎牙、斗鱼热门直播抓取和经筛选的公开独立源 | 央视频、咪咕、B站、虎牙、斗鱼及各广电抓取模块都有独立开关、配置和健康状态,按需启用,互不干扰 | 分组、排序、重命名、隐藏与批量管理,都在浏览器中完成 |
| 🔗 自由接入 | 📡 稳定分发 | 👨👩👧👦 多端共享 |
| 支持 M3U8 直链、网页自动提取,以及 M3U/M3U8/TXT 订阅批量导入 | 自动生成 M3U、TXT 与 EPG;提供兼容版、全代理版应对特殊播放器 | 多配置档与用户令牌,让每台电视、每位用户拥有自己的频道组合 |
[!TIP] 默认配置即可使用免费频道;需要更高画质时,再到「源管理」为对应平台配置你本人合法持有的账号。凭据只保存在自己的部署中。
默认部署目前可聚合 800+ 频道,并会随着平台模块、赛事内容和精选频道持续扩展。实际数量会因平台接口状态、地区网络和启用的模块而动态变化。
| 范围 | 当前覆盖内容 |
|---|---|
| 央视频直播 | 63 个免登录公开频道 + 10 个本人账号可访问的会员频道;公开台覆盖央视全套、CGTN 多语种和全国主要省级卫视,统一归入「央视频」分组 |
| iPanda 直播 | 22 路免登录公开直播:成都与都江堰 2 个 24 小时总频道、18 个熊猫固定机位,以及江苏大丰麋鹿、云南白马雪山 2 路珍稀动物直播,统一归入「iPanda」分组 |
| 央视与卫视 | CCTV 系列、CGTN、全国主要卫视频道 |
| 地方频道 | 北京、重庆、四川、贵州、安徽、广东(含广州、深圳)、广西、福建、江西、甘肃、新疆、云南、吉林、黑龙江、内蒙古、宁夏、海南、河北、湖北、辽宁(含沈阳、大连)、南京、青岛、浙江、江苏、山东、河南、上海、湖南等省市卫视与地面频道,并持续接入更多地区 |
| 景观直播 | 央视网「直播中国」当前在线信号,以及吉林风景、美丽河北、Live 南京、青岛城市直播、上海慢直播等景观频道;数量随平台在线状态动态变化 |
| 体育赛事 | 体育频道、赛事直播,以及昨天 / 今天 / 明天的动态赛事频道 |
| 亚太与国际 | 精选列表提供 50 个经实验台验证的固定直连频道;独立模块另提供 YTN、NHK World 两个需要动态解析的公开频道 |
| 综合内容 | 影视、文旅、教育、少儿、娱乐时尚等分类频道 |
播放列表首位默认提供项目自有的「公告」分组,内含三条自制短片:“欢迎使用 iPTV for iFansClub.com”展示使用方式、版权提醒和侵权联系说明;“央视频会员频道登录教程”演示 Docker / NAS 用户如何从浏览器复制 Cookie 把央视频登录态导入 iPTV;“「来源于网络」频道添加教程”演示如何把仓库 from-the-web/from-the-web.m3u 里的网络第三方源作为订阅自行添加。三者都不引用任何第三方节目素材。不想在电视上显示可以在后台「我的频道」逐条隐藏(随时可在「已隐藏」里恢复);只要显示,该分组就固定在第一位,不支持删除、移动、排序或重命名。
iPTV 的重点不只是一份静态频道表,而是一套可独立开关、可观察状态、可持续刷新的内容接入体系。不同来源采用不同刷新、鉴权与代理策略,平台临时不可达时可在源管理中查看状态或关闭对应模块。
| 来源类型 | 已支持的典型内容 | 工作方式 |
|---|---|---|
| 央视频直播 | 63 个公开频道 + 10 个需登录/VIP 的频道 | 公开频道继续匿名动态取票、自动切换备用 CDN;会员频道复用部署者本人在央视频站点的持久登录态,由网页播放器签发并解扰成本机 H.264/AAC fMP4 HLS,解决普通播放器直接拿会员流时“有声无画”。桌面本机可从源管理自动打开登录窗口;Docker / NAS 等没有桌面的部署从自己电脑浏览器的开发者工具里复制整段 Cookie 导入(会话 cookie 是 HttpOnly,书签工具拿不到),服务端之后自动续期 |
| iPanda 直播 | 成都、都江堰共 20 路熊猫直播,以及江苏大丰麋鹿、云南白马雪山 2 路珍稀动物直播 | 无需登录、无需配置;18 路固定机位使用支持网页直连的上游 CDN,2 个总频道和 2 路珍稀动物直播在播放时检查公开状态并自动切换上游 CDN,清单与媒体由本机安全代理。最高均为真实 720p,即平台所称“超清” |
| 平台直播抓取 | B站、虎牙、斗鱼 | 可按分类自动收录当前热门直播间,也可手动指定房间;播放时处理短效地址、画质选择和平台要求的请求头。B站支持扫码登录以使用本人账号可访问的画质,虎牙、斗鱼支持匿名公开直播 |
| 电视与赛事平台 | 咪咕、体育赛事 | 自动整理频道与节目单,并按账号权限、设备兼容性和平台接口状态选择可用画质;需要登录的能力仅使用部署者本人提供的凭据 |
| 凤凰卫视 | 凤凰资讯、凤凰中文、凤凰香港,归入 香港 | 仅三个电视直播频道;游客 480p,登录普通凤凰秀账号可获取 720p / 25 帧,无需付费会员。后台支持导入 Token / Cookie 并持久保存,播放时取新签名,原始 HTTP-FLV 由本机转发。内置精选列表里的三条第三方凤凰线路同在「香港」,与本模块三台并列保留作备用线路,不合并、不顶替;播放器按名聚合时本模块源排在前面 |
| 香港卫视 | 香港卫视一路电视直播,归入 香港 | 无需登录、无需配置;播放时先问源站当前在播的是哪一路,再换这一路的 HLS 入口。服务端把入口清单拍平成媒体清单后只中继清单,媒体分片由播放器直连上游 CDN。实测为 1280×720、H.264/AAC;节目单由默认 EPG 源直接覆盖 |
| 大爱电视 | 大爱一台、大爱二台,归入 台湾 | 无需登录、无需配置;官网移动版直播页写死的两条官方 HLS,长期不变也不带签名,但上游按 Referer 防盗链——清单和分片裸请求一律 403,故一律由本机补齐官网请求头后全代理。实测均为 1280×720、H.264 High / AAC-LC,30 帧、约 3 Mbps |
| GOOD TV | GOODTV(综合台)、GOODTV2(真理台),归入 台湾 | 无需登录、无需配置;官网播放页写死的固定 HLS,没有签名也没有 Referer 门。官网播放器备了 CloudFront、Akamai 两条线路(同一源站、分片序号一致),播放时两线竞速择优,当前线路取不到清单会在同一次轮询里当场换线。其中 CloudFront 的 WAF 按播放器标识放行(浏览器 / VLC / ExoPlayer 通过,ffmpeg、okhttp 一律 403),播放器用什么标识不由本项目决定,因此清单与分片统一走本机全代理回源。取 1920×1080 档(约 4 Mbps,H.264 Main / AAC-LC,29.97 帧),该档取不到时自动退回 1280×720 |
| 北京广播电视台 | 北京卫视、BRTV 文艺 / 纪实科教 / 影视 / 财经 / 体育休闲 / i生活 / 新闻、卡酷少儿,以及北京时间当前公开活动或慢直播 | 公开直播免登录并自动排除失效项目;9 个电视频道需在后台导入本人北京时间 Cookie。凭据仅用于取流接口,不写入订阅、不发送到媒体 CDN;清单和分片由本机补齐防盗链请求头并代理 |
| 重庆广电 | 源站当前公开的 CQTV新闻 | 无需登录、无需配置;频道表自动同步,播放时匿名换取短效 HLS,清单、AES 密钥和媒体分片由本机全代理 |
| 四川广电 | 四川卫视、新闻、经济、文化旅游、影视文艺、妇女儿童、四川乡村、康巴卫视、四川卫视 4K 超高清 SDR,以及源站当前公开活动直播 | 活动直播有则显示、无则隐藏且无需登录;9 个固定电视台需使用部署者本人的四川源站登录态。后台提供书签工具读取源站 Token,服务端播放时动态换取短效地址,清单、密钥和媒体分片均补齐源站防盗链请求头并全代理 |
| 江西广电 | 江西卫视、都市、经济生活、公共农业、少儿、新闻、移动电视、陶瓷共 8 路 | 无需登录、无需配置;源站当前公开的是单档 720p,服务端按源站公开算法获取匿名短效 token,并在播放器每次轮询时重新拉取滚动清单;清单、密钥和媒体分片均补齐防盗链请求头并全代理 |
| 贵州广电 | 贵州卫视、公共、影视文艺、大众生活、生态乡村、科教健康、经济、移动电视共 8 路 | 无需登录、无需配置;播放时从源站公开 API 获取当前短效签名地址,播放器每次轮询重新拉取只有三个 3 秒分片的滚动清单,清单和媒体全代理;家有购物明确不纳入频道表 |
| 甘肃广电 | 甘肃卫视、文化影视、移动电视、少儿、科教、公共应急共 6 路 | 无需登录、无需配置;播放时从源站公开接口动态获取当前入口,每次轮询重新拉取滚动清单并中继给播放器,视频分片由播放器直连上游 CDN;入口轮换或接口短时抖动会自动重试和兜底 |
| 黑龙江广电 | 黑龙江卫视、都市、新闻法治、文体、少儿、影视、农业科教共 7 路 | 无需登录、无需配置;极光新闻 App 在用的官方入口,地址固定、不带签名,上游既不校验来源也不挑播放器标识,因此频道直接给直链,由播放器直连官方 CDN,本机不转发媒体。官方业务域名走 4430 端口而非 443。实测 7 路均为 1280×720、H.264 / AAC-LC,25 帧 |
| 云南广电 | 云视网云南卫视、都市、康旅、澜湄国际,以及七彩云端临沧、怒江、昭通共 7 路,统一归入 云南 | 无需登录、无需配置;省级四路由官网接口按「当前这档节目」签发 DVR 窗口地址,签名按路径签、无法预取,播放时重新换取,节目换档后下一次解析自然接上(分片序号连续,实测跨档不断流);地方三路按七彩云端目录取当前在线机位。两家回源要求不同,省级必须带官网来源头、地方不需要,清单与分片均由本机全代理。省级实测 1280×720 / 25 帧,地方分别为 720p25、1080p50 与 720×416 |
| 安徽广电 | 安徽卫视、经济生活、影视、公共、农业科教、综艺体育、国际频道共 7 路 | 无需登录、无需配置;按「安徽视讯」App 的公开算法解出鉴权密钥并逐路生成两小时签名,播放器每次轮询都重新拉取滚动清单;上游 CDN 只放行 App 播放器标识,清单与分片均以 App 标识经本机全代理 |
| 新疆广电 | 新疆卫视、维吾尔语新闻综合、哈萨克语新闻综合、体育健康、少儿共 5 路 | 无需登录、无需配置;播放时从丝路视听网当前 Nuxt 包静态解析当天公开签名配置,再调用源站接口签发约一小时有效的 HLS。服务端中继实时清单,媒体分片默认由播放器直连上游 CDN,也可用全代理订阅;源站标记禁播且实测返回 404 的 XJTV-4、XJTV-5 不纳入频道表 |
| 吉林广电 | 6 路省级频道、9 路地方台和 13 路慢直播,共 28 路 | 无需登录、无需配置;常规电视归入「吉林」,慢直播归入「吉林风景」。省级频道和季节性景观在播放时从源站加密接口获取短效 HLS,固定地方台和固定景观使用已验证的 HTTPS 入口;清单、密钥和媒体分片均由本机全代理 |
| 内蒙古广电 | 内蒙古卫视、蒙古语卫视等 8 路自治区频道,以及 12 路盟市频道,共 20 路 | 无需登录、无需配置;20 路全部归入唯一的「内蒙古」分组。播放时按奔腾融媒源站公开协议调用加密频道接口获取动态地址,并为清单、密钥和媒体分片补齐防盗链请求头后由本机全代理 |
| 亚洲与国际直播 | 2 个动态公开频道:YTN、NHK World;另有 50 个固定直连频道位于精选列表的独立标记区块 | 动态频道由独立零配置模块在播放时从平台接口获取当前 HLS,并由本机代理清单、密钥与媒体;固定频道使用实验台验证过的原始 HLS 地址,不经过该解析模块,避免重复和额外转发开销 |
| 广电抓取 | 北京、重庆、四川、贵州、安徽、大连、广东、广西、福建、江西、甘肃、新疆、云南、吉林、黑龙江、内蒙古、海南、河北、湖北、河南、湖南、江苏、辽宁、南京、青岛、山东、上海、深圳、浙江等 | 从各广电源站、公开接口或客户端公开直播能力获取当前地址;短效签名、防盗链、加密清单和 CDN 代理按模块分别处理 |
| 景观直播 | 央视网「直播中国」、吉林风景、美丽河北、Live 南京、上海与青岛城市景观等 | 按源站当前在线状态动态收录;离线、下架或源站调整时会自动减少,不以固定频道数承诺可用性 |
| 内置网页抓取源 | 如纬来体育等需要从公开页面解析当前地址的单频道源 | 内置抓取规则与定时刷新;每个源可配多个入口地址,主站打不开或抓不到时自动换备用地址重试,清单本身通过远程配置更新(改仓库文件即生效,无需升级镜像)。每个源均可单独关闭 |
| 精选公开独立源 | 体育、国际、亚太、影视、纪实、音乐、娱乐时尚等 | 项目维护的「精选频道」列表,收集公开可访问且经可用性检查的独立播放地址,并提供远程更新与本地快照兜底;可访问性检查不等同于版权授权审查 |
| 用户自有来源 | M3U8 直链、网页提取、M3U/M3U8/TXT 订阅 | 完全由部署者自行添加、排序、分组和控制在哪些配置档中显示,适合接入自有设备、合法订阅或已获授权的直播源 |
[!NOTE] 所有内置抓取模块、内置网页抓取源和精选频道都能在「🌐 源管理」中独立关闭;需要完全空白的频道管理器时可使用
mblank=true。平台名称及商标仅用于说明兼容性,本项目不隶属于、也不代表上述平台或内容权利人。
本次为「新增香港、台湾与黑龙江、云南共 19 路直播」版本:黑龙江 7 路、云南 7 路各自成组,香港卫视并入「香港」与凤凰三台并列,大爱一台 / 二台与 GOODTV / GOODTV2 并入「台湾」;五家全部免登录、零配置、默认开启,可在源管理逐家关闭。取流方式正好各不相同——黑龙江地址固定且既不校验来源头也不挑播放器标识,频道直接写直链、本机一个字节的媒体都不转发;云南省级要按「当前这档节目」逐次换取带路径签名的 DVR 窗口,既不能预取也不能写死;香港卫视先问源站当前在播的是哪一路再换入口,并把两跳清单拍平成媒体清单;大爱按来源头防盗链、GOOD TV 卡的是播放器标识,两家的清单与分片统一由本机全代理并补齐所需请求头。升级镜像后重启即生效,现有配置与订阅无需改动。
hls_ctx 的子清单里,服务端取回时就拍平成媒体清单再下发,播放器少一跳、也不必理解跨主机的绝对地址;服务端只中继这份小清单,媒体分片由播放器直连上游 CDN,需要时也可用 ?relay=2 全代理。实测为 1280×720、H.264 High / AAC、约 3 Mbps,节目单由默认 EPG 源直接覆盖、无需额外配置。上游 CDN 会按 IP 拒绝一部分来源(实测机房 IP 与个别移动线路回 403,电信家宽与境外正常),服务端中继取不到清单时按既有逻辑回退 302,由播放器自己直连完整更新历史见下方 更新日志
推荐使用 Docker Compose。只需要一个配置文件和一条启动命令,几分钟即可拥有自己的 IPTV 服务。
Docker 镜像:akiralereal/iptv · 查看版本标签。下面使用 latest 标签;使用 NAS 图形化容器管理器时,也可直接搜索 akiralereal/iptv,按下方配置设置端口和数据目录。
创建 docker-compose.yml:
services:
iptv:
image: akiralereal/iptv:latest
container_name: iptv
init: true # 回收 Chromium 僵尸进程
ports:
- "1905:1905"
environment:
- mport=1905 # 容器监听端口,与 ports 对应
# - mhost= # 可选:外部访问地址(如 http://192.168.1.100:1905)
# - mpass= # 可选:访问密码,设置后访问 http://ip:port/密码/...
volumes:
- ./data:/iptv/data # 数据持久化,不挂载则重建容器 / 升级镜像会丢配置
restart: always
docker compose up -d
升级时执行:
docker compose pull && docker compose up -d
部署完即可访问:
| 用途 | 地址 |
|---|---|
| M3U 播放列表 | http://your-ip:1905/interface.m3u(推荐带 .m3u 后缀;裸 /m3u 内容相同) |
| TXT 播放列表 | http://your-ip:1905/txt |
| EPG 节目单 | http://your-ip:1905/playback.xml |
| 管理后台 | http://your-ip:1905/admin(设了密码则 http://your-ip:1905/密码/admin) |
🧩 平台账号、画质等内容配置不用写进 compose:部署后进后台「🌐 源管理」在对应模块卡片里设置(支持扫码登录 / 书签工具),保存即时生效。备份 / 换机迁移用后台「设置 → 系统配置 → 🧳 配置备份 / 迁移」一键导出导入(
logos/自定义台标需单独拷贝),或直接备份./data目录。更多环境变量与玩法见配置与进阶。
四个页面,完成从内容接入到播放分发的整个流程:
| 页面 | 能做什么 |
|---|---|
| 📺 我的频道 | 分组、隐藏、排序、重命名与批量管理;按名字长期屏蔽频道、一次隐藏整批同前缀分组;查缺台标;建立多套配置档;复制标准版、兼容版或全代理版订阅地址 |
| 🌐 源管理 | 管理抓取模块、内置源与精选频道;添加网页提取、手动直链或订阅源;检测失效频道并调整多源优先级 |
| ⚙️ 设置 | 调整系统参数、频道别名、自动分组规则、EPG 聚合和用户令牌;导出或导入完整配置 |
| ℹ️ 关于我们 | 查看当前版本并检查更新 |
修改源后 1-2 秒内自动重新生成播放列表;外部源配置存于数据目录 external-sources.json。
B站 / 虎牙 / 斗鱼 / 咪咕 ─┐
广电与景观抓取模块 ───────┤
iPanda 直播模块 ──────────┤
亚洲与国际直播模块 ───────┤
内置网页抓取源 ───────────┼─→ iPTV 聚合 / 去重 / 编排 ─→ M3U / TXT / EPG ─→ 电视 · 手机 · 电脑
精选公开独立源 ───────────┤
自定义直链与外部订阅 ─────┘
| 播放器 | 推荐订阅 |
|---|---|
| DIYP / 百川影音 | TXT 订阅:/txt |
| TiviMate / APTV / Kodi / OK 影视 | 标准 M3U:/interface.m3u |
| 飞牛影视 | 标准 M3U:/interface.m3u,必须保留 .m3u 后缀 |
| 极空间极影视、部分老电视盒 | 兼容版:/interface.m3u?relay=1 |
| 使用兼容版仍无法播放的设备 | 全代理版:/interface.m3u?relay=2,兼容的频道会由服务器转发视频分片 |
[!NOTE] 能使用标准版就无需切换;标准版链路最直接。播放器不跟随跳转时使用兼容版,只有兼容版仍失败时才使用全代理版。
部分内置模块会按平台要求自动为单个频道启用全代理,与所选订阅版本无关。例如央视景观的 CDN 会校验源站请求头,因此即使使用标准订阅,该分组的清单和视频分片也会自动经过 iPTV 服务端;其他可直连频道不受影响。
iPanda 网页播放器的清晰度名称与实际分辨率依次是:流畅 640×360、标清 854×480、高清 1024×576、超清 1280×720。播放器把 1080p 另称为“蓝光”,但当前 22 路 HLS 均未提供该档;逐路检查最高档视频编码也都是实际 1280×720,不是清单虚标。
这些频道的匿名接口已经返回公开可播状态,页面没有启用 VIP 清晰度限制。登录不会为当前 iPanda 直播解锁 1080p;主项目检测到的最高档 720p 正好就是播放器菜单中的“超清”。两个 24 小时总频道提供上述四档,其余 20 路为单档 720p。
北京时间的公开活动和慢直播不需要登录,会自动出现;北京卫视、BRTV 各地面频道与卡酷少儿需要本人站点登录态。进入「🌐 源管理 → 北京广播电视台」,按卡片里的入口打开站点并登录;在浏览器开发者工具的 Network(网络)里刷新页面,点开 getUserInfo 请求,在 Request Headers 中单击 Cookie 的值后按 ⌘C(Windows/Linux 按 Ctrl+C),粘贴回后台保存即可,不需要鼠标右键。也可以用 mBtimeCookie 环境变量配置。
模块会先验证 Cookie:有效时加入 9 个电视台,失效时只隐藏电视台并给出提示,免登录直播继续可用。凭据只发给北京时间账号 / 取流接口,不会写进订阅或发送给媒体 CDN。北京时间媒体要求源站防盗链请求头,因此该模块固定由服务端代理 HLS;本地 macOS 会自动沿用系统 HTTPS 代理,Docker / Linux 可按需设置标准 HTTPS_PROXY 环境变量。
进入「🌐 源管理 → 凤凰卫视」,导入本人凤凰秀账号的 App.user.token 后保存即可。支持粘贴 Token 值或包含它的完整 Cookie;模块内提供书签工具和获取步骤,也可用 mFengshowsToken 环境变量配置。保存后的凭证随主项目配置持久保留,重启无需重填;失效时重新获取。
2026-09-03 实测:游客三台均为 854×480;普通账号登录后三台均为 1280×720、25 fps、H.264,无需付费会员。接口档位叫 fhd,实际是 720p。
本模块只提供凤凰资讯、凤凰中文、凤凰香港三路直播,不接入回看、点播、活动直播或栏目目录。三台归入香港分组;其它来源(内置精选列表、外部订阅)提供的同名凤凰条目不会被顶掉,原样保留作备用线路;播放器按名聚合「源1 / 源2」时本模块源排在前面,即默认源。播放地址实时向上游获取,沿用地区调度,Token 不发送到媒体 CDN 或写入订阅。直播使用 HTTP-FLV,本机仅转发不转码;网页播放器已支持,外部播放器也需支持 HTTP-FLV。
部分 LunaTV / MoonTV 版本只把 #EXTINF 紧接的下一行当播放地址,遇到中间的 #EXTVLCOPT:network-caching 缓冲提示会漏掉整个频道(issue #114)。本项目的 M3U 输出已省略仅含缓冲提示的选项块,也兼容升级前的频道缓存。运行包含此修复的版本后,在 LunaTV 管理后台刷新直播源即可,订阅地址无需更换;缓冲时长由播放器自行设置。
B 站直播已与虎牙、斗鱼一样改为播放时解析、由本机中继清单,不再依赖 #EXTVLCOPT 请求头。其它来自订阅的直连源若带 Referer / User-Agent,那是播放所需的请求头,仍会保留;若使用的 LunaTV 版本不能解析并传递这些选项,这类频道需要在客户端侧适配,不能靠删除请求头或切换 relay=1/2 修复。
这通常是 H.265(HEVC)兼容性问题:部分平台的直播流默认使用 H.265,而播放器无法解码。进入「🌐 源管理」,打开对应模块的配置并取消「启用 H.265 原画」,保存后重新播放。通过环境变量部署时可设 menableH265=false;个别频道仍有问题时再设置 menableHDR=false。
播放器可能不跟随 302 跳转。进入「我的频道」,点击订阅地址旁的「🩹 兼容版」,将新地址重新添加到播放器即可。兼容版由服务器直出播放清单,视频仍由播放器直连 CDN,不占用服务器的视频转发带宽。
「隐藏」绑的是频道 ID,而 ID 是按播放地址算的——源换了地址,那条隐藏就失效了。带签名 / 有效期参数的地址(?expire=…&sign=…)已经不再影响 ID;换了路径或域名的仍会。想让某个台以后都别出现,用「我的频道」里频道旁的「屏蔽」按钮,或右上角「🚫 屏蔽规则」按名字配一条:规则只看名字,源换址、频道每天重建都照样生效,删掉规则即恢复。像「体育-昨天 / 今天 / 明天」这类每天重建的分组,逐条隐藏没有意义,对其中一个分组点「隐藏分组」时会提议把同前缀的一起隐藏,以后新出现的也自动挡掉。
台标:没有自带台标的频道按名字到公共台标库取图,库里没有的会留空(播放器画自己的占位图,不再裂图)。点「我的频道」右上角「🖼 缺台标」可以列出当前档里所有没图的频道,逐个点进详情上传;或直接把 <频道名>.png 放进数据目录的 logos/,优先级最高。景观、慢直播这类本来就不是台名的,留空即可。
节目单:默认 EPG 源为 https://e.erw.cc/all.xml.gz(521 个频道、9 天节目)。老部署里如果自己改过默认源的名字,程序不会替你换地址,「设置 → EPG 节目单源」里那条会有一行提示;港台频道、各地景观和 B 站 / 虎牙 / 斗鱼这类没有公共节目单,属于正常。
再切换到「🚚 全代理版」,即 /interface.m3u?relay=2。对明确支持服务端代取的频道,它会把清单地址改为本机同源地址并由服务器转发视频分片,能兼容更多老旧或限制较多的播放器;若上游平台不允许服务端拉取分片,则保留该模块的安全播放模式。视频流经服务器会增加带宽占用,因此能使用标准版或兼容版时,不建议开启全代理版。
63 个公开频道不需要登录,服务会在真正播放时动态取票、自动续签短效地址,并在主线路异常时切换备用 CDN。
另有 10 个会员频道会一并出现在播放列表中。两种登录方式任选其一:
localhost 打开后台,进入「🌐 源管理 → 央视频」,点击卡片里的央视频登录按钮,在弹出的窗口完成本人账号登录即可。yangshipin.cn 的请求,在 Request Headers 里单击 Cookie 的值后按 ⌘C(Windows 按 Ctrl+C)复制,粘贴到「🌐 源管理 → 央视频」卡片的导入框并「导入登录态」。必须从请求头复制:央视频的会话 cookie(vusession、accesstoken 等)是 HttpOnly,网页脚本和书签工具读不到,只有请求头里才有完整的一套。服务端会把这组 cookie 种进自己的浏览器 profile 并让站点 SDK 当场校验,成功后显示昵称与 VIP 状态;「公告」分组里的教程短片演示了全过程。服务不接收密码;导入的 cookie 只存在央视频专用的 Chromium profile 里,不写进配置文件或备份。站点 SDK 的刷新令牌 48 小时有效、由 SDK 在页面里自动续期,服务端每 6 小时静默拉起一次后台会话让它续一次,家里几天没人看会员频道也不会掉线;站点要求重新验证、账号退出或会员到期后,需重新登录或导入。导入后如果你自己电脑上的登录被踢下线,属于正常现象(同一份令牌被服务端接管),不影响电视端。
会员视频必须经网页播放器解扰后才能被普通 IPTV 客户端正确解码,因此播放期间服务端会运行 Chromium,并在内存中保留最近少量 H.264/AAC fMP4 片段。最多同时保留 3 个会员频道,45 秒无人请求后释放。首次自动登录目前只支持有桌面环境的本机运行:Docker/NAS 无法把服务端窗口弹到你的电脑,管理页会明确禁用该按钮。浏览器 profile 等同账号凭据,不包含在 JSON 配置备份中,换机或跨平台部署请重新登录。
不能,央视频模块只做直播。它的频道在订阅里已明确标为 catchup="none",支持该约定的播放器(TiviMate、OTT Navigator、Kodi IPTV Simple 等)不会再给这些频道显示回看入口;节目单本身不受影响。
要回看同一个台,切到播放器里同名频道的咪咕线路(播放器按名聚合「源1 / 源2」时选咪咕那一路),咪咕源的回看链路是现成的。不单独给央视频做回看,是因为央视频回看按频道和时段受版权方限制(如 CCTV13 全时段不提供),做出来体验也是时好时坏。
这是多个无头 Chromium 同时在跑把机器(尤其是内存 ≤2G 的 NAS / 小主机)拖进了交换分区。网页抓取型的源(如纬来体育)、广东台续签、央视景观、湖北台防盗链都需要起一个 Chromium,每个约占 200~400MB;此前它们各自启动、互不知情,且一个当前抓不到的源会在每个 5 分钟检查里都重新起浏览器再试一遍。
现已改为:全进程共用一个启动器,同时存活的 Chromium 不超过 mbrowserConcurrency(默认 2,超出的排队,常驻会话空闲时会主动让位);抓取失败按 10 → 20 → 40 分钟指数退避,不再每 5 分钟重试;网页抓取时不下载视频分片、图片、字体,取票会话也拦掉图片、字体(央视景观、湖北台连媒体请求一并拦掉;广东台的页面须保持在线,否则源站会立刻作废刚发的票据),并关闭 Chromium 磁盘缓存,5 分钟无人取票就整个关掉浏览器。若机器内存很小,建议在 compose 里设 mbrowserConcurrency=1;不需要网页抓取的可直接在「🌐 源管理」关闭对应的源或模块。反过来,若你经常同时观看广东、湖北、央视景观里的多路频道(这三个模块各需要一个常驻浏览器),内存又够(4G 以上),可设 mbrowserConcurrency=3 避免它们互相让位、反复重启浏览器。
想在本地几分钟内验证这套机制:msourceTickSeconds=20 mbackoffBaseMinutes=0.5 node app.js 可把 5 分钟检查周期与 10 分钟退避基数压缩(仅供测试,生产不要设);node scripts/verify-browser-launcher.mjs 会用本机模拟直播页跑一遍并发上限 / 空闲让位 / 分片拦截 / 失败退避。
不需要登录。日志中的「央视直播中国浏览器会话已启动」表示服务端启动无界面的 Chromium,执行央视网页播放器并获取临时 HLS 地址,不会打开登录页,也不会保存央视账号或 Cookie。若相邻日志出现「数字频道号 + 由于版权原因,请登录后观看」,该数字频道号属于咪咕,与央视景观无关。
央视 CDN 会同时校验播放清单和视频分片的源站请求头,普通播放器无法自行补齐,因此央视景观固定使用全代理:只有实际观看时才产生流量,单路常见约 1–3 Mbps,多个观看设备会叠加。升级后请重启服务或重新生成播放列表,并在播放器中刷新订阅;若解析失败,服务日志会明确显示「央视直播中国链接请求失败」及具体原因。
不代表。抓取模块说明的是软件能够与公开页面或接口协作,精选频道的检查目标是确认地址格式和播放可用性;两者都不是对节目版权、地域许可或转播授权的法律审查。公开可访问的地址也可能因权利限制、平台政策或地区差异随时失效。
软件本身按 GPL-3.0 授权,如何使用、修改、分发不受这里限制;受限的是内容:请只接入你已获得授权或本人合法订阅的来源,不要把未获授权的频道拿去公开售卖订阅、重新广播、绕过付费或地域限制,也不要分享他人的账号凭据。对某项来源权利状态有疑问时,可在「🌐 源管理」关闭对应模块或精选频道,并优先使用自己的合法订阅或自有信号。权利人下架流程见版权与侵权处理。
播放器订阅类型的快速选择请看上方播放器适配;遇到新的兼容性问题,欢迎提交 issue 补充。
🎮 零配置即可使用央视频 63 个公开频道;央视频会员台及其他账号能力可在后台「🌐 源管理」按模块关联本人账号(自动登录 / 扫码 / 书签工具)。管理路径、更新间隔等在「设置」页配置——都不必记环境变量。账号只保存在你自己的部署里,令牌与浏览器 profile 都等同登录态、请勿外传。
| 变量名 | 默认值 | 说明 |
|---|---|---|
| mport | 1905 | 容器监听端口 |
| mhost | 公网 / NAS 访问地址,如 http://192.168.1.100:1905 | |
| mpass | 访问密码(可选),设置后访问 http://ip:port/密码/... | |
| mdataDir | /iptv/data | 数据持久化目录(镜像已默认此值并声明数据卷);建议 -v ./data:/iptv/data 绑定宿主机便于备份。老部署挂的 /migu/data 继续兼容,无需改动 |
| 变量名 | 默认值 | 类型 | 介绍 |
|---|---|---|---|
| mport | 1905 | number | 本地运行端口号 |
| mhost | string | 公网/自定义访问地址 格式http://ip:port | |
| mpass | string | 访问密码 大小写字母和数字 添加后访问格式 http://ip:port/mpass/... | |
| mdataDir | 镜像内 /iptv/data;node 直跑为当前目录 | string | 配置 / 数据持久化目录(仅环境变量可设) 旧镜像路径 /migu/data 继续兼容:新路径无数据、旧路径有数据时自动沿用旧路径 |
| madminPath | admin | string | 管理页面自定义路径,如填 console 则用 /console 访问后台(/admin 失效)保留字 api/player/favicon.ico 与非法值会回退 admin |
| muserId | string | 咪咕模块的账号 ID(仅需高画质 / 会员内容时配置) 推荐改在后台模块卡片里配置(附书签工具一键获取) | |
| mtoken | string | 咪咕模块的登录 token(同上) | |
| mrateType | 3 | number | 咪咕模块画质 2: 标清 (480p) 3: 高清 (720p) 4: 蓝光 (1080p,需VIP) 7: 原画 (1080p+,需VIP) 9: 4K (2160p,需VIP) |
| mbiliSessdata | string | 哔哩哔哩模块的登录态 SESSDATA(不填限「超清」,填了解锁「原画」) 推荐改在后台模块卡片里扫码登录 | |
| mBtimeCookie | string | 北京时间站点登录 Cookie(仅北京 9 个电视频道需要;公开活动 / 慢直播免登录) 推荐改在后台「源管理 → 北京广播电视台」配置 | |
| menableHDR | true | boolean | 是否开启 HDR(vivid/4kvivid) 设 false 关闭 |
| menableH265 | true | boolean | 是否开启 H.265 原画 有兼容性问题(如只有声音没画面)时设 false 关闭 |
| menableClientDispatch | false | boolean | 客户端就近取流:服务器与观看设备不同运营商导致抓取频道跨网卡顿 / 播不了时设 true同网部署无需开启 |
| mupdateInterval | 8 | number | 节目单 / 源更新间隔(小时),不建议过短 |
| mexternalLogoBase | https://gcore.jsdelivr.net/gh/taksssss/tv@main/icon/ | string | 外部 / 内置 / 抓取模块频道没有自带台标时,按频道名到公共台标库兜底取图的基址(默认 taksssss 台标库的 jsDelivr 镜像,3266 个台标,大陆直连可达) 换成其它库需保证 <基址><频道名>.png 可访问;留空关闭兜底。本地 logos/ 里的图始终优先 |
| mexternalLogoIndex | 跟随 mexternalLogoBase | string | 台标库的「频道名 → 图片」索引地址。有索引才知道库里到底有没有这张图:没有就把台标留空、由播放器画占位图,而不是写一个必定 404 的地址(裂图) 索引每 7 天下载一次并落盘缓存,拉不到时自动退回按名兜底。自定义了 mexternalLogoBase 时默认关闭(别人的清单对不上你的库);留空同样关闭 |
| mrefreshToken | true | boolean | 是否每月自动续期平台 token 可能导致封号,可设 false 关闭 |
| mblank | false | boolean | 空白模式总开关,设 true 后下面三项内容开关默认翻转为关细粒度开关显式设值时优先于本项 |
| menableMigu | true | boolean | 是否启用咪咕抓取模块(CCTV/卫视 + 体育赛事 + EPG) 设 false 后体育赛事、回看、对应 EPG 不可用 |
| menableBuiltInSources | true | boolean | 是否启用内置单频道源(纬来体育 / Red Bull / 4K 卫视 等) |
| menableBuiltInSubscriptions | true | boolean | 是否启用内置订阅源(精选频道) 已添加的可在「源管理」删除,删后不复活 |
除
mdataDir/mport外,多数项也可在后台修改(模块项在「🌐 源管理」,平台级项在「设置」页),保存即时生效(端口与更新间隔需重启)。升级用户:环境变量与旧配置继续有效,首次启动自动迁移,无需改动。
后台「📺 我的频道」标题行右侧可新建 / 切换配置档,每档独立维护隐藏 / 分组 / 排序 / 重命名,互不影响;每台电视填各自的地址(每档底部可复制),如 http://你的IP:1905/interface.m3u?profile=woshi。各档共享同一份底层频道与 EPG,新增电视不增加抓取成本;默认档地址不变、老用户零感知。
只想用自己的源时,用内容开关关掉自带内容(也避免同名分组撞车):
| 需求 | 配置 |
|---|---|
| 彻底空白,自己加源 | mblank=true |
| 空白但保留抓取核心 | mblank=true + menableMigu=true |
| 只去掉自带的额外源 / 订阅 | menableBuiltInSources=false + menableBuiltInSubscriptions=false |
也可在后台「🌐 源管理」直接开关各卡片,保存即时生效。关闭 menableMigu 后体育赛事、回看与对应 EPG 不可用,属预期表现。
反向代理 / 域名访问 / 对外分享时填写(如 http://yourdomain.com:1905),仅内网使用留空即可。系统自动按访问来源选择播放列表里的地址:内网访问用内网地址,反代访问(带 X-Forwarded-For)用配置的公网地址;填 http(s):// 完整地址时不会强制补端口。
设置后所有服务都要在 URL 带密码路径:http://ip:port/密码/interface.m3u、http://ip:port/密码/admin 等,播放列表内的频道链接自动注入密码路径,未授权访问返回 403。
需要 Node.js 20+(推荐 22 LTS);部分平台的频道需要中国大陆网络环境。
git clone https://github.com/akiralereal/iptv.git && cd iptv
node app.js
环境变量与 Docker 同名同义,例如:mport=1905 mhost="http://localhost:1905" node app.js(Windows PowerShell:$Env:mport=1905; node app.js)。
本次为「新增香港、台湾与黑龙江、云南共 19 路直播」版本:黑龙江 7 路、云南 7 路各自成组,香港卫视并入「香港」与凤凰三台并列,大爱一台 / 二台与 GOODTV / GOODTV2 并入「台湾」;五家全部免登录、零配置、默认开启,可在源管理逐家关闭。取流方式正好各不相同——黑龙江地址固定且既不校验来源头也不挑播放器标识,频道直接写直链、本机一个字节的媒体都不转发;云南省级要按「当前这档节目」逐次换取带路径签名的 DVR 窗口,既不能预取也不能写死;香港卫视先问源站当前在播的是哪一路再换入口,并把两跳清单拍平成媒体清单;大爱按来源头防盗链、GOOD TV 卡的是播放器标识,两家的清单与分片统一由本机全代理并补齐所需请求头。升级镜像后重启即生效,现有配置与订阅无需改动。
hls_ctx 的子清单里,服务端取回时就拍平成媒体清单再下发,播放器少一跳、也不必理解跨主机的绝对地址;服务端只中继这份小清单,媒体分片由播放器直连上游 CDN,需要时也可用 ?relay=2 全代理。实测为 1280×720、H.264 High / AAC、约 3 Mbps,节目单由默认 EPG 源直接覆盖、无需额外配置。上游 CDN 会按 IP 拒绝一部分来源(实测机房 IP 与个别移动线路回 403,电信家宽与境外正常),服务端中继取不到清单时按既有逻辑回退 302,由播放器自己直连本次为「隐藏不再失效、按名字屏蔽与台标 / 节目单修复」版本:隐藏、重命名、归类、排序四项个性化设置不再因为源换签名地址而静默作废;新增按名字长期屏蔽的规则和一次隐藏整批同前缀分组的入口(issue #123);台标改为按库索引取图、0 裂图,默认台标库与默认 EPG 源双双换新,地方台多补 129 个频道的节目单(issue #124);修复自定义分组撞名后所有分组操作被锁死。升级镜像后重启即生效,现有配置与订阅无需改动,老配置里的默认 EPG 源会自动换成新地址。
?expire=&sign= 签名地址的源,每个刷新周期 ID 都变一次,隐藏掉的频道自己冒回分组、改过的名字复原、挪过的位置弹回,且界面上看不到任何线索——「已隐藏」列表是按当前频道反查的,失配的那条直接就不显示。现在算 ID 前先剥掉时效 / 签名类参数(只剥确定与频道身份无关的那几个,qn 等可能区分清晰度的一律保留,避免两条频道撞成一条),源换签名不再影响频道身份。全量 1078 条频道里只有 16 条的 ID 会因此变一次,且均无历史配置受影响体育-*)早已支持,但一直只有手改配置文件才用得上。现在对其中一个分组点「隐藏分组」时,界面会认出同前缀的兄弟分组并三选一:只隐藏这一个、或连同一起隐藏并存成规则,以后新出现的同前缀分组自动挡掉。前缀取到分隔符为止,体育-* 永远不会误伤「体育」或「体育频道」。被规则隐藏的分组在「已隐藏」里标出来源;恢复时可选解除整条规则或只恢复这一个。顺带修了三处与通配相关的既有问题:「已隐藏」列表在六处各算一遍且算法不一,配置里有通配符时「恢复整组」「全选」会操作到别的分组;对通配隐藏的分组点「恢复」无效却仍提示已恢复;「已隐藏」区的「全选」实际选不中任何频道<频道名>.png 放进数据目录 logos/epg.51zmt.top 已退化到对三个文件返回同一份内容,只剩 101 个央视卫视频道(咪咕本来就有)、2 天节目,地方台一个都补不到。新源 521 个频道、9 天节目、大陆多地探针直连可达;河南、广东、湖南、吉林、江苏、广西、江西、上海和各省少儿频道是主要收益。老配置里一字未改的默认源会自动换成新地址;自己改过名字或地址的那条不会被动,但「设置 → EPG 节目单源」里会明确提示它已失效并给出新地址。EPG 缓存改为 gzip 落盘(17MB → 1.3MB),老的明文缓存照常可读本次为「B 站直播改为播放时解析、北京电视台修复与网络第三方源自助订阅」版本:B 站直播不再把 60 分钟就过期的签名直链写进播放列表,改为与虎牙、斗鱼相同的播放时解析,播放器多久重拉列表都不再每小时全部失效(issue #120);北京广播电视台 9 个电视频道导入 Cookie 后仍播不了的问题查明是电视台 CDN 只认完整频道页 Referer,已补齐;清单直出 / 全代理取回失败时日志写明上游到底回了什么,不再只有一行「回退 302」;v4.7.0 清出精选列表的 77 条网络第三方转发源整理成仓库 from-the-web/from-the-web.m3u 供自助订阅,不进内置默认,「公告」分组新增对应的添加教程短片(issue #121)。升级镜像后重启即生效,已导入的北京 Cookie 无需重做,现有订阅无需重新添加。
from-the-web/ 供自助订阅,并新增「来源于网络」频道添加教程短片(issue #121):v4.7.0 从 IPTV.m3u 移出的台湾 4gtv 系、港澳、新加坡 / 马来西亚和影视共 77 条第三方转发源,现整理成与精选列表同级的 from-the-web/from-the-web.m3u(按台湾 / 香港 / 澳门 / 新加坡 / 马来西亚 / 影视分组,海外逐条复核可拉取清单与媒体分片,MOMO 亲子台已失效未收录),不进内置默认,需要的用户在「源管理 → + 添加自定义源 → 订阅模式 → 在线 URL」粘贴直链即可全部加回;以后从网络收集到的其它链接也会备份到这个文件里,订阅定时刷新后自动出现。转发站域名在大陆电信 / 联通 / 移动家宽与腾讯 / 阿里机房共 9 个探针上均被 DNS 污染,只有海外或全局代理环境才能播,这份清单不维护、失效不作为 bug 受理。「公告」分组新增第三条 25 秒短片,五页演示这份列表是什么、复制直链、后台添加、之后自动跟随更新,和其它系统短片一样可逐条隐藏、不可删除 / 移动 / 排序 / 重命名;短片由 assets/from-the-web-guide-source.html 经 npm run generate:from-the-web-guide 生成https://www.btime.com/btv/btvsy_index),只带根路径 https://www.btime.com/ 一律拒绝且空正文,与地区、IP、登录 Cookie、User-Agent 都无关;独立验证台当时能播正是因为服务端代理写的是完整页面路径,移植进来时收成了根路径。现已按频道页路径补齐,公开活动 / 慢直播按 /live 页给,Cookie 仍只发给官方取流接口、不发给媒体 CDN。升级后重启即生效,已导入的 Cookie 无需重做#EXTVLCOPT 的播放器(LunaTV 等)和 TXT / TVBox 订阅也能直接播 B 站。刷新间隔现在只决定多久重挑一次直播间,允许范围放宽为 15~120 分钟(默认仍 45);「优先 HLS」「播放缓冲」两个直链时代的选项随之下线(统一 HLS)。升级后重启即生效,旧缓存里的直链会在启动抓取时被替换,订阅地址无需更换本次为「央视频会员频道在 Docker / NAS 上真正可用」版本:登录态导入改为复制浏览器请求头里的整段 Cookie——用真实账号实测,央视频的会话 cookie 是 HttpOnly,v4.11.0 的书签工具拿不到、官网必拒;会员桥接不再因为镜像里 Chromium 被压到 96KB 的 JS 栈而在「启动官网解扰兼容桥」后立刻溢出,登录态有效就能播;导入失败时日志和报错会写明官网拒绝的具体原因;「公告」分组里的登录教程短片同步改版为开发者工具复制 Cookie 的六步演示。升级镜像即可生效,已导入的登录态保存在数据卷里无需重做,现有订阅无需重新添加。
String.fromCharCode(...bytes.subarray(i, i + 32768)) 一次把 32768 个字节当参数压栈;Mac 上默认 1MB 栈没事,官方镜像里 Alpine Chromium 为了兜住纬来体育那类混淆站崩渲染进程,JS 栈被压到 96KB,这一句直接溢出,登录态明明有效也播不了。改为 FileReader 原生编码,不占调用栈;本机用同样的 --stack-size=96 参数复现并验证通过,解码字节一致yangshipin.cn 请求,复制 Request Headers 中 Cookie 的完整值粘贴导入(请求头包含 HttpOnly 那层);种入完整 Cookie 后官网当场认出账号与 VIP,已实测。书签工具已从卡片移除;粘错来源(只有 ysp_* 令牌)时解析阶段就会说明缺的是 HttpOnly 会话 cookie,不再白起一次浏览器。导入失败时服务端日志会记下种入了哪些 cookie、官网账号接口的每次回包(路径、状态、返回码)和校验后剩余的 cookie,报错文案按原因区分(续期被拒 / 用户信息接口不认 / 缺会话 cookie)。「央视频会员频道登录教程」短片同步改版为开发者工具复制 Cookie 的六步演示本次为「央视频登录态导入与安徽广电」版本:央视频会员频道新增「获取央视频登录态」书签工具,在自己电脑的浏览器登录官网后点一下、把内容粘贴到后台导入即可,Docker / NAS 等没有桌面的部署也能登录了;关联账号后服务端每 6 小时静默续期一次,家里几天没人看会员频道也不会掉线;「公告」分组新增一条 30 秒的登录教程短片,电视上就能照着操作,不需要可以隐藏;新增安徽广电 7 路官网直播,免登录、零配置、默认开启。升级镜像即可生效,现有订阅无需重新添加。
assets/ysp-login-guide-source.html 经 npm run generate:ysp-guide 生成,生成脚本已支持多目标本次为「央视频会员频道、后台改版与地方台大扩充」版本:央视频在 63 个公开频道之外接入 10 个本人账号可看的会员频道,在本机登录一次官网即可长期复用,会员流自动解扰成普通播放器能播的 H.264;管理后台整体换成浅色、扁平、更舒展的新视觉,功能与操作路径不变;新增北京、重庆、四川、江西、贵州、甘肃、新疆、吉林、内蒙古九地官方广电与 iPanda 共 110 余路直播,福建省级线路改为播放时自动续签,精选列表补入宁夏三台;默认分组顺序改为央视频置顶、地方台沉底,咪咕去掉不可播与重复的分组;系统公告短片重制为 1080p,并可在后台按需隐藏;另修复换台标不生效、央视频误显回看入口、全代理长播断流和凤凰台标裂图。升级镜像即可生效,现有订阅无需重新添加。
localhost 后台打开央视频官方登录窗,登录态只保存在本地 Chromium profile,服务会自动复用会话、刷新短效签名,并把官网播放器解扰后的音视频重组为普通 IPTV 客户端可播的 H.264/AAC HLS。旧版 63 台磁盘缓存会在首次启动时按频道表版本自动重建,无需等 24 小时或手工刷新。Docker/NAS 无法远程弹出首次登录窗,远端管理页会明确禁用相关按钮;会员到期、官网退出或要求重新验证时仍需重新登录/续费mBtimeCookie 环境变量),模块先验证再启用,失效时只隐藏电视台并给出提示、免登录直播照常。凭据只发给官方取流接口,不写进订阅、不发送到媒体 CDN;清单和分片由本机补齐防盗链请求头并代理,macOS 本地会自动沿用系统 HTTPS 代理,Docker / Linux 可按需设置标准 HTTPS_PROXY?relay=2 全代理。官网当前将 XJTV-4、XJTV-5 标记为禁播且对应 CDN 实测 404,因此不纳入频道表scripts/generate-announcement-video.mjs 生成,以后改文案不必手工剪辑.m3u8 后缀,本机按 HLS 直出),公告短片 /assets/announcement.mp4 恰好同源,被当成清单解析后直接报错。现在 mp4 / webm / mp3 等直连媒体后缀一律走浏览器原生播放,独立播放页同时放开进度条;其它频道行为不变(issue #119)/logos/<频道名>.png,移除后重传同名图片地址一字不变,播放器按地址缓存台标(多数永不过期),后台看文件已是新图、电视上显示的仍是第一张。现在台标地址尾部带上文件修改时间作为版本号(?v=…),换图即换地址、播放器重新拉取;台标路由同时补齐 ETag / Last-Modified 并支持 304 条件请求,不认 query 的客户端也能校验新旧。手动放进 logos/ 目录的图同样适用;升级后清单重生成即生效,已缓存旧图的电视重新加载播放列表即可(issue #119)catchup="none",播放器不再显示回看入口;要回看同一个台请切到播放器里同名频道的咪咕线路。频道表版本递增,升级后启动时自动重建缓存,无需手动刷新(issue #119)c1.fengshows-cdn.com,该域名的 HTTPS 已经握不上手(大陆、香港、美国探针全部 TLS 握手失败,走 http 才能拿到图),播放器和后台里凤凰资讯 / 凤凰中文 / 凤凰香港三台一律显示无台标。凤凰秀官网现在把同一批文件挂在 q1.fengshows.com 下、路径一字不差、文件内容一致,且大陆直连可达,现改用该地址。升级后清单重生成即自动生效;已自行上传本地 logos/ 台标的用户不受影响(issue #118)本次为「咪咕取流日志整理」版本:成功取流只打一行「咪咕取流:档位」,账号没订购某条内容的产品但流已正常下发时不再报红字,只给试看时改黄字并写明秒数,红字只留给真正拿不到地址的情况。升级镜像即可生效,现有订阅无需重新添加。
本次为「咪咕 4K 权益与容器抓取修复」版本:咪咕 4K 被大屏策略拒绝后改按手机策略再要一次,足球通等不含电视端的三屏会员不再卡在 1080P,拒绝日志改为带咪咕原话与实际降到的档位;纬来体育在 NAS 官方镜像里抓不到的根因是 Alpine 版 Chromium 一遇深递归就崩掉渲染进程,改为先在沙箱里解析播放器页、不起浏览器即可拿到地址,并给该 Chromium 压小 JS 栈预算兜底;大陆用户外部 / 抓取模块频道的台标改用 jsDelivr 镜像,不再全部裂图;凤凰三台只保留在「香港」,不再复制出一个空的「亚太」分组。升级镜像即可生效,现有订阅无需重新添加。
ott=true,这是咪咕的「大屏 / 电视终端」取流策略,按大屏(四屏)权益判定;三屏会员在这条路上被判「需会员」,代码随即降到蓝光,日志还打「该账号没有会员」,用户明明有会员却被带着去纠结账号。用「4K赛场原声」实测:游客带 ott 直接 409 连降级流都不给,不带 ott 则正常降到 540P、且可选档位里就列着 rateType 9「臻享 超高清」,手机策略本身就有 4K。现在被大屏策略拒绝后先原样按手机策略再要一次 4K,仍被拒才按咪咕愿意给的档位降级(它给到蓝光就要蓝光,此前给蓝光也会再降一级到高清);含大屏权益的账号第一次就成功、路径不变;拒绝日志改为带咪咕原话与实际降到的档位。回归测试 scripts/test-migu-4k-fallback.mjs(issue #117)node:vm 里按顺序跑一遍(跨域的播放器库、统计脚本一律不下载),收集交给播放器(new Player({url}) / hls.loadSource() 等)或写进 DOM 的 m3u8,带 Referer 校验通过即用,本机实测 6 秒、几 MB 内存、不起 Chromium;沙箱拿不到或校验不过才起浏览器嗅探。沙箱只传字符串、不暴露任何宿主对象,同步死循环 3 秒截断,吃内存的脚本由 worker 内存上限兜住,不会拖死主进程;源可用 extractOptions.sandbox=false 关掉。② Alpine 环境(即官方镜像)起 Chromium 时加 --js-flags=--stack-size=96,V8 在撞穿原生栈之前先抛 RangeError 让页面自己 catch(64 / 96 / 128 验证可用、160 仍崩),官方镜像里原样的浏览器抓取从「全部失败」变为 2.8 秒拿到地址,其它网页抓取源与外部「网页提取」源一并受益;桌面 Chrome 没这个问题、不加,代价是页面 JS 递归上限约八百层。回归测试 scripts/test-player-page-sandbox.mjs 用真实播放器页快照做 fixture;排查脚本 scripts/probe-builtin-fetch.mjs 新增沙箱阶段live.fanmingming.com,该域名及其 .cn 镜像在大陆均被 DNS 污染、根本连不上(大陆探针 30/30 失败),表现为 LunaTV 等播放器里咪咕频道有台标、其它源全是裂图。默认地址改为同一台标库的 jsDelivr 镜像(gcore.jsdelivr.net/gh/fanmingming/live@main/tv/),文件一一对应、大陆直连可达,升级后清单重生成即自动生效、无需任何操作;已自行设置 mexternalLogoBase 或放了本地 logos/ 的用户不受影响。环境变量 mexternalLogoBase 补进配置表与 compose 示例(issue #25 / #114)本次为「启动提速与直播源整理」版本:纬来体育等网页抓取源改为在首份播放列表生成之后在后台抓取,启动不再被它拖住十几分钟,单个入口抓不到最多约 35 秒即放弃,抓不到也不再清掉仍可用的旧地址;亚洲与国际直播模块只保留 YTN、NHK World 两个需要动态解析的频道,50 个固定直连源改由内置精选列表 IPTV.m3u 提供,并同步复核清理了精选列表的旧条目;升级后自动清理旧模块残留的缓存频道。升级镜像即可生效,现有订阅无需重新添加。
jrkan.com 此前每轮白等 30 秒),页面导航上限从 puppeteer 默认的 30 秒改为 15 秒(健康页面 4~5 秒就拿到清单,嗅到即走,上限只在页面卡死时才会等满;可按源用 extractOptions.timeout 覆盖),单个入口最坏约 35 秒、一轮三个入口约 1.5 分钟;③ 抓取失败先带 Referer 校验缓存里的旧地址,仍可用就沿用(该 m3u8 多日不变),校验不过才清,频道不再因一次抓不到就整个消失;④ 导航超时时把仍挂着的请求按域名列进日志(挂了多久、有没有响应),不响应脚本的 frame 也会报出,内网抓不到时从容器日志即可看出卡在哪一跳,不必再进容器跑探测脚本。真实 Chromium 验证脚本 scripts/verify-web-extract-timeout.mjs 补了主线程死循环、页面 alert、零响应三个场景IPTV.m3u 提供:v4.6.0 起模块里的 43 个频道每次播放都要经本机解析、校验并代理清单与媒体,但其中绝大多数只是固定 HLS 地址,走这条链路只是多一跳转发。现在 IPTV.m3u 新增独立标记区块「亚洲直播实验台已处理直连源」,收录 50 个按直连方式复核过的固定地址(原模块迁来 27 个,新增 Wipeout Xtra、Graham Norton、Rai Italia、History Hit、Court TV、Documentary+、CGTN Documentary、Sky Racing、FUEL TV、FloRacing、World Poker Tour 等 23 个),每条附实验台备注;模块只留必须先访问官方接口才能拿到当前地址的 YTN 与 NHK World。需要防盗链 Cookie 或 Referer 才能播的 TVB 新闻、Bloomberg 三台,以及未列入实验台直连清单的 DW 两台、Al Jazeera、ABC News Australia、Al Arabiya、National Geographic、NASA+、France 24 Arabic、NBC Sports NOW、Stadium 共 14 个频道不再提供。精选列表原有条目同步绕过 VPN 逐条复核根地址与实际媒体数据:「影视」组的龙华 / 靖天 / TVB 星河等转流条目、香港 TVB / ViuTV / HOY / NOW / 澳门 / 新加坡各台、台湾 4gtv 系列,以及 v4.6.0 补充的纬来日本、纬来育乐 RTMP 源整体清理;翡翠台、公视 / 民视 / 华视 / 台视高清、TVBS 亚洲复核通过保留并按「香港」「台湾」归组,三条第三方凤凰线路归入「香港」。精选列表由运行中的实例直接从仓库拉取,这部分不用升级镜像即已生效extractor-cache.json 里可能还留着旧版频道的延迟解析引用,本版亚洲与国际直播模块从 43 个缩到 2 个,若原样输出,已迁入 IPTV.m3u 的频道会和旧缓存同时出现,旧缓存那份还会生成永远解析不了的本地代理地址。现在每次加载缓存都按模块当前认领范围收口、落盘并打印清理数量;不带延迟解析引用的普通缓存频道不受影响本次为「亚洲直播代理修复」版本:亚洲与国际直播模块改回清单、密钥与媒体全部由本机代理,修复 TVB 新闻等依赖防盗链 Cookie 的频道以及 Bloomberg 美国 / 欧洲台在 v4.6.0 播放失败的问题,Cookie 按域名与路径限定发送、回源重定向逐跳复验白名单;纬来体育把海外可达的入口提前,海外或走代理的部署不再整轮落空。升级镜像即可生效,现有订阅无需重新添加。
jrkan.com 从候选末位提到主地址之后的第一顺位。四个国内镜像只放行国内 IP,jrkan.com 是海外可达的入口,此前排在第六位,而每轮最多只试 3 个入口,海外或走代理的部署一旦主站抓不到就整轮落空、永远轮不到它;国内部署不受影响(jrkan.com 在国内 DNS 被污染、连接失败会立即跳过换下一个),已缓存的地址也不会因调整顺序而重抓。该清单由运行中的实例直接从仓库拉取,不用升级镜像即已生效本次为「亚洲与国际直播接入」版本:新增零配置的亚洲与国际直播模块,一次带来 43 个经验证的公开频道(TVB 新闻、YTN、NHK World、DW、Bloomberg、France 24、Reuters,以及体育、文旅、宠物、台湾、娱乐时尚等),内置精选列表同步去重整理;管理后台视觉刷新并支持在页面内直接播放;修复纬来体育等网页抓取源在内网「早已嗅到地址却因导航超时被整次丢弃」的问题;凤凰三台改为置顶不顶替,第三方同名条目保留作备用线路。升级镜像即可生效,现有订阅无需重新添加。
scripts/probe-builtin-fetch.mjs:不启动整个项目、只对一个源跑一遍完整链路,逐步给出 DNS / 入口页 / 播放器依赖 / 浏览器嗅探 / m3u8 校验的诊断,方便在内网与代理两种网络下对比。另实测纬来体育六个入口的地域可达性正好互补——四个备用入口只放行国内 IP(海外 403)、jrkan.com 在国内被 DNS 污染,入口顺序保持不变IPTV.m3u 移除,不再与模块重复;同时移除 Sky News、FashionTV、央视付费频道、美国影视等一批第三方转流条目;「体育」补充纬来体育,「台湾」补充纬来日本、纬来育乐。该列表由运行中的实例直接从仓库拉取,不用升级镜像即已生效本次为「凤凰卫视接入」版本:新增凤凰卫视三台(登录本人凤凰秀账号即可 720p,无需付费会员)与大连三个正式电视频道;内置网页抓取源支持配置多个入口地址、主站打不开时自动换备用地址重试;并修复辽宁省台、上海频道、央视频三处播放问题与 LunaTV 漏导入频道的兼容问题。升级镜像即可生效,现有订阅无需重新添加。
mFengshowsToken 环境变量)后,三台均为 1280×720 / 25 fps,普通账号即可,无需付费会员;凭证随主项目配置持久保存,重启无需重填。只提供直播,不接入回看、点播与栏目目录;播放时实时向官方取新签名,Token 不发送到媒体 CDN、也不写入订阅。直播为 HTTP-FLV,本机只转发不转码——网页播放器已内置支持,外部播放器需自身支持 HTTP-FLV403 denied by Referer ACL 拒绝(沈阳台的 CDN 恰好不校验,因此表现为「沈阳能播、省台不能」)。现在按官方客户端的公开鉴权协议动态取得并定时刷新,失效自动换新(issue #112)#EXTINF 紧接的下一行当播放地址,中间的 #EXTVLCOPT:network-caching 缓冲提示会让整个频道被丢弃。对外订阅已省略仅含缓冲提示的选项块(防盗链所需的 Referer / User-Agent 仍保留),升级后在 LunaTV 后台刷新直播源即可,订阅地址无需更换(issue #114)bump-version.js release-notes 从更新日志生成,与 README 同源本次为「低配机稳定」版本:修复多个无头 Chromium 同时运行,把内存 ≤2G 的 NAS / 小主机拖进交换分区、表现为服务卡死与硬盘狂读写的问题——全进程共用浏览器启动器限制并发、抓取失败指数退避、网页抓取只嗅探不播放;新增 mbrowserConcurrency 环境变量。升级镜像即可生效,现有订阅无需重新添加。
mbrowserConcurrency(默认 2,超出的排队;广东台 / 湖北台 / 央视景观的常驻会话空闲时主动让位,5 分钟无人取票整个关掉)。位子以浏览器进程真正退出为准归还,进程在登记前就崩溃也会立即释放,不会出现上限一路缩水到 0 的情况;统一启动参数(关 GPU / 磁盘缓存、静音、--disable-dev-shm-usage),候选二进制去重,启动超时直接失败、不再逐级换浏览器往过载的机器上加负载。内存 ≤2G 建议设 1;经常同时观看广东 / 湖北 / 央视景观多路频道且内存 ≥4G 可设 3scripts/verify-browser-launcher.mjs,用真实 Chromium 跑并发上限 / 空闲让位 / 分片拦截 / 失败退避四项(需本机有 Chromium,不进 npm test);msourceTickSeconds / mbackoffBaseMinutes 两个测试用环境变量可压缩 5 分钟检查周期与退避基数(仅供测试);npm test 新增浏览器位子与退避两组单测本次为「央视频接入」版本:新增央视频官方直播模块,免登录、零配置、默认开启,一次带来 63 个官方高清频道;配套修正代理层四处会拖垮播放的通用问题(所有走清单代理/中转的模块都受益),并新增「忽略源自带分组」等频道管理能力。升级镜像即可使用,现有订阅无需重新添加。
本次为「全代理诊断与加固」版本(issue #98 排查配套):订阅地址格式不变,升级后无需重新添加订阅。
?relay= 参数)、清单下发、分片请求与转发结果(状态码、字节数、耗时)、302 跳转下发全部在默认日志留痕,每行带来源 IP 与 UA——curl 自查与播放器请求一眼可分;分片 404、CDN 拒绝代取、网络失败从完全静默改为可见提示。播放异常时只需试播一次、截取一段日志,即可定位卡在哪一环本次为「省市台与景观直播扩容」版本:新增 8 个省市广电模块与虎牙、斗鱼直播模块,接入央视网「直播中国」和上海松江慢直播,并为河北、福建补充景观与地市线路。新增内容全部免登录、默认开启,本版新增约 140 个官方频道与城市景观直播;连同 v4.1.0 的省级模块,官方广电与景观直播在各平台正常返回时合计可提供约 240+ 个频道,实际数量会随平台接口和直播状态动态变化。
live 状态动态筛选)、湖北长江云新闻(6 个,湖北卫视 / 经视 / 综合 / 影视 / 教育 / 垄上)、广州花城+(3 个:广州综合 / 新闻 / 南国都市4K)、南京牛咔视频(4 个电视频道 + 13 路 Live 南京城市景观,自动剔除重复电视流)、青岛蓝睛(五四广场 / 奥帆中心及三路主干道城市直播)client-id 与防盗链;央视景观按需读取官网播放器鉴权结果;松江按公开场景清单更新长效地址。辽宁 / 湖北 / 深圳 / 厦门 / 央视景观清单与分片全代理,河北 / 福建省级 / 松江只中转清单,其余福建地市、广州 / 南京 / 青岛基本直连/migu/data 调整为 /iptv/data;旧匿名卷与旧版 ./data:/migu/data 挂载会自动识别并继续沿用,无需手动迁移本次为「省级台大扩容」版本:一次性新增 9 个省级广电官方直播抓取模块(模块数 2 → 11),全部零配置、免登录、默认开启——升级后无需任何操作,约 106 个官方频道自动按省分组进入播放列表;另有「全代理版」订阅与源管理页改版。
menableExtractors=false 的空白部署也不会被突然打开。不想要哪个省,去「源管理」把对应卡片关掉即可PUPPETEER_EXECUTABLE_PATH / mchromePath 指定路径,没装只影响这一个模块);广西 / 江苏 / 芒果TV / 看看新闻清单与分片全代理(占用服务器带宽),浙江 / 广东 / 福建省级只中转清单、分片由播放器直连官方 CDN,河南 / 山东及福建地市基本直连?relay=2):清单与视频分片全部由服务器同源下发,专治用了兼容版(?relay=1)仍然转圈的播放器(极空间「极影视」等取不动清单内跨主机地址的设备);后台三处订阅地址栏均新增「全代理版」一键复制。注意视频流会经服务器中转,能用兼容版就不要用它(issue #98).m3u8 后缀的同源动态清单(新模块所需);本地裸跑建议 Node.js 20+(推荐 22 LTS);Dockerfile 跳过浏览器下载的变量改用 puppeteer 实际识别的 PUPPETEER_SKIP_DOWNLOAD,行为不变(issue #106)本次为「源模块化」大版本:咪咕从写死的内核收编为第一个「抓取模块」,新增哔哩哔哩直播模块,全部内容来源统一进顶层「源管理」。升级完全向后兼容——存量配置自动迁移、老环境变量继续生效,唯一可感知的变化是抓取频道的分组归一(见下)。
muserId / mrateType / menableH265 等环境变量继续生效),「获取账号」书签工具随之搬家,后台顶部有搬家指路条mbiliSessdatav4.0.1 为 v4.0.0 发布当日的重打版本:并入 B 站扫码登录与后台登录态显示的收尾修复,其余内容同 v4.0.0。
config-pre-import-backup.json,导错可恢复;摸不到 Docker 数据卷目录的 NAS 用户(极空间 / 群晖等)从此不用再找卷路径。注意:导出文件包含咪咕账号与访问密码,请妥善保管;自定义台标 logos/ 需单独拷贝(issue #99).m3u8 后缀(/relay/<频道>.m3u8)——极空间「极影视」等播放器按 URL 后缀识别流格式,无后缀会被判定不可播放;HEAD 探测也改为按 HLS 类型应答。v3.16.0 已添加的旧格式兼容版订阅继续可用,重新复制一次兼容版地址即可获得新格式(issue #98)play.miguvideo.com(挂代理 / 海外部署 / DNS 异常最常见)时,此前日志会刷两大段错误堆栈;现在只打一行错误摘要,播放器会收到「咪咕接口请求失败:网络超时或不可达」的明确提示并自动短周期重试,排查方向一目了然?relay=1,后台「我的频道」订阅地址栏 / 配置档 / 用户令牌处均有「兼容版」一键复制):频道地址改为清单直出——服务器替播放器完成跳转、直接返回播放清单,播放器无需跟随任何跳转;视频流仍由播放器直连 CDN,不占服务器带宽,回看同样可用。能正常播放的播放器无需换用。README 新增「播放器适配一览表」与对应 FAQ 条目(issue #98)menableClientDispatch=true)后,播放地址改由播放器所在网络就近选择节点,跨网观看即可流畅。默认关闭,同网部署无需开启;保存即时生效、无需重启(issue #82)http(s):// 完整地址时不再强行拼上服务端口——内网穿透 / 反向代理走 80/443 标准端口的场景此前会被改成 域名:1905 导致播放不了;只填裸 ip / 域名仍自动补全协议与端口,老配置不受影响group-title 写在 #EXTINF 逗号之后(如 tvg-logo="…",group-title="央视",CCTV1综合),旧解析按「第一个逗号之后」取名,会把 group-title="央视" 一并当成频道名;脏名字回填进 tvg-id="…" 后破坏整行 EXTINF 语法,导致该频道显示错乱、播放异常。改为取「最后一个属性引号之后的逗号」后的部分,名字不再吞属性。已加入的源刷新一次即修正(issue #84)×tamp=、¬in= 这类参数,浏览器解析网页时会把 ×、¬ 等不带分号的旧式 HTML 实体误解成 ×、¬ 等字符,坏地址随后被保存导致一直播不了;现已自动还原。已坏的地址无需手动处理,下次刷新该源即修正。仅影响网页提取(填「网页地址」抓取)的源,订阅源不受影响(issue #84)×tamp= 的地址此前会被浏览器渲染成 ×tamp=(仅显示层,复制按钮与对外播放列表始终是正确地址);现已转义,显示与实际一致(issue #84)央视 ← CCTV)把「未分组」频道自动归到对应分组。自定义订阅源里没写分组、每次刷新又回到未分组的频道,配一次以后自动归位,不用再天天手动整理;只对「未分组」生效、不动源已分好的组,手动移动优先(issue #69)x-tvg-url)也会是公网地址,不用再手动替换内网 IP(issue #62)jrkan.com 走 Cloudflare、国内不翻墙打不开,切到国内可达的 jrs03.com(远程下发,已有部署自动切换、无需重建镜像)CCTV1 / CCTV-1 / CCTV1综合)可按规则批量统一成同一个显示名,同名后播放器能自动并为多线路。开关 enableDisplayNameUnify(默认关、opt-in;环境变量 menableDisplayNameUnify=true 开启),后台「系统配置」可勾选、保存即时生效;手动重命名优先、不会被覆盖。另配套「频道别名」卡片,可视化维护 channel-aliases.json(规范名 ← 别名),补内置规则兜不住的写法(issue #56)CCTV1高清(电信)、湖南卫视(电信))此前能匹配上节目单、却匹配不到台标——台标按「显示名」取图、EPG 按「归一名」匹配,两边口径不一致。现台标改为按归一名匹配(CCTV1高清(电信) → CCTV1、湖南卫视(电信) → 湖南卫视),频道显示名保持不变((电信) 等信源标识仍可见);同时频道名归一增加运营商 / 信源后缀剔除(电信 / 联通 / IPTV…),非 CCTV 频道的 EPG 匹配也一并受益(issue #40)appsication/json,改回标准 application/json,提升咪咕 token 刷新的可靠性/u/<令牌>/m3u,支持单独停用、重置令牌、绑定不同频道档(一人一内容),且令牌只能拉源、进不了管理后台——分享源地址不再连带暴露后台。泄露可追溯到具体某人、可单独吊销,其他人不受影响。本功能仍在测试中,建议先小范围试用、欢迎反馈;不新增用户则对现有部署与现有链接零影响。可用 enableUserTokens=false(或环境变量 menableUserTokens=false)关闭<display-name> 里,旧逻辑只按 id 比对导致 0 命中;现改为优先按 display-name 归一配对(并保留 id 兜底)。另注意:外部 EPG 只给咪咕没覆盖的频道补节目单,咪咕已有 EPG 的频道显示匹配 0 属正常(issue #53).xml 与 .xml.gz),程序定时拉取、把各源频道名归一到本项目规范名后合并进 /playback.xml——某频道只要任一源里有就能补上节目单,咪咕已覆盖的频道始终优先、不被外部覆盖。默认开启、内置默认源、开箱即用,无需手动配;每个源可看抓取时间 / 频道数 / 已匹配数,可调刷新间隔与优先级,并支持「立即刷新」。即使关闭咪咕(enableMigu=false),外部 EPG 也能独立产出节目单。可用 enableEpgAggregation(或环境变量 menableEpgAggregation=false)关闭(issue #38)npx puppeteer browsers install chrome 或下载特定版本(该版本可能被部分系统的安全软件删除导致启动失败);也可用环境变量 PUPPETEER_EXECUTABLE_PATH 显式指定。Docker 部署不受影响(仍使用镜像内置 Chromium)jrkan66.com 已失效,切换到 jrkan.com 的同名页面(该配置为远程下发,部署端会自动更新、无需重建镜像)data/logos/、优先级最高、保存即生效,旁边可移除(issue #40)CCTV-1 / CCTV1HD / CCTV-1综合 …)会自动把 tvg-id/tvg-name 归一到规范名(= 本项目 EPG playback.xml 里的频道名,即咪咕频道名),让外部源频道也能匹配上节目单(issue #39)。CCTV 系列规范名内置可用;卫视/港台等由运行时的 EPG 全集自动覆盖;可在数据目录放 channel-aliases.json(格式 {"规范名": ["别名1","别名2"]})自定义补充。只改 tvg、不动频道显示名。可用 enableTvgNormalize(或环境变量 menableTvgNormalize=false)关闭http://用户名:密码@域名/x.m3u 形式的地址,系统会自动转成 HTTP Basic 认证去拉取,不再因地址里带 用户名:密码@ 而获取失败(注:仅认证「拉取播放列表」这一步;列表内各频道的流地址若也需认证,由播放器侧处理).m3u 后缀的订阅地址:「我的频道」配置档里复制的订阅地址改为 /interface.m3u(内容与 /m3u 完全相同),更适配「按后缀校验订阅链接」的 App(飞牛影视等),不用再手动改地址;裸 /m3u 仍然有效,已配好的地址无需更换/m3u、/interface.m3u 之前以媒体类型 audio/x-mpegurl 返回,会被飞牛订阅 / 浏览器当成「一个视频」去播放、而非当订阅文本解析,导致订阅失败;现改为 text/plain 返回(与 GitHub raw 一致),普通播放器不受影响本次为「多套配置档(大分组)」大版本:一套服务可维护多套个性化播放列表,给家里不同电视(大厅老人 / 卧室年轻人 / 茶室)各用各的;同时补齐外部频道台标、修复多个 issue、优化若干体验。
/m3u?profile=<短名>(如 /m3u?profile=woshi)访问、互不影响——不同电视填各自地址即可各看各的。底层频道 / EPG / 回看多档共享,新增电视不增加抓取成本。完全向后兼容:默认档就是原来的「我的频道」、地址仍是裸 /m3u,老用户与已配好的电视零感知、无需改地址、无数据迁移<频道名>.png 放进数据目录的 logos/ 文件夹即可,优先级高于公共库。可用环境变量 mexternalLogoBase 改地址或留空关闭/interface.m3u 订阅地址:内容与 /m3u 完全相同、仅多 .m3u 后缀——解决飞牛影视等按后缀校验订阅地址、填 /m3u 报「链接不正确」的问题menableHDR=false 关 HDR/Vivid)built-in-sources.json 改为运行时优先从仓库 raw 链接拉取(GitHub 镜像 + 数据卷缓存 + 镜像内置 三重兜底,国内拉不到也和纯本地一样稳)。纬来体育等需网页抓取的源,其抓取网址 webUrl 现在 push 即更新、无需重建镜像(webUrl 变更会自动重抓);可用环境变量 mbuiltInSourcesUrl 改源地址或置空关闭built-in-sources.json 移入 IPTV.m3u,built-in-sources.json 仅保留需网页抓取的纬来体育;以后这些频道改 IPTV.m3u push 即可。合并时按「同分组 名称+地址」去重,与未升级镜像并存也不会重复本次将内置订阅源从依赖第三方链接切换为项目自维护,运行时不再依赖外部仓库的内容与可用性。
IPTV.m3u 随仓库分发,走本仓库的 raw 链接定时刷新),不再依赖第三方仓库的内容与可用性mblank 或手动关闭三个开关实现分组,#genre# / 频道名,地址,一个频道用 # 连多个备用源时取首个),无需额外设置;兼容 GBK/GB2312 编码mblank 空白模式总开关 + menableMigu / menableBuiltInSources / menableBuiltInSubscriptions 三个细粒度开关(环境变量或管理后台「系统配置」勾选;细粒度优先于 mblank;默认全开,老用户无感)。一行 mblank=true 即得到纯频道管理的空白部署,或单独关掉自带的内置源 / 内置订阅源,避免与自建源同名分组撞车:1(实际是 v2.x),现修正为 :2,并修 bump-version.js 使其今后自动更新该标签tvg-name,不影响 EPG 匹配。适合统一不同订阅源对同一频道的不同命名muserId/mtoken 等)配置时,换电脑/无浏览器自动填充的情况下表单显示为空的问题mdataDir 自定义目录。镜像现默认写入 /migu/data 并声明为数据卷,因此即使不改 compose,常规 docker compose pull && up -d 升级也会自动复用卷、不再丢配置;仍推荐用 -v ./data:/migu/data 绑定到宿主机便于备份。 从旧版(数据原在 /migu)首次升级会迁移丢一次,升级前请先用 docker cp 备份 system-config.json / my-playlist-config.json / external-sources.json(详见部署说明)madminPath / mrefreshToken / mdataDir / menableHDR / menableH265 / mupdateInterval);部署示例补上持久化卷与 init本次为安全与稳定性大版本,并新增多项管理功能(自 v1.8.2 起的全部改动)。
/admin 改成任意名字(如 /console)以增强隐蔽性,默认仍为 admin;改名后裸 /admin 失效,api/player/favicon.ico 为保留字,保存后自动跳转新地址/api/* 由校验可伪造的 Referer 头改为与页面一致的路径密码校验(密码模式下经 /<密码>/api/... 访问);未授权统一返回 403、未知接口 404、非 GET/POST 405loading 标志把所有 HTTP 请求逐个串行处理,一次慢抓取/拉取会阻塞包括频道跳转在内的全部请求;现各请求独立处理。POST 请求体读取加 try/catch,客户端中途断开连接返回 400 而非拖垮进程,并新增进程级异常兜底update(),并发改写同一批临时文件会损坏 interface.txt / playback.xml;现串行化执行fetch 模式)启动的 Chromium 在容器内不再堆积 <defunct> 僵尸进程——镜像引入 tini 作为 init 进程回收孤儿子进程(docker-compose.yml 增加 init: true),browser.close() 增加超时与强杀进程组兜底(需重建镜像/容器后生效)menableHDR=false / menableH265=false 之前因布尔与字符串比较问题始终无效,现可正常关闭refreshToken 配置 / mrefreshToken 环境变量关闭reason)并给出排查提示;新增 cdn.jsdelivr.net 备用镜像fileUtil 同步函数误传回调的问题;分组内频道按「名称 + 地址」去重;修复 androidURL.js 中 delay 未引入导致 302 重试逻辑失效的隐藏问题;移除 ddCalcuURL 中无用的 WASM 死代码open -a 方案仅在 Node 与客户端同机时有效,Docker/NAS 等远程部署场景完全失效;改为浏览器直接调用 URL scheme(IINA / PotPlayer)或下载 .m3u 文件(VLC,通过系统文件关联启动),与服务端所在平台彻底解耦.m3u 文件,需在浏览器下载栏手动点击打开,VLC 才会启动并播放Global.m3u),与已有的「港澳地方频道」采用同一套处理方式;BUILT_IN_SUBSCRIPTIONS 常量化,新装默认写入,已有安装启动时自动补齐缺失内置源subscriptionUrl 通过 /api/built-in-sources 暴露给前端,按 URL 命中判定归属,确保「全球频道」「港澳地方频道」下所有频道统一显示为"内置源"新加坡亚洲新闻(CNA) 与 Bloomberg TVgetAllChannels 合并时使用浅拷贝,导致内置源和外部源频道被写入咪咕缓存,每次自动刷新触发 regenerateOnly 重新生成播放列表时重复叠加(如纬来体育出现多条)/usr/bin/chromium,而非 /usr/bin/chromium-browser,导致 Puppeteer 找不到浏览器,抓取静默失败/admin 或 /player 时,响应中会明文暴露访问密码;现改为返回 403 并仅提示密码路径格式/密码/admin 路径无法访问管理后台的问题(路由匹配未覆盖带密码前缀的路径)未分组未分组 不允许重命名、删除或隐藏hiddenChannels 改为按分组独立隐藏,避免跨分组误隐藏同名频道GITHUB_RAW_MIRRORS),检查更新与订阅抓取共用,避免重复代码bump-version.js 版本号统一更新脚本,一条命令同步更新所有文件/ 默认返回 M3U 格式(audio/x-mpegurl),APTV 等客户端可直接用根地址导入体育-* 可一次性隐藏所有体育赛事分组/txt 端点未应用用户配置过滤的问题interface.txt 时使用了异步文件写入(fire-and-forget),导致文件重命名时部分分组尚未写入完成,造成港澳台地方频道(浙江、河南、广东、宁夏、广西、云南等)分组缺失;现已改为同步写入,确保文件完整性external-sources.json.example 示例文件,新增订阅模式配置示例1.2.8,同步更新 package.json、package-lock.json、README 展示版本及 Docker workflow 镜像版本标签LICENSE),并在文档中补充 License 说明pe-cache.json 出仓库,并加入 .gitignore 防止误提交updatePE 运行时同步保存赛事缓存,快速模式下直接从缓存恢复,无需重新调用 APIinterface.txt如果 iPTV 为你的家庭影音体验带来了帮助,欢迎点亮一个 ⭐ Star、分享给朋友,或通过以下方式支持项目继续维护。
| ❤️ GitHub Sponsors | ☕ Ko-fi | 💰 USDT (TRC20) |
|
|
|
TArpwDgewYSFCYX6XoJ6drwpEU6UGBw5yq⚠️ 仅支持 TRON (TRC20) 网络,请勿使用其他网络 Only via TRON (TRC20) network |
[!WARNING]
- 本仓库代码按 GPL-3.0 授权,许可证之外不附加任何使用限制:GPL 允许出于任何目的使用、修改与再分发(含商业用途),条件只有遵守 GPL 条款。以下各条针对的是经本软件接触到的第三方内容、数据与账号的权利,属于法律与合规提示,不是对软件本身的附加许可条件。
- 不得将未获权利人授权的第三方频道与节目内容用于售卖订阅、公开转播、商业运营或其他未经授权的用途;这一限制来自内容权利人与所在地法律,与软件许可证无关。
- 本项目提供的是频道管理、地址解析与代理分发软件;除项目自制的使用公告短片外,项目服务器不托管第三方音视频节目。仓库及运行时可能包含或获取公开可访问的播放地址、频道名称、台标与节目单元数据。公开可访问、技术上可播放或经过可用性检查,均不等同于内容属于公有领域或已获得复制、传播、转播及商业使用授权。
- 音视频内容、频道标识、平台名称和商标的权利归各自平台、制作者及其他权利人所有;文中提及第三方名称仅为说明兼容性,不表示合作、认可、授权或隶属关系。项目的 GPL-3.0 许可只适用于本仓库代码,不授予任何第三方内容、商标、接口或数据的使用权。
- 使用者应自行确认所在地区法律、内容授权范围和各平台用户协议,只接入本人拥有、合法订阅或已获明确授权的来源。不得利用本项目未经授权绕过登录、付费、DRM、地域限制或其他访问控制,不得共享、盗用或转售账号与凭据。
- 互联网来源可能随时变更、下架或被限制,项目不对其合法性、准确性、持续可用性或适销性作任何保证。部署者对其添加、启用、公开访问和转发的来源承担全部责任;如无法确认权利状态,请关闭对应模块或使用
mblank=true从空白配置开始。
如果你是内容权利人或其合法代理人,并认为本仓库收录的某个地址、频道元数据或抓取规则侵犯了你的合法权益,请通过 GitHub Issue 提交通知,标题注明「版权 / 侵权」,并尽量提供:
项目维护者收到信息完整、能够明确定位的通知后,会在合理时间内核验,并视情况移除地址、停用抓取规则或采取其他必要措施。请勿在公开 Issue 中提交身份证件、账号密码、Cookie、Token 等敏感信息;需要补充非公开材料时,可先在 Issue 中留下不含敏感信息的联系方式。
本仓库代码以 GNU General Public License v3.0(SPDX 标识 GPL-3.0-only)授权,全文见 LICENSE。Copyright © 2026 Akira Le。
这意味着:
本项目使用的第三方组件及其许可证:
| 组件 | 用途 | 许可证 |
|---|---|---|
| undici · node-fetch | HTTP 请求 | MIT |
| puppeteer | 无界面浏览器,供需要执行网页脚本的抓取模块使用 | Apache-2.0 |
| qrcode | 后台扫码登录二维码 | MIT |
| hls.js · mpegts.js | 网页播放器解码 | Apache-2.0 |
| DPlayer | 网页播放器界面 | MIT |
以上许可证均与 GPL-3.0 兼容。mpegts.js 随仓库一起分发,其许可证文本见 web/vendor/mpegts-LICENSE.txt;其余组件由 npm 或 CDN 引入,许可证随各自软件包提供。
JavaScript
73.9%
HTML
26.0%
开箱即有 800+ 可稳定流畅播放频道的自托管 IPTV 直播源管理与分发系统,聚合了央视频、咪咕、央视、卫视、凤凰卫视、亚太、国际、地方台、体育赛事、B 站直播、斗鱼直播、虎牙直播等,以及自定义抓取源和订阅,并提供 EPG 节目单与聚合功能;另外还自带 GUI 可视化管理后台,支持 Docker Compose 或 Node.js 运行,适合 NAS 与家庭服务器。
See the code自托管 · 模块化 · 可视化 · NAS 友好
推荐通过 Docker 在 NAS / 服务器上部署,镜像:akiralereal/iptv:latest
iPTV 是一个面向家庭影音与 NAS 用户的模块化 IPTV 直播源管理与分发系统。它内置央视频、咪咕、B站、虎牙、斗鱼及多地区广电等抓取模块,也能接入需要网页解析的内置源、维护者筛选的公开独立源、自定义直连地址和 M3U/TXT 订阅;所有来源统一完成聚合、去重、编排,再输出干净的播放列表与 EPG 节目单。
[!IMPORTANT] 本项目是自托管的软件工具。除项目自制的使用公告短片外,不托管第三方音视频节目;仓库及运行时可能整理互联网上公开可访问的播放地址与频道元数据,但“公开可访问”不代表内容属于公有领域,也不代表已获得复制、转播或商业使用授权。请仅在获得合法授权的范围内使用;如你是权利人并认为相关条目侵权,请按版权与侵权处理提交下架通知。
我的频道 · 所有频道一处编排

源管理 · 每个内容来源独立、透明、可控

播放器实况 · 输出标准订阅,接入常用客户端

| 📺 开箱即用 | 🧩 模块化源管理 | 🪄 可视化编排 |
|---|---|---|
| 默认聚合 800+ 频道,其中央视频模块提供 63 个公开高清频道及 10 个本人账号可访问的会员频道,另有 B站、虎牙、斗鱼热门直播抓取和经筛选的公开独立源 | 央视频、咪咕、B站、虎牙、斗鱼及各广电抓取模块都有独立开关、配置和健康状态,按需启用,互不干扰 | 分组、排序、重命名、隐藏与批量管理,都在浏览器中完成 |
| 🔗 自由接入 | 📡 稳定分发 | 👨👩👧👦 多端共享 |
| 支持 M3U8 直链、网页自动提取,以及 M3U/M3U8/TXT 订阅批量导入 | 自动生成 M3U、TXT 与 EPG;提供兼容版、全代理版应对特殊播放器 | 多配置档与用户令牌,让每台电视、每位用户拥有自己的频道组合 |
[!TIP] 默认配置即可使用免费频道;需要更高画质时,再到「源管理」为对应平台配置你本人合法持有的账号。凭据只保存在自己的部署中。
默认部署目前可聚合 800+ 频道,并会随着平台模块、赛事内容和精选频道持续扩展。实际数量会因平台接口状态、地区网络和启用的模块而动态变化。
| 范围 | 当前覆盖内容 |
|---|---|
| 央视频直播 | 63 个免登录公开频道 + 10 个本人账号可访问的会员频道;公开台覆盖央视全套、CGTN 多语种和全国主要省级卫视,统一归入「央视频」分组 |
| iPanda 直播 | 22 路免登录公开直播:成都与都江堰 2 个 24 小时总频道、18 个熊猫固定机位,以及江苏大丰麋鹿、云南白马雪山 2 路珍稀动物直播,统一归入「iPanda」分组 |
| 央视与卫视 | CCTV 系列、CGTN、全国主要卫视频道 |
| 地方频道 | 北京、重庆、四川、贵州、安徽、广东(含广州、深圳)、广西、福建、江西、甘肃、新疆、云南、吉林、黑龙江、内蒙古、宁夏、海南、河北、湖北、辽宁(含沈阳、大连)、南京、青岛、浙江、江苏、山东、河南、上海、湖南等省市卫视与地面频道,并持续接入更多地区 |
| 景观直播 | 央视网「直播中国」当前在线信号,以及吉林风景、美丽河北、Live 南京、青岛城市直播、上海慢直播等景观频道;数量随平台在线状态动态变化 |
| 体育赛事 | 体育频道、赛事直播,以及昨天 / 今天 / 明天的动态赛事频道 |
| 亚太与国际 | 精选列表提供 50 个经实验台验证的固定直连频道;独立模块另提供 YTN、NHK World 两个需要动态解析的公开频道 |
| 综合内容 | 影视、文旅、教育、少儿、娱乐时尚等分类频道 |
播放列表首位默认提供项目自有的「公告」分组,内含三条自制短片:“欢迎使用 iPTV for iFansClub.com”展示使用方式、版权提醒和侵权联系说明;“央视频会员频道登录教程”演示 Docker / NAS 用户如何从浏览器复制 Cookie 把央视频登录态导入 iPTV;“「来源于网络」频道添加教程”演示如何把仓库 from-the-web/from-the-web.m3u 里的网络第三方源作为订阅自行添加。三者都不引用任何第三方节目素材。不想在电视上显示可以在后台「我的频道」逐条隐藏(随时可在「已隐藏」里恢复);只要显示,该分组就固定在第一位,不支持删除、移动、排序或重命名。
iPTV 的重点不只是一份静态频道表,而是一套可独立开关、可观察状态、可持续刷新的内容接入体系。不同来源采用不同刷新、鉴权与代理策略,平台临时不可达时可在源管理中查看状态或关闭对应模块。
| 来源类型 | 已支持的典型内容 | 工作方式 |
|---|---|---|
| 央视频直播 | 63 个公开频道 + 10 个需登录/VIP 的频道 | 公开频道继续匿名动态取票、自动切换备用 CDN;会员频道复用部署者本人在央视频站点的持久登录态,由网页播放器签发并解扰成本机 H.264/AAC fMP4 HLS,解决普通播放器直接拿会员流时“有声无画”。桌面本机可从源管理自动打开登录窗口;Docker / NAS 等没有桌面的部署从自己电脑浏览器的开发者工具里复制整段 Cookie 导入(会话 cookie 是 HttpOnly,书签工具拿不到),服务端之后自动续期 |
| iPanda 直播 | 成都、都江堰共 20 路熊猫直播,以及江苏大丰麋鹿、云南白马雪山 2 路珍稀动物直播 | 无需登录、无需配置;18 路固定机位使用支持网页直连的上游 CDN,2 个总频道和 2 路珍稀动物直播在播放时检查公开状态并自动切换上游 CDN,清单与媒体由本机安全代理。最高均为真实 720p,即平台所称“超清” |
| 平台直播抓取 | B站、虎牙、斗鱼 | 可按分类自动收录当前热门直播间,也可手动指定房间;播放时处理短效地址、画质选择和平台要求的请求头。B站支持扫码登录以使用本人账号可访问的画质,虎牙、斗鱼支持匿名公开直播 |
| 电视与赛事平台 | 咪咕、体育赛事 | 自动整理频道与节目单,并按账号权限、设备兼容性和平台接口状态选择可用画质;需要登录的能力仅使用部署者本人提供的凭据 |
| 凤凰卫视 | 凤凰资讯、凤凰中文、凤凰香港,归入 香港 | 仅三个电视直播频道;游客 480p,登录普通凤凰秀账号可获取 720p / 25 帧,无需付费会员。后台支持导入 Token / Cookie 并持久保存,播放时取新签名,原始 HTTP-FLV 由本机转发。内置精选列表里的三条第三方凤凰线路同在「香港」,与本模块三台并列保留作备用线路,不合并、不顶替;播放器按名聚合时本模块源排在前面 |
| 香港卫视 | 香港卫视一路电视直播,归入 香港 | 无需登录、无需配置;播放时先问源站当前在播的是哪一路,再换这一路的 HLS 入口。服务端把入口清单拍平成媒体清单后只中继清单,媒体分片由播放器直连上游 CDN。实测为 1280×720、H.264/AAC;节目单由默认 EPG 源直接覆盖 |
| 大爱电视 | 大爱一台、大爱二台,归入 台湾 | 无需登录、无需配置;官网移动版直播页写死的两条官方 HLS,长期不变也不带签名,但上游按 Referer 防盗链——清单和分片裸请求一律 403,故一律由本机补齐官网请求头后全代理。实测均为 1280×720、H.264 High / AAC-LC,30 帧、约 3 Mbps |
| GOOD TV | GOODTV(综合台)、GOODTV2(真理台),归入 台湾 | 无需登录、无需配置;官网播放页写死的固定 HLS,没有签名也没有 Referer 门。官网播放器备了 CloudFront、Akamai 两条线路(同一源站、分片序号一致),播放时两线竞速择优,当前线路取不到清单会在同一次轮询里当场换线。其中 CloudFront 的 WAF 按播放器标识放行(浏览器 / VLC / ExoPlayer 通过,ffmpeg、okhttp 一律 403),播放器用什么标识不由本项目决定,因此清单与分片统一走本机全代理回源。取 1920×1080 档(约 4 Mbps,H.264 Main / AAC-LC,29.97 帧),该档取不到时自动退回 1280×720 |
| 北京广播电视台 | 北京卫视、BRTV 文艺 / 纪实科教 / 影视 / 财经 / 体育休闲 / i生活 / 新闻、卡酷少儿,以及北京时间当前公开活动或慢直播 | 公开直播免登录并自动排除失效项目;9 个电视频道需在后台导入本人北京时间 Cookie。凭据仅用于取流接口,不写入订阅、不发送到媒体 CDN;清单和分片由本机补齐防盗链请求头并代理 |
| 重庆广电 | 源站当前公开的 CQTV新闻 | 无需登录、无需配置;频道表自动同步,播放时匿名换取短效 HLS,清单、AES 密钥和媒体分片由本机全代理 |
| 四川广电 | 四川卫视、新闻、经济、文化旅游、影视文艺、妇女儿童、四川乡村、康巴卫视、四川卫视 4K 超高清 SDR,以及源站当前公开活动直播 | 活动直播有则显示、无则隐藏且无需登录;9 个固定电视台需使用部署者本人的四川源站登录态。后台提供书签工具读取源站 Token,服务端播放时动态换取短效地址,清单、密钥和媒体分片均补齐源站防盗链请求头并全代理 |
| 江西广电 | 江西卫视、都市、经济生活、公共农业、少儿、新闻、移动电视、陶瓷共 8 路 | 无需登录、无需配置;源站当前公开的是单档 720p,服务端按源站公开算法获取匿名短效 token,并在播放器每次轮询时重新拉取滚动清单;清单、密钥和媒体分片均补齐防盗链请求头并全代理 |
| 贵州广电 | 贵州卫视、公共、影视文艺、大众生活、生态乡村、科教健康、经济、移动电视共 8 路 | 无需登录、无需配置;播放时从源站公开 API 获取当前短效签名地址,播放器每次轮询重新拉取只有三个 3 秒分片的滚动清单,清单和媒体全代理;家有购物明确不纳入频道表 |
| 甘肃广电 | 甘肃卫视、文化影视、移动电视、少儿、科教、公共应急共 6 路 | 无需登录、无需配置;播放时从源站公开接口动态获取当前入口,每次轮询重新拉取滚动清单并中继给播放器,视频分片由播放器直连上游 CDN;入口轮换或接口短时抖动会自动重试和兜底 |
| 黑龙江广电 | 黑龙江卫视、都市、新闻法治、文体、少儿、影视、农业科教共 7 路 | 无需登录、无需配置;极光新闻 App 在用的官方入口,地址固定、不带签名,上游既不校验来源也不挑播放器标识,因此频道直接给直链,由播放器直连官方 CDN,本机不转发媒体。官方业务域名走 4430 端口而非 443。实测 7 路均为 1280×720、H.264 / AAC-LC,25 帧 |
| 云南广电 | 云视网云南卫视、都市、康旅、澜湄国际,以及七彩云端临沧、怒江、昭通共 7 路,统一归入 云南 | 无需登录、无需配置;省级四路由官网接口按「当前这档节目」签发 DVR 窗口地址,签名按路径签、无法预取,播放时重新换取,节目换档后下一次解析自然接上(分片序号连续,实测跨档不断流);地方三路按七彩云端目录取当前在线机位。两家回源要求不同,省级必须带官网来源头、地方不需要,清单与分片均由本机全代理。省级实测 1280×720 / 25 帧,地方分别为 720p25、1080p50 与 720×416 |
| 安徽广电 | 安徽卫视、经济生活、影视、公共、农业科教、综艺体育、国际频道共 7 路 | 无需登录、无需配置;按「安徽视讯」App 的公开算法解出鉴权密钥并逐路生成两小时签名,播放器每次轮询都重新拉取滚动清单;上游 CDN 只放行 App 播放器标识,清单与分片均以 App 标识经本机全代理 |
| 新疆广电 | 新疆卫视、维吾尔语新闻综合、哈萨克语新闻综合、体育健康、少儿共 5 路 | 无需登录、无需配置;播放时从丝路视听网当前 Nuxt 包静态解析当天公开签名配置,再调用源站接口签发约一小时有效的 HLS。服务端中继实时清单,媒体分片默认由播放器直连上游 CDN,也可用全代理订阅;源站标记禁播且实测返回 404 的 XJTV-4、XJTV-5 不纳入频道表 |
| 吉林广电 | 6 路省级频道、9 路地方台和 13 路慢直播,共 28 路 | 无需登录、无需配置;常规电视归入「吉林」,慢直播归入「吉林风景」。省级频道和季节性景观在播放时从源站加密接口获取短效 HLS,固定地方台和固定景观使用已验证的 HTTPS 入口;清单、密钥和媒体分片均由本机全代理 |
| 内蒙古广电 | 内蒙古卫视、蒙古语卫视等 8 路自治区频道,以及 12 路盟市频道,共 20 路 | 无需登录、无需配置;20 路全部归入唯一的「内蒙古」分组。播放时按奔腾融媒源站公开协议调用加密频道接口获取动态地址,并为清单、密钥和媒体分片补齐防盗链请求头后由本机全代理 |
| 亚洲与国际直播 | 2 个动态公开频道:YTN、NHK World;另有 50 个固定直连频道位于精选列表的独立标记区块 | 动态频道由独立零配置模块在播放时从平台接口获取当前 HLS,并由本机代理清单、密钥与媒体;固定频道使用实验台验证过的原始 HLS 地址,不经过该解析模块,避免重复和额外转发开销 |
| 广电抓取 | 北京、重庆、四川、贵州、安徽、大连、广东、广西、福建、江西、甘肃、新疆、云南、吉林、黑龙江、内蒙古、海南、河北、湖北、河南、湖南、江苏、辽宁、南京、青岛、山东、上海、深圳、浙江等 | 从各广电源站、公开接口或客户端公开直播能力获取当前地址;短效签名、防盗链、加密清单和 CDN 代理按模块分别处理 |
| 景观直播 | 央视网「直播中国」、吉林风景、美丽河北、Live 南京、上海与青岛城市景观等 | 按源站当前在线状态动态收录;离线、下架或源站调整时会自动减少,不以固定频道数承诺可用性 |
| 内置网页抓取源 | 如纬来体育等需要从公开页面解析当前地址的单频道源 | 内置抓取规则与定时刷新;每个源可配多个入口地址,主站打不开或抓不到时自动换备用地址重试,清单本身通过远程配置更新(改仓库文件即生效,无需升级镜像)。每个源均可单独关闭 |
| 精选公开独立源 | 体育、国际、亚太、影视、纪实、音乐、娱乐时尚等 | 项目维护的「精选频道」列表,收集公开可访问且经可用性检查的独立播放地址,并提供远程更新与本地快照兜底;可访问性检查不等同于版权授权审查 |
| 用户自有来源 | M3U8 直链、网页提取、M3U/M3U8/TXT 订阅 | 完全由部署者自行添加、排序、分组和控制在哪些配置档中显示,适合接入自有设备、合法订阅或已获授权的直播源 |
[!NOTE] 所有内置抓取模块、内置网页抓取源和精选频道都能在「🌐 源管理」中独立关闭;需要完全空白的频道管理器时可使用
mblank=true。平台名称及商标仅用于说明兼容性,本项目不隶属于、也不代表上述平台或内容权利人。
本次为「新增香港、台湾与黑龙江、云南共 19 路直播」版本:黑龙江 7 路、云南 7 路各自成组,香港卫视并入「香港」与凤凰三台并列,大爱一台 / 二台与 GOODTV / GOODTV2 并入「台湾」;五家全部免登录、零配置、默认开启,可在源管理逐家关闭。取流方式正好各不相同——黑龙江地址固定且既不校验来源头也不挑播放器标识,频道直接写直链、本机一个字节的媒体都不转发;云南省级要按「当前这档节目」逐次换取带路径签名的 DVR 窗口,既不能预取也不能写死;香港卫视先问源站当前在播的是哪一路再换入口,并把两跳清单拍平成媒体清单;大爱按来源头防盗链、GOOD TV 卡的是播放器标识,两家的清单与分片统一由本机全代理并补齐所需请求头。升级镜像后重启即生效,现有配置与订阅无需改动。
hls_ctx 的子清单里,服务端取回时就拍平成媒体清单再下发,播放器少一跳、也不必理解跨主机的绝对地址;服务端只中继这份小清单,媒体分片由播放器直连上游 CDN,需要时也可用 ?relay=2 全代理。实测为 1280×720、H.264 High / AAC、约 3 Mbps,节目单由默认 EPG 源直接覆盖、无需额外配置。上游 CDN 会按 IP 拒绝一部分来源(实测机房 IP 与个别移动线路回 403,电信家宽与境外正常),服务端中继取不到清单时按既有逻辑回退 302,由播放器自己直连完整更新历史见下方 更新日志
推荐使用 Docker Compose。只需要一个配置文件和一条启动命令,几分钟即可拥有自己的 IPTV 服务。
Docker 镜像:akiralereal/iptv · 查看版本标签。下面使用 latest 标签;使用 NAS 图形化容器管理器时,也可直接搜索 akiralereal/iptv,按下方配置设置端口和数据目录。
创建 docker-compose.yml:
services:
iptv:
image: akiralereal/iptv:latest
container_name: iptv
init: true # 回收 Chromium 僵尸进程
ports:
- "1905:1905"
environment:
- mport=1905 # 容器监听端口,与 ports 对应
# - mhost= # 可选:外部访问地址(如 http://192.168.1.100:1905)
# - mpass= # 可选:访问密码,设置后访问 http://ip:port/密码/...
volumes:
- ./data:/iptv/data # 数据持久化,不挂载则重建容器 / 升级镜像会丢配置
restart: always
docker compose up -d
升级时执行:
docker compose pull && docker compose up -d
部署完即可访问:
| 用途 | 地址 |
|---|---|
| M3U 播放列表 | http://your-ip:1905/interface.m3u(推荐带 .m3u 后缀;裸 /m3u 内容相同) |
| TXT 播放列表 | http://your-ip:1905/txt |
| EPG 节目单 | http://your-ip:1905/playback.xml |
| 管理后台 | http://your-ip:1905/admin(设了密码则 http://your-ip:1905/密码/admin) |
🧩 平台账号、画质等内容配置不用写进 compose:部署后进后台「🌐 源管理」在对应模块卡片里设置(支持扫码登录 / 书签工具),保存即时生效。备份 / 换机迁移用后台「设置 → 系统配置 → 🧳 配置备份 / 迁移」一键导出导入(
logos/自定义台标需单独拷贝),或直接备份./data目录。更多环境变量与玩法见配置与进阶。
四个页面,完成从内容接入到播放分发的整个流程:
| 页面 | 能做什么 |
|---|---|
| 📺 我的频道 | 分组、隐藏、排序、重命名与批量管理;按名字长期屏蔽频道、一次隐藏整批同前缀分组;查缺台标;建立多套配置档;复制标准版、兼容版或全代理版订阅地址 |
| 🌐 源管理 | 管理抓取模块、内置源与精选频道;添加网页提取、手动直链或订阅源;检测失效频道并调整多源优先级 |
| ⚙️ 设置 | 调整系统参数、频道别名、自动分组规则、EPG 聚合和用户令牌;导出或导入完整配置 |
| ℹ️ 关于我们 | 查看当前版本并检查更新 |
修改源后 1-2 秒内自动重新生成播放列表;外部源配置存于数据目录 external-sources.json。
B站 / 虎牙 / 斗鱼 / 咪咕 ─┐
广电与景观抓取模块 ───────┤
iPanda 直播模块 ──────────┤
亚洲与国际直播模块 ───────┤
内置网页抓取源 ───────────┼─→ iPTV 聚合 / 去重 / 编排 ─→ M3U / TXT / EPG ─→ 电视 · 手机 · 电脑
精选公开独立源 ───────────┤
自定义直链与外部订阅 ─────┘
| 播放器 | 推荐订阅 |
|---|---|
| DIYP / 百川影音 | TXT 订阅:/txt |
| TiviMate / APTV / Kodi / OK 影视 | 标准 M3U:/interface.m3u |
| 飞牛影视 | 标准 M3U:/interface.m3u,必须保留 .m3u 后缀 |
| 极空间极影视、部分老电视盒 | 兼容版:/interface.m3u?relay=1 |
| 使用兼容版仍无法播放的设备 | 全代理版:/interface.m3u?relay=2,兼容的频道会由服务器转发视频分片 |
[!NOTE] 能使用标准版就无需切换;标准版链路最直接。播放器不跟随跳转时使用兼容版,只有兼容版仍失败时才使用全代理版。
部分内置模块会按平台要求自动为单个频道启用全代理,与所选订阅版本无关。例如央视景观的 CDN 会校验源站请求头,因此即使使用标准订阅,该分组的清单和视频分片也会自动经过 iPTV 服务端;其他可直连频道不受影响。
iPanda 网页播放器的清晰度名称与实际分辨率依次是:流畅 640×360、标清 854×480、高清 1024×576、超清 1280×720。播放器把 1080p 另称为“蓝光”,但当前 22 路 HLS 均未提供该档;逐路检查最高档视频编码也都是实际 1280×720,不是清单虚标。
这些频道的匿名接口已经返回公开可播状态,页面没有启用 VIP 清晰度限制。登录不会为当前 iPanda 直播解锁 1080p;主项目检测到的最高档 720p 正好就是播放器菜单中的“超清”。两个 24 小时总频道提供上述四档,其余 20 路为单档 720p。
北京时间的公开活动和慢直播不需要登录,会自动出现;北京卫视、BRTV 各地面频道与卡酷少儿需要本人站点登录态。进入「🌐 源管理 → 北京广播电视台」,按卡片里的入口打开站点并登录;在浏览器开发者工具的 Network(网络)里刷新页面,点开 getUserInfo 请求,在 Request Headers 中单击 Cookie 的值后按 ⌘C(Windows/Linux 按 Ctrl+C),粘贴回后台保存即可,不需要鼠标右键。也可以用 mBtimeCookie 环境变量配置。
模块会先验证 Cookie:有效时加入 9 个电视台,失效时只隐藏电视台并给出提示,免登录直播继续可用。凭据只发给北京时间账号 / 取流接口,不会写进订阅或发送给媒体 CDN。北京时间媒体要求源站防盗链请求头,因此该模块固定由服务端代理 HLS;本地 macOS 会自动沿用系统 HTTPS 代理,Docker / Linux 可按需设置标准 HTTPS_PROXY 环境变量。
进入「🌐 源管理 → 凤凰卫视」,导入本人凤凰秀账号的 App.user.token 后保存即可。支持粘贴 Token 值或包含它的完整 Cookie;模块内提供书签工具和获取步骤,也可用 mFengshowsToken 环境变量配置。保存后的凭证随主项目配置持久保留,重启无需重填;失效时重新获取。
2026-09-03 实测:游客三台均为 854×480;普通账号登录后三台均为 1280×720、25 fps、H.264,无需付费会员。接口档位叫 fhd,实际是 720p。
本模块只提供凤凰资讯、凤凰中文、凤凰香港三路直播,不接入回看、点播、活动直播或栏目目录。三台归入香港分组;其它来源(内置精选列表、外部订阅)提供的同名凤凰条目不会被顶掉,原样保留作备用线路;播放器按名聚合「源1 / 源2」时本模块源排在前面,即默认源。播放地址实时向上游获取,沿用地区调度,Token 不发送到媒体 CDN 或写入订阅。直播使用 HTTP-FLV,本机仅转发不转码;网页播放器已支持,外部播放器也需支持 HTTP-FLV。
部分 LunaTV / MoonTV 版本只把 #EXTINF 紧接的下一行当播放地址,遇到中间的 #EXTVLCOPT:network-caching 缓冲提示会漏掉整个频道(issue #114)。本项目的 M3U 输出已省略仅含缓冲提示的选项块,也兼容升级前的频道缓存。运行包含此修复的版本后,在 LunaTV 管理后台刷新直播源即可,订阅地址无需更换;缓冲时长由播放器自行设置。
B 站直播已与虎牙、斗鱼一样改为播放时解析、由本机中继清单,不再依赖 #EXTVLCOPT 请求头。其它来自订阅的直连源若带 Referer / User-Agent,那是播放所需的请求头,仍会保留;若使用的 LunaTV 版本不能解析并传递这些选项,这类频道需要在客户端侧适配,不能靠删除请求头或切换 relay=1/2 修复。
这通常是 H.265(HEVC)兼容性问题:部分平台的直播流默认使用 H.265,而播放器无法解码。进入「🌐 源管理」,打开对应模块的配置并取消「启用 H.265 原画」,保存后重新播放。通过环境变量部署时可设 menableH265=false;个别频道仍有问题时再设置 menableHDR=false。
播放器可能不跟随 302 跳转。进入「我的频道」,点击订阅地址旁的「🩹 兼容版」,将新地址重新添加到播放器即可。兼容版由服务器直出播放清单,视频仍由播放器直连 CDN,不占用服务器的视频转发带宽。
「隐藏」绑的是频道 ID,而 ID 是按播放地址算的——源换了地址,那条隐藏就失效了。带签名 / 有效期参数的地址(?expire=…&sign=…)已经不再影响 ID;换了路径或域名的仍会。想让某个台以后都别出现,用「我的频道」里频道旁的「屏蔽」按钮,或右上角「🚫 屏蔽规则」按名字配一条:规则只看名字,源换址、频道每天重建都照样生效,删掉规则即恢复。像「体育-昨天 / 今天 / 明天」这类每天重建的分组,逐条隐藏没有意义,对其中一个分组点「隐藏分组」时会提议把同前缀的一起隐藏,以后新出现的也自动挡掉。
台标:没有自带台标的频道按名字到公共台标库取图,库里没有的会留空(播放器画自己的占位图,不再裂图)。点「我的频道」右上角「🖼 缺台标」可以列出当前档里所有没图的频道,逐个点进详情上传;或直接把 <频道名>.png 放进数据目录的 logos/,优先级最高。景观、慢直播这类本来就不是台名的,留空即可。
节目单:默认 EPG 源为 https://e.erw.cc/all.xml.gz(521 个频道、9 天节目)。老部署里如果自己改过默认源的名字,程序不会替你换地址,「设置 → EPG 节目单源」里那条会有一行提示;港台频道、各地景观和 B 站 / 虎牙 / 斗鱼这类没有公共节目单,属于正常。
再切换到「🚚 全代理版」,即 /interface.m3u?relay=2。对明确支持服务端代取的频道,它会把清单地址改为本机同源地址并由服务器转发视频分片,能兼容更多老旧或限制较多的播放器;若上游平台不允许服务端拉取分片,则保留该模块的安全播放模式。视频流经服务器会增加带宽占用,因此能使用标准版或兼容版时,不建议开启全代理版。
63 个公开频道不需要登录,服务会在真正播放时动态取票、自动续签短效地址,并在主线路异常时切换备用 CDN。
另有 10 个会员频道会一并出现在播放列表中。两种登录方式任选其一:
localhost 打开后台,进入「🌐 源管理 → 央视频」,点击卡片里的央视频登录按钮,在弹出的窗口完成本人账号登录即可。yangshipin.cn 的请求,在 Request Headers 里单击 Cookie 的值后按 ⌘C(Windows 按 Ctrl+C)复制,粘贴到「🌐 源管理 → 央视频」卡片的导入框并「导入登录态」。必须从请求头复制:央视频的会话 cookie(vusession、accesstoken 等)是 HttpOnly,网页脚本和书签工具读不到,只有请求头里才有完整的一套。服务端会把这组 cookie 种进自己的浏览器 profile 并让站点 SDK 当场校验,成功后显示昵称与 VIP 状态;「公告」分组里的教程短片演示了全过程。服务不接收密码;导入的 cookie 只存在央视频专用的 Chromium profile 里,不写进配置文件或备份。站点 SDK 的刷新令牌 48 小时有效、由 SDK 在页面里自动续期,服务端每 6 小时静默拉起一次后台会话让它续一次,家里几天没人看会员频道也不会掉线;站点要求重新验证、账号退出或会员到期后,需重新登录或导入。导入后如果你自己电脑上的登录被踢下线,属于正常现象(同一份令牌被服务端接管),不影响电视端。
会员视频必须经网页播放器解扰后才能被普通 IPTV 客户端正确解码,因此播放期间服务端会运行 Chromium,并在内存中保留最近少量 H.264/AAC fMP4 片段。最多同时保留 3 个会员频道,45 秒无人请求后释放。首次自动登录目前只支持有桌面环境的本机运行:Docker/NAS 无法把服务端窗口弹到你的电脑,管理页会明确禁用该按钮。浏览器 profile 等同账号凭据,不包含在 JSON 配置备份中,换机或跨平台部署请重新登录。
不能,央视频模块只做直播。它的频道在订阅里已明确标为 catchup="none",支持该约定的播放器(TiviMate、OTT Navigator、Kodi IPTV Simple 等)不会再给这些频道显示回看入口;节目单本身不受影响。
要回看同一个台,切到播放器里同名频道的咪咕线路(播放器按名聚合「源1 / 源2」时选咪咕那一路),咪咕源的回看链路是现成的。不单独给央视频做回看,是因为央视频回看按频道和时段受版权方限制(如 CCTV13 全时段不提供),做出来体验也是时好时坏。
这是多个无头 Chromium 同时在跑把机器(尤其是内存 ≤2G 的 NAS / 小主机)拖进了交换分区。网页抓取型的源(如纬来体育)、广东台续签、央视景观、湖北台防盗链都需要起一个 Chromium,每个约占 200~400MB;此前它们各自启动、互不知情,且一个当前抓不到的源会在每个 5 分钟检查里都重新起浏览器再试一遍。
现已改为:全进程共用一个启动器,同时存活的 Chromium 不超过 mbrowserConcurrency(默认 2,超出的排队,常驻会话空闲时会主动让位);抓取失败按 10 → 20 → 40 分钟指数退避,不再每 5 分钟重试;网页抓取时不下载视频分片、图片、字体,取票会话也拦掉图片、字体(央视景观、湖北台连媒体请求一并拦掉;广东台的页面须保持在线,否则源站会立刻作废刚发的票据),并关闭 Chromium 磁盘缓存,5 分钟无人取票就整个关掉浏览器。若机器内存很小,建议在 compose 里设 mbrowserConcurrency=1;不需要网页抓取的可直接在「🌐 源管理」关闭对应的源或模块。反过来,若你经常同时观看广东、湖北、央视景观里的多路频道(这三个模块各需要一个常驻浏览器),内存又够(4G 以上),可设 mbrowserConcurrency=3 避免它们互相让位、反复重启浏览器。
想在本地几分钟内验证这套机制:msourceTickSeconds=20 mbackoffBaseMinutes=0.5 node app.js 可把 5 分钟检查周期与 10 分钟退避基数压缩(仅供测试,生产不要设);node scripts/verify-browser-launcher.mjs 会用本机模拟直播页跑一遍并发上限 / 空闲让位 / 分片拦截 / 失败退避。
不需要登录。日志中的「央视直播中国浏览器会话已启动」表示服务端启动无界面的 Chromium,执行央视网页播放器并获取临时 HLS 地址,不会打开登录页,也不会保存央视账号或 Cookie。若相邻日志出现「数字频道号 + 由于版权原因,请登录后观看」,该数字频道号属于咪咕,与央视景观无关。
央视 CDN 会同时校验播放清单和视频分片的源站请求头,普通播放器无法自行补齐,因此央视景观固定使用全代理:只有实际观看时才产生流量,单路常见约 1–3 Mbps,多个观看设备会叠加。升级后请重启服务或重新生成播放列表,并在播放器中刷新订阅;若解析失败,服务日志会明确显示「央视直播中国链接请求失败」及具体原因。
不代表。抓取模块说明的是软件能够与公开页面或接口协作,精选频道的检查目标是确认地址格式和播放可用性;两者都不是对节目版权、地域许可或转播授权的法律审查。公开可访问的地址也可能因权利限制、平台政策或地区差异随时失效。
软件本身按 GPL-3.0 授权,如何使用、修改、分发不受这里限制;受限的是内容:请只接入你已获得授权或本人合法订阅的来源,不要把未获授权的频道拿去公开售卖订阅、重新广播、绕过付费或地域限制,也不要分享他人的账号凭据。对某项来源权利状态有疑问时,可在「🌐 源管理」关闭对应模块或精选频道,并优先使用自己的合法订阅或自有信号。权利人下架流程见版权与侵权处理。
播放器订阅类型的快速选择请看上方播放器适配;遇到新的兼容性问题,欢迎提交 issue 补充。
🎮 零配置即可使用央视频 63 个公开频道;央视频会员台及其他账号能力可在后台「🌐 源管理」按模块关联本人账号(自动登录 / 扫码 / 书签工具)。管理路径、更新间隔等在「设置」页配置——都不必记环境变量。账号只保存在你自己的部署里,令牌与浏览器 profile 都等同登录态、请勿外传。
| 变量名 | 默认值 | 说明 |
|---|---|---|
| mport | 1905 | 容器监听端口 |
| mhost | 公网 / NAS 访问地址,如 http://192.168.1.100:1905 | |
| mpass | 访问密码(可选),设置后访问 http://ip:port/密码/... | |
| mdataDir | /iptv/data | 数据持久化目录(镜像已默认此值并声明数据卷);建议 -v ./data:/iptv/data 绑定宿主机便于备份。老部署挂的 /migu/data 继续兼容,无需改动 |
| 变量名 | 默认值 | 类型 | 介绍 |
|---|---|---|---|
| mport | 1905 | number | 本地运行端口号 |
| mhost | string | 公网/自定义访问地址 格式http://ip:port | |
| mpass | string | 访问密码 大小写字母和数字 添加后访问格式 http://ip:port/mpass/... | |
| mdataDir | 镜像内 /iptv/data;node 直跑为当前目录 | string | 配置 / 数据持久化目录(仅环境变量可设) 旧镜像路径 /migu/data 继续兼容:新路径无数据、旧路径有数据时自动沿用旧路径 |
| madminPath | admin | string | 管理页面自定义路径,如填 console 则用 /console 访问后台(/admin 失效)保留字 api/player/favicon.ico 与非法值会回退 admin |
| muserId | string | 咪咕模块的账号 ID(仅需高画质 / 会员内容时配置) 推荐改在后台模块卡片里配置(附书签工具一键获取) | |
| mtoken | string | 咪咕模块的登录 token(同上) | |
| mrateType | 3 | number | 咪咕模块画质 2: 标清 (480p) 3: 高清 (720p) 4: 蓝光 (1080p,需VIP) 7: 原画 (1080p+,需VIP) 9: 4K (2160p,需VIP) |
| mbiliSessdata | string | 哔哩哔哩模块的登录态 SESSDATA(不填限「超清」,填了解锁「原画」) 推荐改在后台模块卡片里扫码登录 | |
| mBtimeCookie | string | 北京时间站点登录 Cookie(仅北京 9 个电视频道需要;公开活动 / 慢直播免登录) 推荐改在后台「源管理 → 北京广播电视台」配置 | |
| menableHDR | true | boolean | 是否开启 HDR(vivid/4kvivid) 设 false 关闭 |
| menableH265 | true | boolean | 是否开启 H.265 原画 有兼容性问题(如只有声音没画面)时设 false 关闭 |
| menableClientDispatch | false | boolean | 客户端就近取流:服务器与观看设备不同运营商导致抓取频道跨网卡顿 / 播不了时设 true同网部署无需开启 |
| mupdateInterval | 8 | number | 节目单 / 源更新间隔(小时),不建议过短 |
| mexternalLogoBase | https://gcore.jsdelivr.net/gh/taksssss/tv@main/icon/ | string | 外部 / 内置 / 抓取模块频道没有自带台标时,按频道名到公共台标库兜底取图的基址(默认 taksssss 台标库的 jsDelivr 镜像,3266 个台标,大陆直连可达) 换成其它库需保证 <基址><频道名>.png 可访问;留空关闭兜底。本地 logos/ 里的图始终优先 |
| mexternalLogoIndex | 跟随 mexternalLogoBase | string | 台标库的「频道名 → 图片」索引地址。有索引才知道库里到底有没有这张图:没有就把台标留空、由播放器画占位图,而不是写一个必定 404 的地址(裂图) 索引每 7 天下载一次并落盘缓存,拉不到时自动退回按名兜底。自定义了 mexternalLogoBase 时默认关闭(别人的清单对不上你的库);留空同样关闭 |
| mrefreshToken | true | boolean | 是否每月自动续期平台 token 可能导致封号,可设 false 关闭 |
| mblank | false | boolean | 空白模式总开关,设 true 后下面三项内容开关默认翻转为关细粒度开关显式设值时优先于本项 |
| menableMigu | true | boolean | 是否启用咪咕抓取模块(CCTV/卫视 + 体育赛事 + EPG) 设 false 后体育赛事、回看、对应 EPG 不可用 |
| menableBuiltInSources | true | boolean | 是否启用内置单频道源(纬来体育 / Red Bull / 4K 卫视 等) |
| menableBuiltInSubscriptions | true | boolean | 是否启用内置订阅源(精选频道) 已添加的可在「源管理」删除,删后不复活 |
除
mdataDir/mport外,多数项也可在后台修改(模块项在「🌐 源管理」,平台级项在「设置」页),保存即时生效(端口与更新间隔需重启)。升级用户:环境变量与旧配置继续有效,首次启动自动迁移,无需改动。
后台「📺 我的频道」标题行右侧可新建 / 切换配置档,每档独立维护隐藏 / 分组 / 排序 / 重命名,互不影响;每台电视填各自的地址(每档底部可复制),如 http://你的IP:1905/interface.m3u?profile=woshi。各档共享同一份底层频道与 EPG,新增电视不增加抓取成本;默认档地址不变、老用户零感知。
只想用自己的源时,用内容开关关掉自带内容(也避免同名分组撞车):
| 需求 | 配置 |
|---|---|
| 彻底空白,自己加源 | mblank=true |
| 空白但保留抓取核心 | mblank=true + menableMigu=true |
| 只去掉自带的额外源 / 订阅 | menableBuiltInSources=false + menableBuiltInSubscriptions=false |
也可在后台「🌐 源管理」直接开关各卡片,保存即时生效。关闭 menableMigu 后体育赛事、回看与对应 EPG 不可用,属预期表现。
反向代理 / 域名访问 / 对外分享时填写(如 http://yourdomain.com:1905),仅内网使用留空即可。系统自动按访问来源选择播放列表里的地址:内网访问用内网地址,反代访问(带 X-Forwarded-For)用配置的公网地址;填 http(s):// 完整地址时不会强制补端口。
设置后所有服务都要在 URL 带密码路径:http://ip:port/密码/interface.m3u、http://ip:port/密码/admin 等,播放列表内的频道链接自动注入密码路径,未授权访问返回 403。
需要 Node.js 20+(推荐 22 LTS);部分平台的频道需要中国大陆网络环境。
git clone https://github.com/akiralereal/iptv.git && cd iptv
node app.js
环境变量与 Docker 同名同义,例如:mport=1905 mhost="http://localhost:1905" node app.js(Windows PowerShell:$Env:mport=1905; node app.js)。
本次为「新增香港、台湾与黑龙江、云南共 19 路直播」版本:黑龙江 7 路、云南 7 路各自成组,香港卫视并入「香港」与凤凰三台并列,大爱一台 / 二台与 GOODTV / GOODTV2 并入「台湾」;五家全部免登录、零配置、默认开启,可在源管理逐家关闭。取流方式正好各不相同——黑龙江地址固定且既不校验来源头也不挑播放器标识,频道直接写直链、本机一个字节的媒体都不转发;云南省级要按「当前这档节目」逐次换取带路径签名的 DVR 窗口,既不能预取也不能写死;香港卫视先问源站当前在播的是哪一路再换入口,并把两跳清单拍平成媒体清单;大爱按来源头防盗链、GOOD TV 卡的是播放器标识,两家的清单与分片统一由本机全代理并补齐所需请求头。升级镜像后重启即生效,现有配置与订阅无需改动。
hls_ctx 的子清单里,服务端取回时就拍平成媒体清单再下发,播放器少一跳、也不必理解跨主机的绝对地址;服务端只中继这份小清单,媒体分片由播放器直连上游 CDN,需要时也可用 ?relay=2 全代理。实测为 1280×720、H.264 High / AAC、约 3 Mbps,节目单由默认 EPG 源直接覆盖、无需额外配置。上游 CDN 会按 IP 拒绝一部分来源(实测机房 IP 与个别移动线路回 403,电信家宽与境外正常),服务端中继取不到清单时按既有逻辑回退 302,由播放器自己直连本次为「隐藏不再失效、按名字屏蔽与台标 / 节目单修复」版本:隐藏、重命名、归类、排序四项个性化设置不再因为源换签名地址而静默作废;新增按名字长期屏蔽的规则和一次隐藏整批同前缀分组的入口(issue #123);台标改为按库索引取图、0 裂图,默认台标库与默认 EPG 源双双换新,地方台多补 129 个频道的节目单(issue #124);修复自定义分组撞名后所有分组操作被锁死。升级镜像后重启即生效,现有配置与订阅无需改动,老配置里的默认 EPG 源会自动换成新地址。
?expire=&sign= 签名地址的源,每个刷新周期 ID 都变一次,隐藏掉的频道自己冒回分组、改过的名字复原、挪过的位置弹回,且界面上看不到任何线索——「已隐藏」列表是按当前频道反查的,失配的那条直接就不显示。现在算 ID 前先剥掉时效 / 签名类参数(只剥确定与频道身份无关的那几个,qn 等可能区分清晰度的一律保留,避免两条频道撞成一条),源换签名不再影响频道身份。全量 1078 条频道里只有 16 条的 ID 会因此变一次,且均无历史配置受影响体育-*)早已支持,但一直只有手改配置文件才用得上。现在对其中一个分组点「隐藏分组」时,界面会认出同前缀的兄弟分组并三选一:只隐藏这一个、或连同一起隐藏并存成规则,以后新出现的同前缀分组自动挡掉。前缀取到分隔符为止,体育-* 永远不会误伤「体育」或「体育频道」。被规则隐藏的分组在「已隐藏」里标出来源;恢复时可选解除整条规则或只恢复这一个。顺带修了三处与通配相关的既有问题:「已隐藏」列表在六处各算一遍且算法不一,配置里有通配符时「恢复整组」「全选」会操作到别的分组;对通配隐藏的分组点「恢复」无效却仍提示已恢复;「已隐藏」区的「全选」实际选不中任何频道<频道名>.png 放进数据目录 logos/epg.51zmt.top 已退化到对三个文件返回同一份内容,只剩 101 个央视卫视频道(咪咕本来就有)、2 天节目,地方台一个都补不到。新源 521 个频道、9 天节目、大陆多地探针直连可达;河南、广东、湖南、吉林、江苏、广西、江西、上海和各省少儿频道是主要收益。老配置里一字未改的默认源会自动换成新地址;自己改过名字或地址的那条不会被动,但「设置 → EPG 节目单源」里会明确提示它已失效并给出新地址。EPG 缓存改为 gzip 落盘(17MB → 1.3MB),老的明文缓存照常可读本次为「B 站直播改为播放时解析、北京电视台修复与网络第三方源自助订阅」版本:B 站直播不再把 60 分钟就过期的签名直链写进播放列表,改为与虎牙、斗鱼相同的播放时解析,播放器多久重拉列表都不再每小时全部失效(issue #120);北京广播电视台 9 个电视频道导入 Cookie 后仍播不了的问题查明是电视台 CDN 只认完整频道页 Referer,已补齐;清单直出 / 全代理取回失败时日志写明上游到底回了什么,不再只有一行「回退 302」;v4.7.0 清出精选列表的 77 条网络第三方转发源整理成仓库 from-the-web/from-the-web.m3u 供自助订阅,不进内置默认,「公告」分组新增对应的添加教程短片(issue #121)。升级镜像后重启即生效,已导入的北京 Cookie 无需重做,现有订阅无需重新添加。
from-the-web/ 供自助订阅,并新增「来源于网络」频道添加教程短片(issue #121):v4.7.0 从 IPTV.m3u 移出的台湾 4gtv 系、港澳、新加坡 / 马来西亚和影视共 77 条第三方转发源,现整理成与精选列表同级的 from-the-web/from-the-web.m3u(按台湾 / 香港 / 澳门 / 新加坡 / 马来西亚 / 影视分组,海外逐条复核可拉取清单与媒体分片,MOMO 亲子台已失效未收录),不进内置默认,需要的用户在「源管理 → + 添加自定义源 → 订阅模式 → 在线 URL」粘贴直链即可全部加回;以后从网络收集到的其它链接也会备份到这个文件里,订阅定时刷新后自动出现。转发站域名在大陆电信 / 联通 / 移动家宽与腾讯 / 阿里机房共 9 个探针上均被 DNS 污染,只有海外或全局代理环境才能播,这份清单不维护、失效不作为 bug 受理。「公告」分组新增第三条 25 秒短片,五页演示这份列表是什么、复制直链、后台添加、之后自动跟随更新,和其它系统短片一样可逐条隐藏、不可删除 / 移动 / 排序 / 重命名;短片由 assets/from-the-web-guide-source.html 经 npm run generate:from-the-web-guide 生成https://www.btime.com/btv/btvsy_index),只带根路径 https://www.btime.com/ 一律拒绝且空正文,与地区、IP、登录 Cookie、User-Agent 都无关;独立验证台当时能播正是因为服务端代理写的是完整页面路径,移植进来时收成了根路径。现已按频道页路径补齐,公开活动 / 慢直播按 /live 页给,Cookie 仍只发给官方取流接口、不发给媒体 CDN。升级后重启即生效,已导入的 Cookie 无需重做#EXTVLCOPT 的播放器(LunaTV 等)和 TXT / TVBox 订阅也能直接播 B 站。刷新间隔现在只决定多久重挑一次直播间,允许范围放宽为 15~120 分钟(默认仍 45);「优先 HLS」「播放缓冲」两个直链时代的选项随之下线(统一 HLS)。升级后重启即生效,旧缓存里的直链会在启动抓取时被替换,订阅地址无需更换本次为「央视频会员频道在 Docker / NAS 上真正可用」版本:登录态导入改为复制浏览器请求头里的整段 Cookie——用真实账号实测,央视频的会话 cookie 是 HttpOnly,v4.11.0 的书签工具拿不到、官网必拒;会员桥接不再因为镜像里 Chromium 被压到 96KB 的 JS 栈而在「启动官网解扰兼容桥」后立刻溢出,登录态有效就能播;导入失败时日志和报错会写明官网拒绝的具体原因;「公告」分组里的登录教程短片同步改版为开发者工具复制 Cookie 的六步演示。升级镜像即可生效,已导入的登录态保存在数据卷里无需重做,现有订阅无需重新添加。
String.fromCharCode(...bytes.subarray(i, i + 32768)) 一次把 32768 个字节当参数压栈;Mac 上默认 1MB 栈没事,官方镜像里 Alpine Chromium 为了兜住纬来体育那类混淆站崩渲染进程,JS 栈被压到 96KB,这一句直接溢出,登录态明明有效也播不了。改为 FileReader 原生编码,不占调用栈;本机用同样的 --stack-size=96 参数复现并验证通过,解码字节一致yangshipin.cn 请求,复制 Request Headers 中 Cookie 的完整值粘贴导入(请求头包含 HttpOnly 那层);种入完整 Cookie 后官网当场认出账号与 VIP,已实测。书签工具已从卡片移除;粘错来源(只有 ysp_* 令牌)时解析阶段就会说明缺的是 HttpOnly 会话 cookie,不再白起一次浏览器。导入失败时服务端日志会记下种入了哪些 cookie、官网账号接口的每次回包(路径、状态、返回码)和校验后剩余的 cookie,报错文案按原因区分(续期被拒 / 用户信息接口不认 / 缺会话 cookie)。「央视频会员频道登录教程」短片同步改版为开发者工具复制 Cookie 的六步演示本次为「央视频登录态导入与安徽广电」版本:央视频会员频道新增「获取央视频登录态」书签工具,在自己电脑的浏览器登录官网后点一下、把内容粘贴到后台导入即可,Docker / NAS 等没有桌面的部署也能登录了;关联账号后服务端每 6 小时静默续期一次,家里几天没人看会员频道也不会掉线;「公告」分组新增一条 30 秒的登录教程短片,电视上就能照着操作,不需要可以隐藏;新增安徽广电 7 路官网直播,免登录、零配置、默认开启。升级镜像即可生效,现有订阅无需重新添加。
assets/ysp-login-guide-source.html 经 npm run generate:ysp-guide 生成,生成脚本已支持多目标本次为「央视频会员频道、后台改版与地方台大扩充」版本:央视频在 63 个公开频道之外接入 10 个本人账号可看的会员频道,在本机登录一次官网即可长期复用,会员流自动解扰成普通播放器能播的 H.264;管理后台整体换成浅色、扁平、更舒展的新视觉,功能与操作路径不变;新增北京、重庆、四川、江西、贵州、甘肃、新疆、吉林、内蒙古九地官方广电与 iPanda 共 110 余路直播,福建省级线路改为播放时自动续签,精选列表补入宁夏三台;默认分组顺序改为央视频置顶、地方台沉底,咪咕去掉不可播与重复的分组;系统公告短片重制为 1080p,并可在后台按需隐藏;另修复换台标不生效、央视频误显回看入口、全代理长播断流和凤凰台标裂图。升级镜像即可生效,现有订阅无需重新添加。
localhost 后台打开央视频官方登录窗,登录态只保存在本地 Chromium profile,服务会自动复用会话、刷新短效签名,并把官网播放器解扰后的音视频重组为普通 IPTV 客户端可播的 H.264/AAC HLS。旧版 63 台磁盘缓存会在首次启动时按频道表版本自动重建,无需等 24 小时或手工刷新。Docker/NAS 无法远程弹出首次登录窗,远端管理页会明确禁用相关按钮;会员到期、官网退出或要求重新验证时仍需重新登录/续费mBtimeCookie 环境变量),模块先验证再启用,失效时只隐藏电视台并给出提示、免登录直播照常。凭据只发给官方取流接口,不写进订阅、不发送到媒体 CDN;清单和分片由本机补齐防盗链请求头并代理,macOS 本地会自动沿用系统 HTTPS 代理,Docker / Linux 可按需设置标准 HTTPS_PROXY?relay=2 全代理。官网当前将 XJTV-4、XJTV-5 标记为禁播且对应 CDN 实测 404,因此不纳入频道表scripts/generate-announcement-video.mjs 生成,以后改文案不必手工剪辑.m3u8 后缀,本机按 HLS 直出),公告短片 /assets/announcement.mp4 恰好同源,被当成清单解析后直接报错。现在 mp4 / webm / mp3 等直连媒体后缀一律走浏览器原生播放,独立播放页同时放开进度条;其它频道行为不变(issue #119)/logos/<频道名>.png,移除后重传同名图片地址一字不变,播放器按地址缓存台标(多数永不过期),后台看文件已是新图、电视上显示的仍是第一张。现在台标地址尾部带上文件修改时间作为版本号(?v=…),换图即换地址、播放器重新拉取;台标路由同时补齐 ETag / Last-Modified 并支持 304 条件请求,不认 query 的客户端也能校验新旧。手动放进 logos/ 目录的图同样适用;升级后清单重生成即生效,已缓存旧图的电视重新加载播放列表即可(issue #119)catchup="none",播放器不再显示回看入口;要回看同一个台请切到播放器里同名频道的咪咕线路。频道表版本递增,升级后启动时自动重建缓存,无需手动刷新(issue #119)c1.fengshows-cdn.com,该域名的 HTTPS 已经握不上手(大陆、香港、美国探针全部 TLS 握手失败,走 http 才能拿到图),播放器和后台里凤凰资讯 / 凤凰中文 / 凤凰香港三台一律显示无台标。凤凰秀官网现在把同一批文件挂在 q1.fengshows.com 下、路径一字不差、文件内容一致,且大陆直连可达,现改用该地址。升级后清单重生成即自动生效;已自行上传本地 logos/ 台标的用户不受影响(issue #118)本次为「咪咕取流日志整理」版本:成功取流只打一行「咪咕取流:档位」,账号没订购某条内容的产品但流已正常下发时不再报红字,只给试看时改黄字并写明秒数,红字只留给真正拿不到地址的情况。升级镜像即可生效,现有订阅无需重新添加。
本次为「咪咕 4K 权益与容器抓取修复」版本:咪咕 4K 被大屏策略拒绝后改按手机策略再要一次,足球通等不含电视端的三屏会员不再卡在 1080P,拒绝日志改为带咪咕原话与实际降到的档位;纬来体育在 NAS 官方镜像里抓不到的根因是 Alpine 版 Chromium 一遇深递归就崩掉渲染进程,改为先在沙箱里解析播放器页、不起浏览器即可拿到地址,并给该 Chromium 压小 JS 栈预算兜底;大陆用户外部 / 抓取模块频道的台标改用 jsDelivr 镜像,不再全部裂图;凤凰三台只保留在「香港」,不再复制出一个空的「亚太」分组。升级镜像即可生效,现有订阅无需重新添加。
ott=true,这是咪咕的「大屏 / 电视终端」取流策略,按大屏(四屏)权益判定;三屏会员在这条路上被判「需会员」,代码随即降到蓝光,日志还打「该账号没有会员」,用户明明有会员却被带着去纠结账号。用「4K赛场原声」实测:游客带 ott 直接 409 连降级流都不给,不带 ott 则正常降到 540P、且可选档位里就列着 rateType 9「臻享 超高清」,手机策略本身就有 4K。现在被大屏策略拒绝后先原样按手机策略再要一次 4K,仍被拒才按咪咕愿意给的档位降级(它给到蓝光就要蓝光,此前给蓝光也会再降一级到高清);含大屏权益的账号第一次就成功、路径不变;拒绝日志改为带咪咕原话与实际降到的档位。回归测试 scripts/test-migu-4k-fallback.mjs(issue #117)node:vm 里按顺序跑一遍(跨域的播放器库、统计脚本一律不下载),收集交给播放器(new Player({url}) / hls.loadSource() 等)或写进 DOM 的 m3u8,带 Referer 校验通过即用,本机实测 6 秒、几 MB 内存、不起 Chromium;沙箱拿不到或校验不过才起浏览器嗅探。沙箱只传字符串、不暴露任何宿主对象,同步死循环 3 秒截断,吃内存的脚本由 worker 内存上限兜住,不会拖死主进程;源可用 extractOptions.sandbox=false 关掉。② Alpine 环境(即官方镜像)起 Chromium 时加 --js-flags=--stack-size=96,V8 在撞穿原生栈之前先抛 RangeError 让页面自己 catch(64 / 96 / 128 验证可用、160 仍崩),官方镜像里原样的浏览器抓取从「全部失败」变为 2.8 秒拿到地址,其它网页抓取源与外部「网页提取」源一并受益;桌面 Chrome 没这个问题、不加,代价是页面 JS 递归上限约八百层。回归测试 scripts/test-player-page-sandbox.mjs 用真实播放器页快照做 fixture;排查脚本 scripts/probe-builtin-fetch.mjs 新增沙箱阶段live.fanmingming.com,该域名及其 .cn 镜像在大陆均被 DNS 污染、根本连不上(大陆探针 30/30 失败),表现为 LunaTV 等播放器里咪咕频道有台标、其它源全是裂图。默认地址改为同一台标库的 jsDelivr 镜像(gcore.jsdelivr.net/gh/fanmingming/live@main/tv/),文件一一对应、大陆直连可达,升级后清单重生成即自动生效、无需任何操作;已自行设置 mexternalLogoBase 或放了本地 logos/ 的用户不受影响。环境变量 mexternalLogoBase 补进配置表与 compose 示例(issue #25 / #114)本次为「启动提速与直播源整理」版本:纬来体育等网页抓取源改为在首份播放列表生成之后在后台抓取,启动不再被它拖住十几分钟,单个入口抓不到最多约 35 秒即放弃,抓不到也不再清掉仍可用的旧地址;亚洲与国际直播模块只保留 YTN、NHK World 两个需要动态解析的频道,50 个固定直连源改由内置精选列表 IPTV.m3u 提供,并同步复核清理了精选列表的旧条目;升级后自动清理旧模块残留的缓存频道。升级镜像即可生效,现有订阅无需重新添加。
jrkan.com 此前每轮白等 30 秒),页面导航上限从 puppeteer 默认的 30 秒改为 15 秒(健康页面 4~5 秒就拿到清单,嗅到即走,上限只在页面卡死时才会等满;可按源用 extractOptions.timeout 覆盖),单个入口最坏约 35 秒、一轮三个入口约 1.5 分钟;③ 抓取失败先带 Referer 校验缓存里的旧地址,仍可用就沿用(该 m3u8 多日不变),校验不过才清,频道不再因一次抓不到就整个消失;④ 导航超时时把仍挂着的请求按域名列进日志(挂了多久、有没有响应),不响应脚本的 frame 也会报出,内网抓不到时从容器日志即可看出卡在哪一跳,不必再进容器跑探测脚本。真实 Chromium 验证脚本 scripts/verify-web-extract-timeout.mjs 补了主线程死循环、页面 alert、零响应三个场景IPTV.m3u 提供:v4.6.0 起模块里的 43 个频道每次播放都要经本机解析、校验并代理清单与媒体,但其中绝大多数只是固定 HLS 地址,走这条链路只是多一跳转发。现在 IPTV.m3u 新增独立标记区块「亚洲直播实验台已处理直连源」,收录 50 个按直连方式复核过的固定地址(原模块迁来 27 个,新增 Wipeout Xtra、Graham Norton、Rai Italia、History Hit、Court TV、Documentary+、CGTN Documentary、Sky Racing、FUEL TV、FloRacing、World Poker Tour 等 23 个),每条附实验台备注;模块只留必须先访问官方接口才能拿到当前地址的 YTN 与 NHK World。需要防盗链 Cookie 或 Referer 才能播的 TVB 新闻、Bloomberg 三台,以及未列入实验台直连清单的 DW 两台、Al Jazeera、ABC News Australia、Al Arabiya、National Geographic、NASA+、France 24 Arabic、NBC Sports NOW、Stadium 共 14 个频道不再提供。精选列表原有条目同步绕过 VPN 逐条复核根地址与实际媒体数据:「影视」组的龙华 / 靖天 / TVB 星河等转流条目、香港 TVB / ViuTV / HOY / NOW / 澳门 / 新加坡各台、台湾 4gtv 系列,以及 v4.6.0 补充的纬来日本、纬来育乐 RTMP 源整体清理;翡翠台、公视 / 民视 / 华视 / 台视高清、TVBS 亚洲复核通过保留并按「香港」「台湾」归组,三条第三方凤凰线路归入「香港」。精选列表由运行中的实例直接从仓库拉取,这部分不用升级镜像即已生效extractor-cache.json 里可能还留着旧版频道的延迟解析引用,本版亚洲与国际直播模块从 43 个缩到 2 个,若原样输出,已迁入 IPTV.m3u 的频道会和旧缓存同时出现,旧缓存那份还会生成永远解析不了的本地代理地址。现在每次加载缓存都按模块当前认领范围收口、落盘并打印清理数量;不带延迟解析引用的普通缓存频道不受影响本次为「亚洲直播代理修复」版本:亚洲与国际直播模块改回清单、密钥与媒体全部由本机代理,修复 TVB 新闻等依赖防盗链 Cookie 的频道以及 Bloomberg 美国 / 欧洲台在 v4.6.0 播放失败的问题,Cookie 按域名与路径限定发送、回源重定向逐跳复验白名单;纬来体育把海外可达的入口提前,海外或走代理的部署不再整轮落空。升级镜像即可生效,现有订阅无需重新添加。
jrkan.com 从候选末位提到主地址之后的第一顺位。四个国内镜像只放行国内 IP,jrkan.com 是海外可达的入口,此前排在第六位,而每轮最多只试 3 个入口,海外或走代理的部署一旦主站抓不到就整轮落空、永远轮不到它;国内部署不受影响(jrkan.com 在国内 DNS 被污染、连接失败会立即跳过换下一个),已缓存的地址也不会因调整顺序而重抓。该清单由运行中的实例直接从仓库拉取,不用升级镜像即已生效本次为「亚洲与国际直播接入」版本:新增零配置的亚洲与国际直播模块,一次带来 43 个经验证的公开频道(TVB 新闻、YTN、NHK World、DW、Bloomberg、France 24、Reuters,以及体育、文旅、宠物、台湾、娱乐时尚等),内置精选列表同步去重整理;管理后台视觉刷新并支持在页面内直接播放;修复纬来体育等网页抓取源在内网「早已嗅到地址却因导航超时被整次丢弃」的问题;凤凰三台改为置顶不顶替,第三方同名条目保留作备用线路。升级镜像即可生效,现有订阅无需重新添加。
scripts/probe-builtin-fetch.mjs:不启动整个项目、只对一个源跑一遍完整链路,逐步给出 DNS / 入口页 / 播放器依赖 / 浏览器嗅探 / m3u8 校验的诊断,方便在内网与代理两种网络下对比。另实测纬来体育六个入口的地域可达性正好互补——四个备用入口只放行国内 IP(海外 403)、jrkan.com 在国内被 DNS 污染,入口顺序保持不变IPTV.m3u 移除,不再与模块重复;同时移除 Sky News、FashionTV、央视付费频道、美国影视等一批第三方转流条目;「体育」补充纬来体育,「台湾」补充纬来日本、纬来育乐。该列表由运行中的实例直接从仓库拉取,不用升级镜像即已生效本次为「凤凰卫视接入」版本:新增凤凰卫视三台(登录本人凤凰秀账号即可 720p,无需付费会员)与大连三个正式电视频道;内置网页抓取源支持配置多个入口地址、主站打不开时自动换备用地址重试;并修复辽宁省台、上海频道、央视频三处播放问题与 LunaTV 漏导入频道的兼容问题。升级镜像即可生效,现有订阅无需重新添加。
mFengshowsToken 环境变量)后,三台均为 1280×720 / 25 fps,普通账号即可,无需付费会员;凭证随主项目配置持久保存,重启无需重填。只提供直播,不接入回看、点播与栏目目录;播放时实时向官方取新签名,Token 不发送到媒体 CDN、也不写入订阅。直播为 HTTP-FLV,本机只转发不转码——网页播放器已内置支持,外部播放器需自身支持 HTTP-FLV403 denied by Referer ACL 拒绝(沈阳台的 CDN 恰好不校验,因此表现为「沈阳能播、省台不能」)。现在按官方客户端的公开鉴权协议动态取得并定时刷新,失效自动换新(issue #112)#EXTINF 紧接的下一行当播放地址,中间的 #EXTVLCOPT:network-caching 缓冲提示会让整个频道被丢弃。对外订阅已省略仅含缓冲提示的选项块(防盗链所需的 Referer / User-Agent 仍保留),升级后在 LunaTV 后台刷新直播源即可,订阅地址无需更换(issue #114)bump-version.js release-notes 从更新日志生成,与 README 同源本次为「低配机稳定」版本:修复多个无头 Chromium 同时运行,把内存 ≤2G 的 NAS / 小主机拖进交换分区、表现为服务卡死与硬盘狂读写的问题——全进程共用浏览器启动器限制并发、抓取失败指数退避、网页抓取只嗅探不播放;新增 mbrowserConcurrency 环境变量。升级镜像即可生效,现有订阅无需重新添加。
mbrowserConcurrency(默认 2,超出的排队;广东台 / 湖北台 / 央视景观的常驻会话空闲时主动让位,5 分钟无人取票整个关掉)。位子以浏览器进程真正退出为准归还,进程在登记前就崩溃也会立即释放,不会出现上限一路缩水到 0 的情况;统一启动参数(关 GPU / 磁盘缓存、静音、--disable-dev-shm-usage),候选二进制去重,启动超时直接失败、不再逐级换浏览器往过载的机器上加负载。内存 ≤2G 建议设 1;经常同时观看广东 / 湖北 / 央视景观多路频道且内存 ≥4G 可设 3scripts/verify-browser-launcher.mjs,用真实 Chromium 跑并发上限 / 空闲让位 / 分片拦截 / 失败退避四项(需本机有 Chromium,不进 npm test);msourceTickSeconds / mbackoffBaseMinutes 两个测试用环境变量可压缩 5 分钟检查周期与退避基数(仅供测试);npm test 新增浏览器位子与退避两组单测本次为「央视频接入」版本:新增央视频官方直播模块,免登录、零配置、默认开启,一次带来 63 个官方高清频道;配套修正代理层四处会拖垮播放的通用问题(所有走清单代理/中转的模块都受益),并新增「忽略源自带分组」等频道管理能力。升级镜像即可使用,现有订阅无需重新添加。
本次为「全代理诊断与加固」版本(issue #98 排查配套):订阅地址格式不变,升级后无需重新添加订阅。
?relay= 参数)、清单下发、分片请求与转发结果(状态码、字节数、耗时)、302 跳转下发全部在默认日志留痕,每行带来源 IP 与 UA——curl 自查与播放器请求一眼可分;分片 404、CDN 拒绝代取、网络失败从完全静默改为可见提示。播放异常时只需试播一次、截取一段日志,即可定位卡在哪一环本次为「省市台与景观直播扩容」版本:新增 8 个省市广电模块与虎牙、斗鱼直播模块,接入央视网「直播中国」和上海松江慢直播,并为河北、福建补充景观与地市线路。新增内容全部免登录、默认开启,本版新增约 140 个官方频道与城市景观直播;连同 v4.1.0 的省级模块,官方广电与景观直播在各平台正常返回时合计可提供约 240+ 个频道,实际数量会随平台接口和直播状态动态变化。
live 状态动态筛选)、湖北长江云新闻(6 个,湖北卫视 / 经视 / 综合 / 影视 / 教育 / 垄上)、广州花城+(3 个:广州综合 / 新闻 / 南国都市4K)、南京牛咔视频(4 个电视频道 + 13 路 Live 南京城市景观,自动剔除重复电视流)、青岛蓝睛(五四广场 / 奥帆中心及三路主干道城市直播)client-id 与防盗链;央视景观按需读取官网播放器鉴权结果;松江按公开场景清单更新长效地址。辽宁 / 湖北 / 深圳 / 厦门 / 央视景观清单与分片全代理,河北 / 福建省级 / 松江只中转清单,其余福建地市、广州 / 南京 / 青岛基本直连/migu/data 调整为 /iptv/data;旧匿名卷与旧版 ./data:/migu/data 挂载会自动识别并继续沿用,无需手动迁移本次为「省级台大扩容」版本:一次性新增 9 个省级广电官方直播抓取模块(模块数 2 → 11),全部零配置、免登录、默认开启——升级后无需任何操作,约 106 个官方频道自动按省分组进入播放列表;另有「全代理版」订阅与源管理页改版。
menableExtractors=false 的空白部署也不会被突然打开。不想要哪个省,去「源管理」把对应卡片关掉即可PUPPETEER_EXECUTABLE_PATH / mchromePath 指定路径,没装只影响这一个模块);广西 / 江苏 / 芒果TV / 看看新闻清单与分片全代理(占用服务器带宽),浙江 / 广东 / 福建省级只中转清单、分片由播放器直连官方 CDN,河南 / 山东及福建地市基本直连?relay=2):清单与视频分片全部由服务器同源下发,专治用了兼容版(?relay=1)仍然转圈的播放器(极空间「极影视」等取不动清单内跨主机地址的设备);后台三处订阅地址栏均新增「全代理版」一键复制。注意视频流会经服务器中转,能用兼容版就不要用它(issue #98).m3u8 后缀的同源动态清单(新模块所需);本地裸跑建议 Node.js 20+(推荐 22 LTS);Dockerfile 跳过浏览器下载的变量改用 puppeteer 实际识别的 PUPPETEER_SKIP_DOWNLOAD,行为不变(issue #106)本次为「源模块化」大版本:咪咕从写死的内核收编为第一个「抓取模块」,新增哔哩哔哩直播模块,全部内容来源统一进顶层「源管理」。升级完全向后兼容——存量配置自动迁移、老环境变量继续生效,唯一可感知的变化是抓取频道的分组归一(见下)。
muserId / mrateType / menableH265 等环境变量继续生效),「获取账号」书签工具随之搬家,后台顶部有搬家指路条mbiliSessdatav4.0.1 为 v4.0.0 发布当日的重打版本:并入 B 站扫码登录与后台登录态显示的收尾修复,其余内容同 v4.0.0。
config-pre-import-backup.json,导错可恢复;摸不到 Docker 数据卷目录的 NAS 用户(极空间 / 群晖等)从此不用再找卷路径。注意:导出文件包含咪咕账号与访问密码,请妥善保管;自定义台标 logos/ 需单独拷贝(issue #99).m3u8 后缀(/relay/<频道>.m3u8)——极空间「极影视」等播放器按 URL 后缀识别流格式,无后缀会被判定不可播放;HEAD 探测也改为按 HLS 类型应答。v3.16.0 已添加的旧格式兼容版订阅继续可用,重新复制一次兼容版地址即可获得新格式(issue #98)play.miguvideo.com(挂代理 / 海外部署 / DNS 异常最常见)时,此前日志会刷两大段错误堆栈;现在只打一行错误摘要,播放器会收到「咪咕接口请求失败:网络超时或不可达」的明确提示并自动短周期重试,排查方向一目了然?relay=1,后台「我的频道」订阅地址栏 / 配置档 / 用户令牌处均有「兼容版」一键复制):频道地址改为清单直出——服务器替播放器完成跳转、直接返回播放清单,播放器无需跟随任何跳转;视频流仍由播放器直连 CDN,不占服务器带宽,回看同样可用。能正常播放的播放器无需换用。README 新增「播放器适配一览表」与对应 FAQ 条目(issue #98)menableClientDispatch=true)后,播放地址改由播放器所在网络就近选择节点,跨网观看即可流畅。默认关闭,同网部署无需开启;保存即时生效、无需重启(issue #82)http(s):// 完整地址时不再强行拼上服务端口——内网穿透 / 反向代理走 80/443 标准端口的场景此前会被改成 域名:1905 导致播放不了;只填裸 ip / 域名仍自动补全协议与端口,老配置不受影响group-title 写在 #EXTINF 逗号之后(如 tvg-logo="…",group-title="央视",CCTV1综合),旧解析按「第一个逗号之后」取名,会把 group-title="央视" 一并当成频道名;脏名字回填进 tvg-id="…" 后破坏整行 EXTINF 语法,导致该频道显示错乱、播放异常。改为取「最后一个属性引号之后的逗号」后的部分,名字不再吞属性。已加入的源刷新一次即修正(issue #84)×tamp=、¬in= 这类参数,浏览器解析网页时会把 ×、¬ 等不带分号的旧式 HTML 实体误解成 ×、¬ 等字符,坏地址随后被保存导致一直播不了;现已自动还原。已坏的地址无需手动处理,下次刷新该源即修正。仅影响网页提取(填「网页地址」抓取)的源,订阅源不受影响(issue #84)×tamp= 的地址此前会被浏览器渲染成 ×tamp=(仅显示层,复制按钮与对外播放列表始终是正确地址);现已转义,显示与实际一致(issue #84)央视 ← CCTV)把「未分组」频道自动归到对应分组。自定义订阅源里没写分组、每次刷新又回到未分组的频道,配一次以后自动归位,不用再天天手动整理;只对「未分组」生效、不动源已分好的组,手动移动优先(issue #69)x-tvg-url)也会是公网地址,不用再手动替换内网 IP(issue #62)jrkan.com 走 Cloudflare、国内不翻墙打不开,切到国内可达的 jrs03.com(远程下发,已有部署自动切换、无需重建镜像)CCTV1 / CCTV-1 / CCTV1综合)可按规则批量统一成同一个显示名,同名后播放器能自动并为多线路。开关 enableDisplayNameUnify(默认关、opt-in;环境变量 menableDisplayNameUnify=true 开启),后台「系统配置」可勾选、保存即时生效;手动重命名优先、不会被覆盖。另配套「频道别名」卡片,可视化维护 channel-aliases.json(规范名 ← 别名),补内置规则兜不住的写法(issue #56)CCTV1高清(电信)、湖南卫视(电信))此前能匹配上节目单、却匹配不到台标——台标按「显示名」取图、EPG 按「归一名」匹配,两边口径不一致。现台标改为按归一名匹配(CCTV1高清(电信) → CCTV1、湖南卫视(电信) → 湖南卫视),频道显示名保持不变((电信) 等信源标识仍可见);同时频道名归一增加运营商 / 信源后缀剔除(电信 / 联通 / IPTV…),非 CCTV 频道的 EPG 匹配也一并受益(issue #40)appsication/json,改回标准 application/json,提升咪咕 token 刷新的可靠性/u/<令牌>/m3u,支持单独停用、重置令牌、绑定不同频道档(一人一内容),且令牌只能拉源、进不了管理后台——分享源地址不再连带暴露后台。泄露可追溯到具体某人、可单独吊销,其他人不受影响。本功能仍在测试中,建议先小范围试用、欢迎反馈;不新增用户则对现有部署与现有链接零影响。可用 enableUserTokens=false(或环境变量 menableUserTokens=false)关闭<display-name> 里,旧逻辑只按 id 比对导致 0 命中;现改为优先按 display-name 归一配对(并保留 id 兜底)。另注意:外部 EPG 只给咪咕没覆盖的频道补节目单,咪咕已有 EPG 的频道显示匹配 0 属正常(issue #53).xml 与 .xml.gz),程序定时拉取、把各源频道名归一到本项目规范名后合并进 /playback.xml——某频道只要任一源里有就能补上节目单,咪咕已覆盖的频道始终优先、不被外部覆盖。默认开启、内置默认源、开箱即用,无需手动配;每个源可看抓取时间 / 频道数 / 已匹配数,可调刷新间隔与优先级,并支持「立即刷新」。即使关闭咪咕(enableMigu=false),外部 EPG 也能独立产出节目单。可用 enableEpgAggregation(或环境变量 menableEpgAggregation=false)关闭(issue #38)npx puppeteer browsers install chrome 或下载特定版本(该版本可能被部分系统的安全软件删除导致启动失败);也可用环境变量 PUPPETEER_EXECUTABLE_PATH 显式指定。Docker 部署不受影响(仍使用镜像内置 Chromium)jrkan66.com 已失效,切换到 jrkan.com 的同名页面(该配置为远程下发,部署端会自动更新、无需重建镜像)data/logos/、优先级最高、保存即生效,旁边可移除(issue #40)CCTV-1 / CCTV1HD / CCTV-1综合 …)会自动把 tvg-id/tvg-name 归一到规范名(= 本项目 EPG playback.xml 里的频道名,即咪咕频道名),让外部源频道也能匹配上节目单(issue #39)。CCTV 系列规范名内置可用;卫视/港台等由运行时的 EPG 全集自动覆盖;可在数据目录放 channel-aliases.json(格式 {"规范名": ["别名1","别名2"]})自定义补充。只改 tvg、不动频道显示名。可用 enableTvgNormalize(或环境变量 menableTvgNormalize=false)关闭http://用户名:密码@域名/x.m3u 形式的地址,系统会自动转成 HTTP Basic 认证去拉取,不再因地址里带 用户名:密码@ 而获取失败(注:仅认证「拉取播放列表」这一步;列表内各频道的流地址若也需认证,由播放器侧处理).m3u 后缀的订阅地址:「我的频道」配置档里复制的订阅地址改为 /interface.m3u(内容与 /m3u 完全相同),更适配「按后缀校验订阅链接」的 App(飞牛影视等),不用再手动改地址;裸 /m3u 仍然有效,已配好的地址无需更换/m3u、/interface.m3u 之前以媒体类型 audio/x-mpegurl 返回,会被飞牛订阅 / 浏览器当成「一个视频」去播放、而非当订阅文本解析,导致订阅失败;现改为 text/plain 返回(与 GitHub raw 一致),普通播放器不受影响本次为「多套配置档(大分组)」大版本:一套服务可维护多套个性化播放列表,给家里不同电视(大厅老人 / 卧室年轻人 / 茶室)各用各的;同时补齐外部频道台标、修复多个 issue、优化若干体验。
/m3u?profile=<短名>(如 /m3u?profile=woshi)访问、互不影响——不同电视填各自地址即可各看各的。底层频道 / EPG / 回看多档共享,新增电视不增加抓取成本。完全向后兼容:默认档就是原来的「我的频道」、地址仍是裸 /m3u,老用户与已配好的电视零感知、无需改地址、无数据迁移<频道名>.png 放进数据目录的 logos/ 文件夹即可,优先级高于公共库。可用环境变量 mexternalLogoBase 改地址或留空关闭/interface.m3u 订阅地址:内容与 /m3u 完全相同、仅多 .m3u 后缀——解决飞牛影视等按后缀校验订阅地址、填 /m3u 报「链接不正确」的问题menableHDR=false 关 HDR/Vivid)built-in-sources.json 改为运行时优先从仓库 raw 链接拉取(GitHub 镜像 + 数据卷缓存 + 镜像内置 三重兜底,国内拉不到也和纯本地一样稳)。纬来体育等需网页抓取的源,其抓取网址 webUrl 现在 push 即更新、无需重建镜像(webUrl 变更会自动重抓);可用环境变量 mbuiltInSourcesUrl 改源地址或置空关闭built-in-sources.json 移入 IPTV.m3u,built-in-sources.json 仅保留需网页抓取的纬来体育;以后这些频道改 IPTV.m3u push 即可。合并时按「同分组 名称+地址」去重,与未升级镜像并存也不会重复本次将内置订阅源从依赖第三方链接切换为项目自维护,运行时不再依赖外部仓库的内容与可用性。
IPTV.m3u 随仓库分发,走本仓库的 raw 链接定时刷新),不再依赖第三方仓库的内容与可用性mblank 或手动关闭三个开关实现分组,#genre# / 频道名,地址,一个频道用 # 连多个备用源时取首个),无需额外设置;兼容 GBK/GB2312 编码mblank 空白模式总开关 + menableMigu / menableBuiltInSources / menableBuiltInSubscriptions 三个细粒度开关(环境变量或管理后台「系统配置」勾选;细粒度优先于 mblank;默认全开,老用户无感)。一行 mblank=true 即得到纯频道管理的空白部署,或单独关掉自带的内置源 / 内置订阅源,避免与自建源同名分组撞车:1(实际是 v2.x),现修正为 :2,并修 bump-version.js 使其今后自动更新该标签tvg-name,不影响 EPG 匹配。适合统一不同订阅源对同一频道的不同命名muserId/mtoken 等)配置时,换电脑/无浏览器自动填充的情况下表单显示为空的问题mdataDir 自定义目录。镜像现默认写入 /migu/data 并声明为数据卷,因此即使不改 compose,常规 docker compose pull && up -d 升级也会自动复用卷、不再丢配置;仍推荐用 -v ./data:/migu/data 绑定到宿主机便于备份。 从旧版(数据原在 /migu)首次升级会迁移丢一次,升级前请先用 docker cp 备份 system-config.json / my-playlist-config.json / external-sources.json(详见部署说明)madminPath / mrefreshToken / mdataDir / menableHDR / menableH265 / mupdateInterval);部署示例补上持久化卷与 init本次为安全与稳定性大版本,并新增多项管理功能(自 v1.8.2 起的全部改动)。
/admin 改成任意名字(如 /console)以增强隐蔽性,默认仍为 admin;改名后裸 /admin 失效,api/player/favicon.ico 为保留字,保存后自动跳转新地址/api/* 由校验可伪造的 Referer 头改为与页面一致的路径密码校验(密码模式下经 /<密码>/api/... 访问);未授权统一返回 403、未知接口 404、非 GET/POST 405loading 标志把所有 HTTP 请求逐个串行处理,一次慢抓取/拉取会阻塞包括频道跳转在内的全部请求;现各请求独立处理。POST 请求体读取加 try/catch,客户端中途断开连接返回 400 而非拖垮进程,并新增进程级异常兜底update(),并发改写同一批临时文件会损坏 interface.txt / playback.xml;现串行化执行fetch 模式)启动的 Chromium 在容器内不再堆积 <defunct> 僵尸进程——镜像引入 tini 作为 init 进程回收孤儿子进程(docker-compose.yml 增加 init: true),browser.close() 增加超时与强杀进程组兜底(需重建镜像/容器后生效)menableHDR=false / menableH265=false 之前因布尔与字符串比较问题始终无效,现可正常关闭refreshToken 配置 / mrefreshToken 环境变量关闭reason)并给出排查提示;新增 cdn.jsdelivr.net 备用镜像fileUtil 同步函数误传回调的问题;分组内频道按「名称 + 地址」去重;修复 androidURL.js 中 delay 未引入导致 302 重试逻辑失效的隐藏问题;移除 ddCalcuURL 中无用的 WASM 死代码open -a 方案仅在 Node 与客户端同机时有效,Docker/NAS 等远程部署场景完全失效;改为浏览器直接调用 URL scheme(IINA / PotPlayer)或下载 .m3u 文件(VLC,通过系统文件关联启动),与服务端所在平台彻底解耦.m3u 文件,需在浏览器下载栏手动点击打开,VLC 才会启动并播放Global.m3u),与已有的「港澳地方频道」采用同一套处理方式;BUILT_IN_SUBSCRIPTIONS 常量化,新装默认写入,已有安装启动时自动补齐缺失内置源subscriptionUrl 通过 /api/built-in-sources 暴露给前端,按 URL 命中判定归属,确保「全球频道」「港澳地方频道」下所有频道统一显示为"内置源"新加坡亚洲新闻(CNA) 与 Bloomberg TVgetAllChannels 合并时使用浅拷贝,导致内置源和外部源频道被写入咪咕缓存,每次自动刷新触发 regenerateOnly 重新生成播放列表时重复叠加(如纬来体育出现多条)/usr/bin/chromium,而非 /usr/bin/chromium-browser,导致 Puppeteer 找不到浏览器,抓取静默失败/admin 或 /player 时,响应中会明文暴露访问密码;现改为返回 403 并仅提示密码路径格式/密码/admin 路径无法访问管理后台的问题(路由匹配未覆盖带密码前缀的路径)未分组未分组 不允许重命名、删除或隐藏hiddenChannels 改为按分组独立隐藏,避免跨分组误隐藏同名频道GITHUB_RAW_MIRRORS),检查更新与订阅抓取共用,避免重复代码bump-version.js 版本号统一更新脚本,一条命令同步更新所有文件/ 默认返回 M3U 格式(audio/x-mpegurl),APTV 等客户端可直接用根地址导入体育-* 可一次性隐藏所有体育赛事分组/txt 端点未应用用户配置过滤的问题interface.txt 时使用了异步文件写入(fire-and-forget),导致文件重命名时部分分组尚未写入完成,造成港澳台地方频道(浙江、河南、广东、宁夏、广西、云南等)分组缺失;现已改为同步写入,确保文件完整性external-sources.json.example 示例文件,新增订阅模式配置示例1.2.8,同步更新 package.json、package-lock.json、README 展示版本及 Docker workflow 镜像版本标签LICENSE),并在文档中补充 License 说明pe-cache.json 出仓库,并加入 .gitignore 防止误提交updatePE 运行时同步保存赛事缓存,快速模式下直接从缓存恢复,无需重新调用 APIinterface.txt如果 iPTV 为你的家庭影音体验带来了帮助,欢迎点亮一个 ⭐ Star、分享给朋友,或通过以下方式支持项目继续维护。
| ❤️ GitHub Sponsors | ☕ Ko-fi | 💰 USDT (TRC20) |
|
|
|
TArpwDgewYSFCYX6XoJ6drwpEU6UGBw5yq⚠️ 仅支持 TRON (TRC20) 网络,请勿使用其他网络 Only via TRON (TRC20) network |
[!WARNING]
- 本仓库代码按 GPL-3.0 授权,许可证之外不附加任何使用限制:GPL 允许出于任何目的使用、修改与再分发(含商业用途),条件只有遵守 GPL 条款。以下各条针对的是经本软件接触到的第三方内容、数据与账号的权利,属于法律与合规提示,不是对软件本身的附加许可条件。
- 不得将未获权利人授权的第三方频道与节目内容用于售卖订阅、公开转播、商业运营或其他未经授权的用途;这一限制来自内容权利人与所在地法律,与软件许可证无关。
- 本项目提供的是频道管理、地址解析与代理分发软件;除项目自制的使用公告短片外,项目服务器不托管第三方音视频节目。仓库及运行时可能包含或获取公开可访问的播放地址、频道名称、台标与节目单元数据。公开可访问、技术上可播放或经过可用性检查,均不等同于内容属于公有领域或已获得复制、传播、转播及商业使用授权。
- 音视频内容、频道标识、平台名称和商标的权利归各自平台、制作者及其他权利人所有;文中提及第三方名称仅为说明兼容性,不表示合作、认可、授权或隶属关系。项目的 GPL-3.0 许可只适用于本仓库代码,不授予任何第三方内容、商标、接口或数据的使用权。
- 使用者应自行确认所在地区法律、内容授权范围和各平台用户协议,只接入本人拥有、合法订阅或已获明确授权的来源。不得利用本项目未经授权绕过登录、付费、DRM、地域限制或其他访问控制,不得共享、盗用或转售账号与凭据。
- 互联网来源可能随时变更、下架或被限制,项目不对其合法性、准确性、持续可用性或适销性作任何保证。部署者对其添加、启用、公开访问和转发的来源承担全部责任;如无法确认权利状态,请关闭对应模块或使用
mblank=true从空白配置开始。
如果你是内容权利人或其合法代理人,并认为本仓库收录的某个地址、频道元数据或抓取规则侵犯了你的合法权益,请通过 GitHub Issue 提交通知,标题注明「版权 / 侵权」,并尽量提供:
项目维护者收到信息完整、能够明确定位的通知后,会在合理时间内核验,并视情况移除地址、停用抓取规则或采取其他必要措施。请勿在公开 Issue 中提交身份证件、账号密码、Cookie、Token 等敏感信息;需要补充非公开材料时,可先在 Issue 中留下不含敏感信息的联系方式。
本仓库代码以 GNU General Public License v3.0(SPDX 标识 GPL-3.0-only)授权,全文见 LICENSE。Copyright © 2026 Akira Le。
这意味着:
本项目使用的第三方组件及其许可证:
| 组件 | 用途 | 许可证 |
|---|---|---|
| undici · node-fetch | HTTP 请求 | MIT |
| puppeteer | 无界面浏览器,供需要执行网页脚本的抓取模块使用 | Apache-2.0 |
| qrcode | 后台扫码登录二维码 | MIT |
| hls.js · mpegts.js | 网页播放器解码 | Apache-2.0 |
| DPlayer | 网页播放器界面 | MIT |
以上许可证均与 GPL-3.0 兼容。mpegts.js 随仓库一起分发,其许可证文本见 web/vendor/mpegts-LICENSE.txt;其余组件由 npm 或 CDN 引入,许可证随各自软件包提供。
JavaScript
73.9%
HTML
26.0%