【教程】IPTV 接入 Jellyfin 三种方案对比,新手别再走弯路
群晖 NAS + Jellyfin 直播电视接入,从昨晚踩坑到现在的全部总结。 先看这篇选对方向,再去看具体操作。
三条路线的核心区别
在群晖 NAS 上把 IPTV 接入 Jellyfin,主要有三条路。最关键的区别是:谁来拉取直播流——这直接决定了稳不稳定、好不好排查。
| 方案 | 原理 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 直接 M3U | Jellyfin 读 M3U 里的原始流地址,播放器直连源 | 零 Docker 部署,无中间代理,不会被容器 UA 拦截,操作最简单 | 不能自定义台号,不能按分组筛选频道 | 快速测试,不想折腾 Docker |
| xTeVe | 模拟 HDHomeRun 调谐器,容器作为中间代理拉流再转发 | Jellyfin 识别为 HDHR,可自定义台号、频道分组,内置 EPG 映射 | 容器网络/UA 容易被源 403,容器挂了全部频道失效 | 需要自定义频道编号,愿意处理网络问题 |
| Guovin IPTV-API | 容器只负责抓取、测速、过滤 M3U 源,输出 M3U 接口;不转发视频流 | 定时自动抓取、剔除失效源,输出纯净 M3U,播放器直连源 | 无 HDHR 模拟,只能 M3U 接入,Docker Hub 拉镜像易超时 | 需要自动维护源列表 |
一句话看懂本质
- xTeVe:播放器 → xTeVe 容器 → 源流(容器去拉流,容易被拦截)
- Guovin IPTV-API:播放器 → 直接访问源流(容器只整理链接,不碰流传输)
这就是为什么 xTeVe 经常 VLC 打不开流,而裸 M3U 就能播——因为请求头、网络环境不一样,源服务器直接把容器的请求拒了。
推荐优先级
- 第一步:先测试 M3U 直连 — 零 Docker,直接验证源能不能播。源都播不了,折腾容器没用。
- 第二步:需要台号再上 xTeVe — 确认源流可用后,如果非要自定义频道编号、分类,再搞 xTeVe,并处理容器网络问题。
- 第三步:需要自动更新选 Guovin — 希望源列表自动定期抓取、测速清理的,再部署 Guovin。注意群晖拉镜像大概率要配国内加速源。
建议
如果你只是想在 Jellyfin 里看电视,直接 M3U 直连是最优解,别碰 xTeVe 这个坑。 xTeVe 2.2.0 的 bug 太多,M3U 输出、lineup.json、制图页面保存,每一步都能卡你半天,最后还可能因为容器 UA 被源 403 全部白搭。