央视频直播 Docker 版 · 多版本管理
835
v3.0 ~ v9.0 外加 4 个 -G 版本(v7.4-G / v8.0-G / v8.1-G / v9.0-G),共 14 个版本,
全部构建为独立镜像,一次只跑一个,统一占用 8767 端口。
v9.0-Glatest 标签恒定指向 v9.0-G,三处已对齐:
| 位置 | 标签 | 指向 |
|---|---|---|
| Docker Hub | wuenci514/ysp-live:latest | ✅ v9.0-G |
| 本地 Docker Desktop | ysp-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 系列把它们全部加回来了。
-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.m3u | 63 | ysp-live:v3.0 | 184 MB | python:3.12-slim |
| v5.1 | /all.m3u | 64 | ysp-live:v5.1 | 187 MB | python:3.11-slim |
| v6.2 | /all.m3u | 64 | ysp-live:v6.2 | 187 MB | python:3.11-slim |
| v7.0 | /all.m3u | 64 | ysp-live:v7.0 | 187 MB | python:3.11-slim |
| v7.2 | /all.m3u | 64 | ysp-live:v7.2 | 187 MB | python:3.11-slim |
| v7.3 | /all.m3u | 64 | ysp-live:v7.3 | 187 MB | python:3.11-slim |
| v7.4 | /cctv.m3u | 30 ❗无卫视 | ysp-live:v7.4 | 187 MB | python:3.11-slim |
| v8.0 | /all.m3u | 64 | ysp-live:v8.0 | 83.4 MB | python:3.12-alpine |
| v8.1 | /cctv.m3u | 30 ❗无卫视 | ysp-live:v8.1 | 181 MB | python:3.12-alpine |
| v9.0 | /cctv.m3u | 30 ❗无卫视 | ysp-live:v9.0 | 181 MB | python:3.12-alpine |
| v7.4-G | /all.m3u | 64(卫视32+央视28+数字4) | ysp-live:v7.4-G | 187 MB | python:3.11-slim |
| v8.0-G | /all.m3u | 64(卫视34+央视30) | ysp-live:v8.0-G | 83.4 MB | python:3.12-alpine |
| v8.1-G | /all.m3u | 64(卫视34+央视30) | ysp-live:v8.1-G | 181 MB | python:3.12-alpine |
| v9.0-G ⭐ | /all.m3u | 64(卫视34+央视30) | ysp-live:v9.0-G | 181 MB | python:3.12-alpine |
/all.m3u;v7.4 / v8.1 / v9.0 改成 /cctv.m3u。在 v9.0 上访问 /all.m3u 返回 404。/health 里写的是 /all.m3u,但代码真正处理的是 /cctv.m3u,两者不一致。以 /cctv.m3u 为准。ysp-live-docker-v9.0-G/ysp-live-docker-v9.0-G/(和 v8.0 一样套了两层同名目录),别只进一层就执行 docker compose up。✅
v7.4-Gv8.0-Gv8.1-G已全部构建完成并实测:均为/all.m3u+ 64 路(卫视齐全)。
14 个版本原本的 docker-compose.yml 里 container_name 全部写死为 ysp-live,宿主端口也全部是 8767:8767:
port is already allocated正确姿势:一次只跑一个,用 ysp-switch.sh 切换,订阅地址永远在 8767。
在 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 秒:脚本自动停旧容器、启新容器、并探测出该版本真实可用的订阅路径。
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/ |
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/...。
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 等)选「添加订阅」粘贴上面的地址,台标与节目单会自动匹配。
Docker Desktop has no HTTPS proxyDocker Desktop 内置的 http.docker.internal:3128 是转发到 Windows 系统代理的。系统代理一关,拉镜像和构建全废。
打开系统代理即可:Windows 设置 → 网络和 Internet → 代理 → 使用代理服务器;或在 FlClash / Clash Verge 里打开「系统代理」开关。
docker info仍会显示 3128,别被它骗了。
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),不是账号密码。
port is already allocatednetstat -ano | findstr :8767
docker stop ysp-live-v7.3 # 停掉占端口的那个
界面直接点 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。
cctv.com、cctv.cn、yangshipin.cn 设为直连(Direct)/diag 确认设备状态
(/health 里 engine.active_device_slots 就是当前可用设备槽位数)v7.2 及以后支持 ./data 持久化挂载,设备身份保存在各版本目录的 data/ 子目录,各版本互相独立。不要删这个目录。
| 文件 | 说明 |
|---|---|
ysp-switch.sh | 主脚本:构建 / 切换 / 启停 / 推送 |
ysp-switch.bat | Windows 包装器,双击运行 |
.current-version | 记录当前运行版本,切换时用它清理旧容器 |
ysp-live-docker-v*/ | 14 个版本源码目录 |
data/(各版本内) | 设备身份持久化目录,勿删 |
使用说明书.html | 图文版完整说明书 |
仓库: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
Content type
Image
Digest
sha256:4c17632ba…
Size
45.2 MB
Last updated
4 days ago
docker pull wuenci514/ysp-live