Sign inSign up

wuenci514/ysp-live

By wuenci514

•Updated 4 days ago

央视频直播 Docker 版 · 多版本管理

Image
API management
Web servers
Content management system
0

835

wuenci514/ysp-live repository overview

⁠央视频直播 Docker 版 · 多版本管理

v3.0 ~ v9.0 外加 4 个 -G 版本(v7.4-G / v8.0-G / v8.1-G / v9.0-G),共 14 个版本, 全部构建为独立镜像,一次只跑一个,统一占用 8767 端口。

⁠🆕 最新版 = v9.0-G

latest 标签恒定指向 v9.0-G,三处已对齐:

位置标签指向
Docker Hubwuenci514/ysp-live:latest✅ v9.0-G
本地 Docker Desktopysp-live:latest✅ v9.0-G
切换脚本bash ysp-switch.sh latest✅ v9.0-G

v9.0-G = 64 路(央视 30 + 卫视 34),/all.m3u。切换最新版只需:

bash ysp-switch.sh latest      # 等价于 bash ysp-switch.sh v9.0-G
docker pull wuenci514/ysp-live:latest

以后若要改「最新版」,只改 ysp-switch.sh 顶部的 LATEST_VERSION="v9.0-G" 一行即可, list 的 ★标记、latest 命令、push 时的 latest 打标签会全部跟着走。


最后更新:2026-10-07 · Docker Desktop 29.8.2 · Compose v5.5.1

本文件中的频道数、订阅路径均为本机逐一启动容器实测结果,非照抄官方 README。


⁠⚠️ 选版本前必读

v7.4 之后卫视频道全没了 —— -G 系列把它们全部加回来了。

  • v5.1 ~ v8.0:64 路(央视 + CGTN + 31/32 家省市卫视 + 剧场)
  • v7.4 / v8.1 / v9.0:30 路(央视FHD 21 + 央视UHD 3 + CGTN 6),❌ 无卫视
  • 4 个 -G 版本:全部 64 路,✅ 卫视齐全

-G 后缀 = 该版本的「卫视完整版」补丁:内核不变,但频道表恢复成全量 64 路。

你的需求用这个版本
频道最全 + 画质最好 + 防风控(首选)v9.0-G(64 路,v9.0 引擎 + 卫视全量回归)
v8.x 系列要卫视v8.1-G(64 路,双引擎)或 v8.0-G(64 路,仅 83MB)
v7.4 要卫视v7.4-G(64 路:卫视32 + 央视28 + 数字4)
只要体积小v8.0 / v8.0-G(alpine,仅 83MB)
只要央视、不要卫视v9.0(真4K预热、双设备热备池、四层兜底自愈)

v9.0-G 是目前的推荐版本:它用的是 v9.0 的内核(/health 里 version 显示 9.0.0,双引擎、设备热备池都在),但订阅路径是 /all.m3u,频道表恢复成 央视 30 + 卫视 34 = 64 路,等于把 v9.0 的画质稳定性和 v8.0 的频道齐全兼得了。

三个 -G 版本的分组口径略有差异:v7.4-G 是「卫视 32 + 央视 28 + 数字 4」, v8.0-G / v8.1-G / v9.0-G 是「卫视 34 + 央视 30」,总数都是 64。


⁠版本对照表(实测)

版本订阅路径频道数本地镜像大小基础镜像
v3.0/all.m3u63ysp-live:v3.0184 MBpython:3.12-slim
v5.1/all.m3u64ysp-live:v5.1187 MBpython:3.11-slim
v6.2/all.m3u64ysp-live:v6.2187 MBpython:3.11-slim
v7.0/all.m3u64ysp-live:v7.0187 MBpython:3.11-slim
v7.2/all.m3u64ysp-live:v7.2187 MBpython:3.11-slim
v7.3/all.m3u64ysp-live:v7.3187 MBpython:3.11-slim
v7.4/cctv.m3u30 ❗无卫视ysp-live:v7.4187 MBpython:3.11-slim
v8.0/all.m3u64ysp-live:v8.083.4 MBpython:3.12-alpine
v8.1/cctv.m3u30 ❗无卫视ysp-live:v8.1181 MBpython:3.12-alpine
v9.0/cctv.m3u30 ❗无卫视ysp-live:v9.0181 MBpython:3.12-alpine
v7.4-G/all.m3u64(卫视32+央视28+数字4)ysp-live:v7.4-G187 MBpython:3.11-slim
v8.0-G/all.m3u64(卫视34+央视30)ysp-live:v8.0-G83.4 MBpython:3.12-alpine
v8.1-G/all.m3u64(卫视34+央视30)ysp-live:v8.1-G181 MBpython:3.12-alpine
v9.0-G ⭐/all.m3u64(卫视34+央视30)ysp-live:v9.0-G181 MBpython:3.12-alpine
⁠三个容易踩的坑
  1. 订阅路径改过:v3.0 ~ v8.0 和 v9.0-G 用 /all.m3u;v7.4 / v8.1 / v9.0 改成 /cctv.m3u。在 v9.0 上访问 /all.m3u 返回 404。
  2. v8.1 有 bug:它的启动日志和 /health 里写的是 /all.m3u,但代码真正处理的是 /cctv.m3u,两者不一致。以 /cctv.m3u 为准。
  3. v9.0-G 的目录是双层:ysp-live-docker-v9.0-G/ysp-live-docker-v9.0-G/(和 v8.0 一样套了两层同名目录),别只进一层就执行 docker compose up。

