akiralereal/iptv

▲ 37 stars today★ 797⑂ 254

开箱即有 800+ 可稳定流畅播放频道的自托管 IPTV 直播源管理与分发系统,聚合了央视频、咪咕、央视、卫视、凤凰卫视、亚太、国际、地方台、体育赛事、B 站直播、斗鱼直播、虎牙直播等,以及自定义抓取源和订阅,并提供 EPG 节目单与聚合功能;另外还自带 GUI 可视化管理后台,支持 Docker Compose 或 Node.js 运行,适合 NAS 与家庭服务器。

About akiralereal/iptv

akiralereal/iptv is an open-source project on GitHub, mainly written in JavaScript. 开箱即有 800+ 可稳定流畅播放频道的自托管 IPTV 直播源管理与分发系统,聚合了央视频、咪咕、央视、卫视、凤凰卫视、亚太、国际、地方台、体育赛事、B 站直播、斗鱼直播、虎牙直播等,以及自定义抓取源和订阅,并提供 EPG 节目单与聚合功能;另外还自带 GUI 可视化管理后台,支持 Docker Compose 或 It currently holds 797 stars and 254 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

Git Homed tracks it on the Today's Trending board, currently at rank #67 with 37 new stars today.

GitHub Repository Details

Repository akiralereal/iptv · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

📺 iPTV

把分散的直播源,变成一套真正属于你的频道系统

自托管 · 模块化 · 可视化 · NAS 友好

GitHub Stars Docker Pulls License Sponsor

🐳 Docker 部署教程 · 前往 Docker Hub →

推荐通过 Docker 在 NAS / 服务器上部署,镜像:akiralereal/iptv:latest

当前版本:v4.15.0 · 产品预览 · 频道覆盖 · 内容来源 · 功能说明 · 更新日志

iPTV 是一个面向家庭影音与 NAS 用户的模块化 IPTV 直播源管理与分发系统。它内置央视频、咪咕、B站、虎牙、斗鱼及多地区广电等抓取模块,也能接入需要网页解析的内置源、维护者筛选的公开独立源、自定义直连地址和 M3U/TXT 订阅;所有来源统一完成聚合、去重、编排,再输出干净的播放列表与 EPG 节目单。

[!IMPORTANT]
本项目是自托管的软件工具。除项目自制的使用公告短片外,不托管第三方音视频节目;仓库及运行时可能整理互联网上公开可访问的播放地址与频道元数据,但“公开可访问”不代表内容属于公有领域,也不代表已获得复制、转播或商业使用授权。请仅在获得合法授权的范围内使用;如你是权利人并认为相关条目侵权,请按版权与侵权处理提交下架通知。

🖼️ 产品预览

我的频道 · 所有频道一处编排

https://github.com/akiralereal/iptv/blob/HEAD/我的频道主面板

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

https://github.com/akiralereal/iptv/blob/HEAD/源管理

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

https://github.com/akiralereal/iptv/blob/HEAD/实况播放效果

✨ 为什么选择 iPTV

| 📺 开箱即用 | 🧩 模块化源管理 | 🪄 可视化编排 | | --- | --- | --- | | 默认聚合 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。平台名称及商标仅用于说明兼容性,本项目不隶属于、也不代表上述平台或内容权利人。
当前版本更新内容

v4.15.0 更新内容

