用 snowie2000/livetv 在飞牛 NAS 搭建 YouTube 直播聚合系统
之前我们聊过用 akiralereal/iptv 替代肥羊的方案。但它有个明显的短板——不支持 YouTube 直播。今天要介绍的 snowie2000/livetv 正好补上了这块拼图:它不仅能聚合国内主流直播源,还内置了 YouTube 直播解析,并且官方镜像已经打包好了 yt-dlp 和 JS 运行时,开箱即用。
一、为什么选 snowie2000/livetv?
肥羊 AllInOne 停更后,大家的痛点集中在两处:一是国内源逐渐失效,二是完全没有 YouTube 直播能力。snowie2000/livetv(Docker 镜像名为 flyingsnow2000/livetv)定位就是“把 IPTV 源和 YouTube 直播聚合到一个站点里”。
它和肥羊的核心区别在于:
| 能力 | 肥羊 AllInOne | snowie2000/livetv |
|---|---|---|
| 国内直播源聚合 | ✅ | ✅ |
| YouTube 直播解析 | ❌ | ✅(内置 yt-dlp) |
| JS 运行时依赖 | 不涉及 | 镜像已内置,无需手动装 Deno |
| 播放列表输出 | M3U | M3U,支持 Token 保护 |
最关键的一点:官方镜像已经把 Python 3.13、最新版 yt-dlp 和 bgutil-ytdlp-pot-provider 全部打包进去了。这意味着你不需要像自己搭建服务那样,去操心“yt-dlp 需要 JS 运行时”这个烦人的问题。
二、飞牛 NAS 部署
前提检查
你的飞牛 NAS 需要满足:Docker 已启用,建议通过 SSH 操作(因为飞牛 Docker 界面的 Compose 功能对镜像名中的 : 和复杂端口映射支持有限,SSH 更稳)。
第 1 步:开启 SSH 并登录
进入飞牛 OS,到 【设置】-【SSH】 中打开 SSH 功能。
在电脑终端(Windows 用 CMD 或 PowerShell)输入:
ssh 你的飞牛用户名@飞牛IP
输入密码登录后,执行 sudo -i 切换到 root 权限。
第 2 步:创建数据目录
mkdir -p /vol1/1000/docker/livetv/data
cd /vol1/1000/docker/livetv
路径请根据你飞牛的实际存储空间调整,
/vol1/1000/是常见的默认路径。
第 3 步:启动容器
直接使用官方给出的 Docker Run 命令,只需调整端口和挂载路径:
docker run -d \
--name livetv \
--restart always \
-p 9000:9000 \
-v /vol1/1000/docker/livetv/data:/opt/livetv/data \
flyingsnow2000/livetv:latest
端口说明:容器内部监听 9000,映射到飞牛的 9000 即可。如果 9000 被占用,把左边的 9000 改成其他端口(如 19000)。
第 4 步:验证启动
docker ps | grep livetv
看到容器状态为 Up 即成功。
三、初始配置(关键步骤)
访问管理界面
浏览器打开:
http://飞牛IP:9000
默认密码是 password。第一次登录后请立即在设置中修改。
配置外部访问地址(必做)
项目作者特别强调:首次使用需要点击界面上的齿轮按钮,在设置区域点击 “Auto Fill”,让它自动填入正确的访问 URL,然后点击 Ok 保存。
这一步不能跳过。如果不设置,后续生成的 M3U8 播放地址会指向 127.0.0.1,你的播放器(手机、电视、电脑上的)根本连不上。
添加 YouTube 直播频道
进入管理界面后:
- 点击 Add Channel
- Channel Name:随便填,比如“测试新闻”
- Live URL:粘贴 YouTube 直播地址。推荐用频道的
/live链接,例如:
这样每次解析都会自动指向该频道当前正在进行的直播。https://www.youtube.com/@频道handle/live - Parser:选择
yt-dlp - 其他字段保持默认,点击 OK 保存
保存后,列表中的 M3U8 列会生成一个可播放的地址。如果出现红色叉号,说明解析失败了,先检查 URL 格式和网络连通性。
四、关于 YouTube 解析的常见问题
你之前遇到的“红色叉号”解析失败,根源在于 yt-dlp 现在需要外部 JavaScript 运行时才能完整支持 YouTube。
yt-dlp 官方在 2025 年 11 月正式宣布:没有 JS 运行时,YouTube 支持将逐渐不可用。原因是 YouTube 的反爬机制需要执行复杂的 JS 挑战脚本,纯 Python 解释器已经无法胜任。
snowie2000/livetv 的官方镜像已经内置了所需的运行时,所以你不需要自己折腾 Deno 或 Node.js。如果你仍然遇到解析失败,优先检查:
- 飞牛 NAS 的网络能否访问 YouTube(这是最常见的根源,NAS 如果没走代理,解析一定失败)
- 频道是否正在直播(非直播时段,yt-dlp 无法解析出直播流)
- 镜像版本是否过旧,执行
docker pull flyingsnow2000/livetv:latest更新后重启容器
五、总结
snowie2000/livetv 是目前少数能把国内 IPTV 聚合和 YouTube 直播放在同一个系统里处理的开源方案。它的官方镜像省去了 JS 运行时的配置麻烦,对飞牛 NAS 用户来说,部署成本主要就是一条 Docker Run 命令。
部署完成后,你可以在播放器中添加 http://飞牛IP:9000/playlist.m3u?token=你的令牌 来获取包含所有频道的完整播放列表。Token 会在你设置密码后自动生成,用来保护你的播放地址不被外部随意访问。

💬 评论区 0