✅ v7.4-G v8.0-G v8.1-G 已全部构建完成并实测:均为 /all.m3u + 64 路(卫视齐全)。


⁠为什么不能 14 个一起跑

14 个版本原本的 docker-compose.yml 里 container_name 全部写死为 ysp-live,宿主端口也全部是 8767:8767:

  • 端口冲突:8767 只能被一个进程独占,第二个必报 port is already allocated
  • 容器名冲突:名字都一样,第二个起不来
  • 设备身份冲突:每个版本都向央视频注册设备,全跑会共用同一个家宽 IP,更容易触发频控(HTTP 400)

正确姿势:一次只跑一个,用 ysp-switch.sh 切换,订阅地址永远在 8767。


⁠快速上手

⁠方式 A:切换脚本(推荐)

在 Git Bash 中执行(或双击 ysp-switch.bat):

bash ysp-switch.sh list        # 看版本、本地镜像、当前运行(v9.0-G 带 ★最新)
bash ysp-switch.sh latest      # 切到最新版 v9.0-G 并启动(推荐)
bash ysp-switch.sh v9.0        # 切到 v9.0 并启动
bash ysp-switch.sh status      # 运行状态 + 订阅地址
bash ysp-switch.sh logs        # 实时日志(Ctrl+C 退出)
bash ysp-switch.sh stop        # 停止

镜像已构建的话切换只要 1 秒:脚本自动停旧容器、启新容器、并探测出该版本真实可用的订阅路径。

⁠方式 B:手动 docker compose
cd ysp-live-docker-v9.0
docker compose up -d
docker logs -f ysp-live-v9.0
docker compose down

注意目录层级不一致:

版本compose 文件位置
v7.4 / v8.1 / v9.0版本目录根部
v3.0 / v5.1 / v6.2 / v7.0 / v7.2 / v7.3再进一层 ysp-live-docker/
v8.0 / v9.0-G双层同名目录,如 ysp-live-docker-v9.0-G/ysp-live-docker-v9.0-G/
⁠方式 C:在 Docker Desktop 界面点 ▶ 直接用(已预置好)

14 个容器已经预先创建完成(停止状态,端口全部映射好),容器名就是版本号:

ysp-live-v3.0   ysp-live-v5.1   ysp-live-v6.2   ysp-live-v7.0   ysp-live-v7.2
ysp-live-v7.3   ysp-live-v7.4   ysp-live-v8.0   ysp-live-v8.1   ysp-live-v9.0
ysp-live-v7.4-G ysp-live-v8.0-G ysp-live-v8.1-G ysp-live-v9.0-G

用法:Docker Desktop → Containers 页面 → 找到想用的版本 → 点 ▶。

⚠️ 14 个容器都绑定了宿主 8767,同时只能启动一个。 点 ▶ 之前先把其他 ysp-live-v* 容器停掉(选多个容器 → Stop),否则会报 port is already allocated。

如果容器列表被清空了,重建一次即可:bash ysp-switch.sh create-all

启动后订阅地址不变,永远是 http://localhost:8767/...。

⁠方式 D:从 Docker Hub 拉取
docker pull wuenci514/ysp-live:v9.0-G    # 推荐:64 路(央视+卫视)
docker pull wuenci514/ysp-live:v9.0      # 只有央视 30 路
docker pull wuenci514/ysp-live:latest    # 最新tag

docker run -d --name ysp-live \
  -p 8767:8767 \
  -v ./data:/app/data \
  -e TZ=Asia/Shanghai \
  -e YSP_DATA_DIR=/app/data \
  --restart unless-stopped \
  wuenci514/ysp-live:v9.0-G

⁠脚本命令速查

命令作用
list列出 14 个版本、本地镜像大小、容器状态(最新版带 ★)
latest切到最新版 v9.0-G 并启动(等价于 v9.0-G)
v9.0-G切换并启动(镜像不存在会自动构建)
build <版本>单独构建某个版本
build-all构建全部 14 个版本
create-all预创建 14 个容器(停止态,端口已映射,供界面点 ▶)
status容器状态 + 自动探测订阅地址
logs跟踪当前容器日志
stop停止所有容器(容器保留,可再点 ▶)
push <用户名>推送全部镜像到 Docker Hub(latest 固定打给 v9.0-G)
push <用户名> v9.0-G只推送指定版本

