上一篇讲 rtp2httpd 时,我在开头就划了一条硬线:家里必须先办了运营商的 IPTV 业务,它才有信号可转。评论区肯定有人要问:我家没办 IPTV,是不是就没戏了?这篇就是答案——换一条路线,用开源项目 iPTV 自建私有直播源,不需要 IPTV 业务,有台能跑 Docker 的设备就行。
内容整理自 cpolar内网穿透 频道 2026-09-30 的视频《M3U源频繁失效?自建IPTV私有直播源,电视盒子随便看》(7 分钟),所有部署命令、参数、订阅地址格式我都对照 iPTV 官方 GitHub 仓库(https://github.com/akiralereal/iptv,GPL-3.0,当前 v4.36.0)于 2026-10-16 逐条核验过。
一、iPTV 是什么:不是一份 M3U,而是一座”频道工厂”
很多人折腾 IPTV 的路径是:网上找 M3U 订阅链接 → 填进播放器 → 过几天黑屏失效 → 再找新的,无限循环。iPTV 解决的是这个痛点:它不是一份静态的 M3U 文件,而是一套跑在你自己设备上的直播源管理系统——内置几十个抓取模块,主动从各公开平台(央视频、咪咕、B 站、抖音、虎牙、斗鱼、各地方广电官网等)抓取当前可用的直播地址,聚合、去重、编排后,生成专属于你的 M3U / TXT 订阅和 EPG 节目单。
开箱默认聚合 800+ 频道:央视全套、CGTN 多语种、各省级卫视、iPanda 熊猫直播、城市慢直播、体育赛事、国际频道,外加 B 站/虎牙/斗鱼/抖音的直播间。多数高清/超清,部分 4K。模块化设计的好处是:某个平台接口变了,只影响对应模块的频道,不会整套源一起崩。
二、先看对比:它和上一篇 rtp2httpd 的本质区别
这是两条完全不同的技术路线,选哪条取决于你家的情况:
| rtp2httpd(上一篇) | iPTV(本篇) | |
|---|---|---|
| 信号从哪来 | 你家运营商 IPTV 的组播信号 | 各公开平台的直播源(抓取聚合) |
| 要不要办 IPTV | 必须,没办就没信号可转 | 不需要,有网就行 |
| 部署在哪 | 软路由(必须能进 IPTV 内网) | 任何能跑 Docker 的设备(NAS、电脑、服务器) |
| 频道数量 | 取决于你的 IPTV 套餐 | 开箱 800+,持续扩展 |
| 换台速度 | FCC 协议毫秒级(需配 FCC 服务器) | 普通水平,无 FCC |
| 回看 | 支持 RTSP 时移回看 | 央视频模块只做直播(可切同名咪咕线路回看) |
| EPG 节目单 | 需自己配 | 自带聚合,500+ 主流频道 |
| 稳定性 | 取决于自家网络,源头是运营商 | 取决于各平台接口,模块化隔离故障 |
| 公网看 | 端口映射 + 鉴权 | 内网穿透(如 cpolar) |
一句话总结:有 IPTV 业务、追求原画质和秒换台,走 rtp2httpd;没 IPTV、想要开箱即用的海量频道,走 iPTV。两者不冲突,也可以同时跑。
三、部署:Docker Compose 一条命令(官方推荐)
准备工作
- 一台能跑 Docker 的设备:Windows 装 Docker Desktop、群晖 NAS 的 Container Manager、Linux 服务器都行。不需要 IPTV 业务,不需要软路由。
- 内存注意:部分抓取模块会在后台起无头 Chromium(每个约 200~400MB),内存 ≤2G 的小 NAS 如果卡死,多半是这个原因,后面排查章节有解法。
第 1 步:写 docker-compose.yml
在设备上新建一个目录(比如 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://你的域名:1905
# - mpass= # 可选:访问密码,设置后地址变成 http://ip:1905/密码/...
volumes:
- ./data:/iptv/data # 数据持久化!不挂载的话,重建容器/升级镜像会丢配置
restart: always
注意两点:① 镜像 akiralereal/iptv 是在 Docker Hub 上的(和上一篇 rtp2httpd 的 ghcr.io 不一样,这个不用加前缀);② ./data 挂载一定要保留,你的频道编排、屏蔽规则、登录态全存在里面。
第 2 步:启动
# 在 docker-compose.yml 所在目录执行
docker compose up -d
# 看一眼日志,确认没报错
docker logs iptv --tail 30
以后升级就两行:
docker compose pull && docker compose up -d
不想写 compose 文件,也可以一行命令直接启动(效果一样,下面的命令来自 cpolar 教程的实测):
docker run -d --name=iptv --restart=unless-stopped --init \
-p 1905:1905 -v $(pwd)/data:/iptv/data -e mport=1905 \
akiralereal/iptv:latest
-v $(pwd)/data:/iptv/data 数据目录不能漏,否则升级会丢配置。(图片来源:cpolar 配套教程)第 3 步:打开管理后台
浏览器访问 http://设备局域网IP:1905/admin(本机就是 http://127.0.0.1:1905/admin)。默认没有密码,局域网内直接进——所以如果你打算公网暴露,务必先在 compose 里把 mpass 设上。
http://设备IP:1905/admin 即进入管理台:顶部是四个功能页,中间直接给出订阅地址和节目单 EPG 地址。(图片来源:cpolar 配套教程)四、后台 tour:四个页面管完所有事
| 页面 | 能干什么 |
|---|---|
| 📺 我的频道 | 分组、排序、重命名、隐藏频道;建多套配置档(比如给老人电视单独配一档少儿频道);复制订阅地址 |
| 🌐 源管理 | 每个抓取模块独立开关、看健康状态;登录各平台账号(央视频会员、凤凰卫视等,扫码或导 Cookie);添加自己的 M3U/TXT 订阅或直链 |
| ⚙️ 设置 | EPG 聚合、用户令牌、异常提醒(支持推到企业微信/飞书/钉钉/Telegram/Bark)、一键备份迁移 |
| ℹ️ 关于 | 看版本、检查更新 |
你要的订阅地址都在「我的频道」里复制,格式是官方定的:
# 标准 M3U(TiviMate / APTV / Kodi / OK影视用这个)
http://你的IP:1905/interface.m3u
# TXT 订阅(DIYP / 百川影音用这个)
http://你的IP:1905/txt
# EPG 电子节目单
http://你的IP:1905/playback.xml
# 老盒子播不了?换兼容版(服务器直出清单,视频仍走 CDN,不占你带宽)
http://你的IP:1905/interface.m3u?relay=1
# 兼容版还不行?换全代理版(视频也经服务器转发,占带宽,兜底用)
http://你的IP:1905/interface.m3u?relay=2
记住顺序:标准版 → 兼容版 → 全代理版,能用前面的就别用后面的,全代理最吃你的上行带宽。
五、电视 / 手机 / 电脑端接入
把上面复制的订阅地址填进播放器就行:
- 电视 / 电视盒子:TVBOX(视频里用的就是这个),把
/interface.m3u地址填进去,全屋电视都能看,还可以给每台电视配不同的配置档。 - 手机:TiviMate、APTV 等,填标准 M3U 地址。
- 电脑:PotPlayer 直接打开 M3U 链接就能播。
/interface.m3u 地址,确定即播。电视/盒子端在 TVBOX 里填同样的订阅地址。(图片来源:cpolar 配套教程)六、公网访问:内网穿透(视频里的方法)
iPTV 原生只考虑局域网。视频演示的是用 cpolar 内网穿透把本机的 1905 端口映射出去:本地 9200 端口进 cpolar 的 WebUI 建一条隧道(本地地址填 1905),再去 cpolar 官网预留一个二级子域名,把这个公网地址填进iPTV 后台的公网地址设置里,播放器改填公网订阅链接即可。
⚠️ 一个坑要提前说:cpolar 免费版的隧道域名每 24 小时变更一次,域名一变,你的 M3U 订阅链接就失效,电视端得重新填。长期稳定用的话,要么升级套餐保留固定二级子域名,要么改用有公网 IP 的方案(端口映射/DDNS)。
七、常见问题排查
| 症状 | 先查什么 |
|---|---|
| 某几个频道突然黑屏/转圈 | 大概率是对应平台改了接口。去「源管理」看该模块的健康状态;可以先关掉该模块,等项目更新(这类修复通常不用升级镜像,远程配置会自动下发) |
| 有声音没画面 | H.265(HEVC)兼容性问题。去「源管理」→ 对应模块配置 → 取消「启用 H.265 原画」,保存重播 |
| 隐藏的频道过几天又冒出来 | 「隐藏」绑的是频道 ID,源换地址就失效。想永久干掉,用频道旁的「屏蔽」按钮或「屏蔽规则」按名字配——规则只看名字,源怎么换都生效 |
| 小内存 NAS 卡死、硬盘狂转 | 多个无头 Chromium 把内存吃满了。compose 里加 mbrowserConcurrency=1 限制并发,或直接在「源管理」关掉用不上的网页抓取类模块 |
| 升级后配置丢了 | ./data:/iptv/data 没挂载。补上挂载再重建;以后迁移/备份直接拷 ./data 目录,或用后台「设置 → 备份迁移」一键导出 |
| 播放器不跟随跳转、一直转圈 | 换「兼容版」订阅地址(?relay=1),由服务器直出播放清单 |
八、总结与提醒
整套链路:有 Docker 的设备 → docker compose up -d → 浏览器进 :1905/admin → 复制订阅地址填进 TVBOX/TiviMate →(可选)cpolar 穿透出公网。全程不需要 IPTV 业务、不需要软路由、不需要抓包,真正的开箱即用。
最后两条线,一条技术一条合规:技术上,iPTV 的频道来自各平台公开源,”公开可访问”不等于稳定不死,模块化只是让故障隔离,源头挂了谁都没办法;合规上,项目官方明确这是自托管工具、不托管任何第三方节目,仓库整理的是公开可访问的播放地址——仅限个人学习测试使用,不要商用、不要对外大规模分发,使用时遵守当地法律法规。
内容来源与核验说明:本文框架整理自 cpolar内网穿透 频道 2026-09-30 视频《M3U源频繁失效?自建IPTV私有直播源,电视盒子随便看》(该视频无字幕轨道,视频细节依据其官网配套文字教程摘要),全部命令、参数、订阅地址格式对照 iPTV 官方 GitHub 仓库 README(v4.36.0)于 2026-10-16 逐条核验。结论分级:✅ 已确认——项目身份(akiralereal/iptv,GPL-3.0)、Docker Hub 镜像名、compose 配置(1905 端口、./data 持久化、mport/mhost/mpass 环境变量)、订阅地址与 relay 参数、播放器适配关系、H.265 排查方法;⚠️ 需读者自行验证——800+ 频道的实际可用数量、各模块在你网络下的可用性(随平台接口动态变化);❓ 未验证——视频中 TVBOX / PotPlayer / cpolar 的具体点击步骤(视频无字幕,来自官网文字教程的二手摘要)。文中 6 张配图借用自 iPTV 官方 GitHub 文档与 cpolar 配套教程(已逐张验看内容,官方两张的关键位置由本文加红框标注),图片来源均在图注中标明;发布时将上传至本站媒体库并替换图片地址。