没办 IPTV 也能看电视?自建 iPTV 私有直播源:800+ 频道,电视盒子随便看

上一篇讲 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 一条命令(官方推荐)

准备工作

  1. 一台能跑 Docker 的设备:Windows 装 Docker Desktop、群晖 NAS 的 Container Manager、Linux 服务器都行。不需要 IPTV 业务,不需要软路由。
  2. 内存注意:部分抓取模块会在后台起无头 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
docker run 一行命令拉取镜像并启动 iPTV
一行命令启动实拍:镜像正在拉取,全部 Pull complete 后容器即运行。注意 -v $(pwd)/data:/iptv/data 数据目录不能漏,否则升级会丢配置。(图片来源:cpolar 配套教程)

第 3 步:打开管理后台

浏览器访问 http://设备局域网IP:1905/admin(本机就是 http://127.0.0.1:1905/admin)。默认没有密码,局域网内直接进——所以如果你打算公网暴露,务必先在 compose 里把 mpass 设上。

浏览器打开 1905 端口 admin 进入 iPTV 管理台
浏览器打开 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

记住顺序:标准版 → 兼容版 → 全代理版,能用前面的就别用后面的,全代理最吃你的上行带宽。

iPTV 我的频道:分组、订阅地址、EPG
「我的频道」页实拍:左侧频道分组,红框处是给播放器用的订阅地址(标准版/兼容版/全代理版)和 EPG 地址,点复制即可。(图片来源:iPTV 官方 GitHub 文档,红框为本文标注)
iPTV 源管理:抓取模块独立开关
「源管理」页实拍:每个抓取模块独立开关,红框处可按”免账号/网络直播平台/海外”筛选;模块健康状态一目了然,挂了的直接关掉,不影响其他频道。(图片来源:iPTV 官方 GitHub 文档,红框为本文标注)

五、电视 / 手机 / 电脑端接入

把上面复制的订阅地址填进播放器就行:

  • 电视 / 电视盒子:TVBOX(视频里用的就是这个),把 /interface.m3u 地址填进去,全屋电视都能看,还可以给每台电视配不同的配置档。
  • 手机:TiviMate、APTV 等,填标准 M3U 地址。
  • 电脑:PotPlayer 直接打开 M3U 链接就能播。
PotPlayer 打开链接对话框粘贴 M3U 订阅地址
电脑端以 PotPlayer 为例:”打开链接”对话框里粘贴后台复制的 /interface.m3u 地址,确定即播。电视/盒子端在 TVBOX 里填同样的订阅地址。(图片来源:cpolar 配套教程)

六、公网访问:内网穿透(视频里的方法)

iPTV 原生只考虑局域网。视频演示的是用 cpolar 内网穿透把本机的 1905 端口映射出去:本地 9200 端口进 cpolar 的 WebUI 建一条隧道(本地地址填 1905),再去 cpolar 官网预留一个二级子域名,把这个公网地址填进iPTV 后台的公网地址设置里,播放器改填公网订阅链接即可。

⚠️ 一个坑要提前说:cpolar 免费版的隧道域名每 24 小时变更一次,域名一变,你的 M3U 订阅链接就失效,电视端得重新填。长期稳定用的话,要么升级套餐保留固定二级子域名,要么改用有公网 IP 的方案(端口映射/DDNS)。

iPTV 设置页填入 cpolar 公网地址并保存
最后一步:在「设置 → 系统配置」的”公网地址”栏填入 cpolar 分配的公网域名,点”保存系统配置”,播放器改填公网订阅链接即可在外网看。(图片来源:cpolar 配套教程)

七、常见问题排查

症状先查什么
某几个频道突然黑屏/转圈大概率是对应平台改了接口。去「源管理」看该模块的健康状态;可以先关掉该模块,等项目更新(这类修复通常不用升级镜像,远程配置会自动下发)
有声音没画面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 配套教程(已逐张验看内容,官方两张的关键位置由本文加红框标注),图片来源均在图注中标明;发布时将上传至本站媒体库并替换图片地址。

发表评论