本次为「新增香港、台湾与黑龙江、云南共 19 路直播」版本:黑龙江 7 路、云南 7 路各自成组,香港卫视并入「香港」与凤凰三台并列,大爱一台 / 二台与 GOODTV / GOODTV2 并入「台湾」;五家全部免登录、零配置、默认开启,可在源管理逐家关闭。取流方式正好各不相同——黑龙江地址固定且既不校验来源头也不挑播放器标识,频道直接写直链、本机一个字节的媒体都不转发;云南省级要按「当前这档节目」逐次换取带路径签名的 DVR 窗口,既不能预取也不能写死;香港卫视先问源站当前在播的是哪一路再换入口,并把两跳清单拍平成媒体清单;大爱按来源头防盗链、GOOD TV 卡的是播放器标识,两家的清单与分片统一由本机全代理并补齐所需请求头。升级镜像后重启即生效,现有配置与订阅无需改动。

  • 新增黑龙江、云南两省官方直播:黑龙江 7 路归入「黑龙江」,云南 7 路归入「云南」,均免登录、零配置、默认开启,可在源管理单独关闭。两者取流方式正好是两个极端。黑龙江是本项目里少见的「什么都不需要」的源:极光新闻 App 在用的官方入口地址固定、不带签名,清单和分片既不校验来源头也不挑播放器标识(ffmpeg、okhttp 都是 200),所以频道直接写直链、由播放器直连官方 CDN,本机一个字节的媒体都不转发;要留意的只有端口,官方业务域名走的是 4430 而不是 443。云南则要同时接两条链路:省级四路走云视网,官网接口返回的不是一条固定直播地址,而是「当前这档节目」的 DVR 窗口加一对按路径签发的签名——拿本轮签名去请求下一档节目的路径直接 403,既不能预取也不能写死,只能每次播放请求前重新换取;节目换档后下一次解析自然拿到新窗口,实测跨档时分片序号从 141184+604 接到 141794、单调递增不回退,播放器按普通直播清单推进即可(官网播放器自己反倒不换台,它的换档代码是注释掉的,一档放完就停)。地方三路走七彩云端目录,按房间名取当前在线机位;目录里另外 14 个地方台名字当前全部复用同一条 HLS,因此不作为独立频道收录。两家回源要求也不同:省级 CDN 缺了官网来源头不是回 403 而是把连接晾着(实测五次全部连接超时),地方那条裸请求就能取,所以请求头按目标主机分别下发,不把一家的凭据漏给另一家。实测黑龙江 7 路与云南省级 4 路均为 1280×720、H.264 / AAC-LC(黑龙江 25 帧、云南省级 25 帧),云南地方三路分别是 720p25、1080p50 和 720×416。台标方面公共台标库已收黑龙江 7 路与云南省级 4 路,按台名自动匹配;地方三路库里没有,改用七彩云端下发的官方频道卡
  • 新增大爱电视与 GOOD TV 官网直播,归入「台湾」分组:大爱一台、大爱二台与 GOODTV、GOODTV2 共四路台湾公开电视直播纳入「台湾」分组,与精选列表里的公视 / 民视 / 华视 / 台视等并列,免登录、零配置、默认开启,各自可在源管理单独关闭。四条地址都是官网写死的固定 HLS、不带签名,所以模块不做任何额外请求,播放时直接给地址;真正的门在回源那一侧,两家各不相同:大爱按 Referer 防盗链,清单和 .ts 分片缺了请求头都是 403;GOOD TV 不看 Referer,卡的是 CloudFront 的播放器标识白名单,浏览器 / VLC / ExoPlayer 能过,ffmpeg 的 Lavf 和 okhttp 一律 403。播放器发什么请求头不由本项目决定,因此两家的清单与媒体分片都由本机全代理回源并补齐所需请求头,回源地址另有白名单,只允许落在各自官方的直播目录内。实测四路均为 1280×720、H.264 / AAC-LC 立体声(大爱 30 帧、约 3 Mbps,GOOD TV 29.97 帧)。台标由公共台标库按台名自动匹配。节目单本轮没有:默认 EPG 源里一条台湾频道都没有,精选列表里原有的公视 / 民视等同样如此;大爱官网自己有逐日节目表接口,但抓取模块的 EPG 槽位目前还没有接进节目单流水线,故未一并接入
  • 新增香港卫视官网直播,归入「香港」分组:香港卫视一路电视直播纳入「香港」分组,与凤凰三台并列,免登录、零配置、默认开启。官网入口不是固定地址——先问官网当前在播的是哪一路,再向播放器接口换这一路的 HLS;入口在本机短期缓存,官网换台导致旧地址失效时立即重取,接口短时故障则沿用最近一次成功入口并退避重试。官网给的入口是一层 master,真正的分片列表在它下面带 hls_ctx 的子清单里,服务端取回时就拍平成媒体清单再下发,播放器少一跳、也不必理解跨主机的绝对地址;服务端只中继这份小清单,媒体分片由播放器直连上游 CDN,需要时也可用 ?relay=2 全代理。实测为 1280×720、H.264 High / AAC、约 3 Mbps,节目单由默认 EPG 源直接覆盖、无需额外配置。上游 CDN 会按 IP 拒绝一部分来源(实测机房 IP 与个别移动线路回 403,电信家宽与境外正常),服务端中继取不到清单时按既有逻辑回退 302,由播放器自己直连
  • 文档:README 正文(频道覆盖、内容来源、数据流向图、常见问题、配置与进阶)收敛了「官方直播 / 官方 CDN / 官网接口」一类措辞——回源那一侧统一称「源站 / 上游 CDN」,用户实际访问或登录的一侧称「站点 / 网页端」。仅措辞调整,功能、配置与订阅地址均未变动
完整更新历史见下方 更新日志

📑 目录

---

🚀 快速开始

推荐使用 Docker Compose。只需要一个配置文件和一条启动命令,几分钟即可拥有自己的 IPTV 服务。

Docker 镜像:akiralereal/iptv · 查看版本标签。下面使用 latest 标签;使用 NAS 图形化容器管理器时,也可直接搜索 akiralereal/iptv,按下方配置设置端口和数据目录。

1. 创建配置文件

创建 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

2. 启动服务

docker compose up -d

升级时执行:

docker compose pull && docker compose up -d

3. 打开管理后台

部署完即可访问:

| 用途 | 地址 | | --- | --- | | 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 网页端可以选“超清”,为什么这里只有 720p?登录能解锁 1080p 吗?