⁠播放器接入

用途地址
本机播放(4 个 -G 版本 / v3.0~v8.0)http://localhost:8767/all.m3u
本机播放(v9.0 / v8.1 / v7.4)http://localhost:8767/cctv.m3u
局域网 / 电视盒子http://192.168.x.x:8767/all.m3u(换成你的局域网 IP)
节目单 EPG订阅里已内嵌 url-tvg,播放器自动拉,不用单独填
健康检查http://localhost:8767/health
诊断页http://localhost:8767/diag

播放器(PotPlayer / VLC / TiviMate / APTV 等)选「添加订阅」粘贴上面的地址,台标与节目单会自动匹配。


⁠故障排查

⁠1. 构建报 Docker Desktop has no HTTPS proxy

Docker Desktop 内置的 http.docker.internal:3128 是转发到 Windows 系统代理的。系统代理一关,拉镜像和构建全废。

打开系统代理即可:Windows 设置 → 网络和 Internet → 代理 → 使用代理服务器;或在 FlClash / Clash Verge 里打开「系统代理」开关。

docker info 仍会显示 3128,别被它骗了。

⁠2. push 报 insufficient_scope: authorization failed

根因几乎都是镜像名没带用户名前缀。 docker push ysp-live:v9.0 会被解析成 docker.io/library/ysp-live,而 library 是 Docker 官方保留命名空间,永远没权限。

# 错误 ❌
docker push ysp-live:v9.0

# 正确 ✅
docker tag ysp-live:v9.0 wuenci514/ysp-live:v9.0
docker push wuenci514/ysp-live:v9.0

确认登录状态(别看 config.json 的 auths,它在 credsStore: desktop 模式下恒为空):

echo "https://index.docker.io/v1/" | docker-credential-desktop.exe get

密码要用 Access Token(hub.docker.com → Account Settings → Personal Access Token),不是账号密码。

⁠3. 启动报 port is already allocated
netstat -ano | findstr :8767
docker stop ysp-live-v7.3          # 停掉占端口的那个
⁠3.5 在 Docker Desktop 界面点「Run」启动的容器,浏览器连不上(ERR_CONNECTION_REFUSED)

界面直接点 Run 启动容器,默认只暴露端口、不做宿主机映射,docker ps 里 PORTS 列只会显示 8767/tcp 而不是 0.0.0.0:8767->8767/tcp,所以 localhost:8767 拒绝连接。

# 看端口列:没有 ->8767-> 就是没映射
docker ps --format "{{.Names}}\t{{.Ports}}"

# 删掉它,改用脚本或 compose 启动
docker rm -f <容器名>
bash ysp-switch.sh v7.3

如果一定要用界面启动,必须在 Run 的可选参数里手动填 Host port = 8767 → Container port = 8767。

⁠4. 一直「初始化中」或大量 HTTP 400
  • 关闭翻墙工具,或加分流规则把 cctv.com、cctv.cn、yangshipin.cn 设为直连(Direct)
  • 持续 400 说明公网 IP 被央视风控,重启光猫换个 IP 即可恢复
  • v9.0 / v9.0-G 内置双设备热备池与自动轮换,一般能自愈,可看 /diag 确认设备状态 (/health 里 engine.active_device_slots 就是当前可用设备槽位数)
⁠5. 重建容器后要重新注册设备

v7.2 及以后支持 ./data 持久化挂载,设备身份保存在各版本目录的 data/ 子目录,各版本互相独立。不要删这个目录。


⁠注意事项

  • 流量:真 4K 约 15 GB/小时,1080p 约 5 GB/小时
  • 延迟:直播延迟约 20 秒,属正常
  • 网络:建议家庭宽带直连运行,不要在数据中心 / 云服务器上跑
  • 实例数:不要同时开多个,容易触发央视频频控
  • 本项目为第三方直播源代理工具,请仅用于个人学习研究,观看正式内容请通过官方渠道支持正版

⁠文件说明

文件说明
ysp-switch.sh主脚本:构建 / 切换 / 启停 / 推送
ysp-switch.batWindows 包装器,双击运行
.current-version记录当前运行版本,切换时用它清理旧容器
ysp-live-docker-v*/14 个版本源码目录
data/(各版本内)设备身份持久化目录,勿删
使用说明书.html图文版完整说明书

⁠Docker Hub

仓库:wuenci514/ysp-live(Public)

已推送 15 个 tag:

v3.0  v5.1  v6.2  v7.0  v7.2  v7.3  v7.4  v8.0  v8.1  v9.0
v7.4-G  v8.0-G  v8.1-G  v9.0-G
latest   ← 指向 v9.0-G(64 路,推荐)

换机器直接拉:

docker pull wuenci514/ysp-live:v9.0-G   # 或 :latest

Tag summary

Content type

Image

Digest

sha256:4c17632ba…

Size

45.2 MB

Last updated

4 days ago

docker pull wuenci514/ysp-live