iPanda 网页播放器的清晰度名称与实际分辨率依次是:流畅 640×360、标清 854×480、高清 1024×576、超清 1280×720。播放器把 1080p 另称为“蓝光”,但当前 22 路 HLS 均未提供该档;逐路检查最高档视频编码也都是实际 1280×720,不是清单虚标。

这些频道的匿名接口已经返回公开可播状态,页面没有启用 VIP 清晰度限制。登录不会为当前 iPanda 直播解锁 1080p;主项目检测到的最高档 720p 正好就是播放器菜单中的“超清”。两个 24 小时总频道提供上述四档,其余 20 路为单档 720p。

北京台为什么只看到慢直播?怎样启用 9 个电视频道?

北京时间的公开活动和慢直播不需要登录,会自动出现;北京卫视、BRTV 各地面频道与卡酷少儿需要本人站点登录态。进入「🌐 源管理 → 北京广播电视台」,按卡片里的入口打开站点并登录;在浏览器开发者工具的 Network(网络)里刷新页面,点开 getUserInfo 请求,在 Request Headers 中单击 Cookie 的值后按 ⌘C(Windows/Linux 按 Ctrl+C),粘贴回后台保存即可,不需要鼠标右键。也可以用 mBtimeCookie 环境变量配置。

模块会先验证 Cookie:有效时加入 9 个电视台,失效时只隐藏电视台并给出提示,免登录直播继续可用。凭据只发给北京时间账号 / 取流接口,不会写进订阅或发送给媒体 CDN。北京时间媒体要求源站防盗链请求头,因此该模块固定由服务端代理 HLS;本地 macOS 会自动沿用系统 HTTPS 代理,Docker / Linux 可按需设置标准 HTTPS_PROXY 环境变量。

凤凰卫视怎样开启 720p?需要付费会员吗?

进入「🌐 源管理 → 凤凰卫视」,导入本人凤凰秀账号的 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 却导入不到?


部分 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 打开后台,进入「🌐 源管理 → 央视频」,点击卡片里的央视频登录按钮,在弹出的窗口完成本人账号登录即可。
  • Docker / NAS 等没有桌面的部署:在自己电脑的浏览器登录央视频网站,按 F12(Mac 按 ⌥⌘I)打开开发者工具切到 Network,刷新页面,点开任意一个 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 全时段不提供),做出来体验也是时好时坏。

服务卡死、硬盘不停读写,日志里反复出现「开始提取」「Navigation timeout」「浏览器会话已启动」?


这是多个无头 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 | 公网/自定义访问地址
格式 | | mpass | | string | 访问密码 大小写字母和数字
添加后访问格式 ... | | 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 不可用,属预期表现。

📡 公网地址 (mhost)

反向代理 / 域名访问 / 对外分享时填写(如 http://yourdomain.com:1905),仅内网使用留空即可。系统自动按访问来源选择播放列表里的地址:内网访问用内网地址,反代访问(带 X-Forwarded-For)用配置的公网地址;填 http(s):// 完整地址时不会强制补端口。

🔐 访问密码 (mpass)

设置后所有服务都要在 URL 带密码路径:http://ip:port/密码/interface.m3uhttp://ip:port/密码/admin 等,播放列表内的频道链接自动注入密码路径,未授权访问返回 403。

🔧 本地运行(不用 Docker)

需要 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)。

---

更新日志

v4.15.0 (2026-09-13)

本次为「新增香港、台湾与黑龙江、云南共 19 路直播」版本:黑龙江 7 路、云南 7 路各自成组,香港卫视并入「香港」与凤凰三台并列,大爱一台 / 二台与 GOODTV / GOODTV2 并入「台湾」;五家全部免登录、零配置、默认开启,可在源管理逐家关闭。取流方式正好各不相同——黑龙江地址固定且既不校验来源头也不挑播放器标识,频道直接写直链、本机一个字节的媒体都不转发;云南省级要按「当前这档节目」逐次换取带

GitHub Stars & Activity

797Stars
254Forks
0Open issues
JavaScriptLanguage

GitHub Popularity

GitHub stars797
Forks254
Open issues0
Primary languageJavaScript
License-
Stars gained today37
Created-
Last pushed-

Trending History

Daily boardrank #67 · ▲ 37 stars

Related GitHub Projects

1

affaan-m / ECC

JavaScript★ 263,382⑂ 39,412▲ 1,012 stars
2

addyosmani / agent-skills

JavaScript★ 97,467⑂ 10,279▲ 729 stars
3

byoungd / up

JavaScript★ 63,347⑂ 6,411▲ 148 stars
4

cloudflare / security-audit-skill

JavaScript★ 17,579⑂ 976▲ 2,375 stars
5

mnfst / awesome-free-llm-apis

JavaScript★ 7,910⑂ 755▲ 138 stars
6

BuilderIO / skills

JavaScript★ 4,332⑂ 215▲ 22 stars
7

WorldFlowAI / everything-claude-code

JavaScript★ 3,343⑂ 520▲ 99 stars
8

ossu / computer-science

HTML★ 209,209⑂ 25,882▲ 62 stars

More Trending Repositories