Acknowledgments
- Thanks to IPTV Official Group for sharing the algorithm source code
- Thanks to ll from the Gary's Club group for providing live_ids for many channels
- Thanks to the APTV group owner for technical help
中文文档: README-CN.md
CCTV live streaming via Docker — CCTV channels only (30 channels): CCTV-1~17, 5+, 6, 3 theater channels, 4K/8K, CGTN. Local satellite channels have been completely removed.
- 30 CCTV channels with groups (
group-title): 央视FHD / 央视UHD / CGTN - Dual-engine 4-layer fallback: device 4K/8K → 1080p JCE → bkliveinfo → Node.js WASM fallback
- 7-day catchup & timeshift: 19 channels support 7-day program replay (
catchup="append") - Python + Node.js, single port (8767)
- Auto keep-alive: heartbeat every 30s, silent session renewal, 24/7 background worker
- Persistent device identity:
./datavolume survives container rebuilds - APTV player optimized: no preview/latency probing to avoid triggering rate limits
curl -sSL https://raw.githubusercontent.com/waastudios/ysptp-docker/main/install.sh|bashWait ~30s, then check logs for 设备协议就绪 (device protocol ready):
docker logs -f ysp-liveGet your VPS public IP:
curl -s ifconfig.me- CCTV subscription (30 channels, with groups):
http://<VPS_PUBLIC_IP>:8767/cctv.m3u - Aggregated EPG (30 channels, refreshes every 6h):
http://<VPS_PUBLIC_IP>:8767/epg.xml - Homepage:
http://<VPS_PUBLIC_IP>:8767/ - Diagnostics:
http://<VPS_PUBLIC_IP>:8767/diag
Note:
localhostonly works on the machine itself. On a VPS, always replace it with the public IP; on a LAN use the private IP (e.g.http://192.168.1.10:8767/cctv.m3u).
Channel groups:
- 央视FHD: CCTV-1~17, 5+, 6, 3 theater channels, etc.
- 央视UHD: CCTV-4K, 8K, 16-4K
- CGTN: CGTN main + French / Russian / Arabic / Spanish / Documentary
| Port | Purpose |
|---|---|
| 8767 | Single port: homepage, subscriptions, 30 channels, TS relay, aggregated EPG |
ufw allow 8767/tcpThis project ships a built-in aggregated EPG endpoint (see Usage above for the URL) — no need to configure third-party EPG sources manually:
- Content: programme guide for only the 30 channels in this project (CCTV FHD / CCTV UHD / CGTN); irrelevant channels are filtered out
- Upstream sources (merged automatically; the two complement each other, one going down won't break the other):
https://live.fanmingming.com/e.xmlhttps://epg.112114.xyz/pp.xml.gz
- Refresh: auto-updates every 6 hours; fetched in the background on first access, just retry after a moment
The /cctv.m3u playlist already points to this address, so players load the guide automatically.
- Bandwidth: 4K channels relay video through the VPS (~15GB/hour at 35Mbps). A VPS far from CCTV's CDN (e.g. US) may stutter on 4K; an Asia VPS is recommended for smooth 4K.
- Device registration: first boot takes ~5-10s for device registration; rebuilding the container requires re-registration (normal).
- Subscriptions include logos,
tvg-id,group-title, and aggregated EPG — no manual EPG setup needed.
docker compose up -d --build # start / update
docker logs -f ysp-live # logs
docker compose restart # restart
docker compose down # stop- Upstream: dual-device hot-standby pool (0ms failover), 400 self-healing retry
- 26 channels via device protocol native high-bitrate by default
- This build: 30 channels (CCTV/CGTN only), groups 央视FHD/央视UHD/CGTN
- Built-in EPG aggregation (
/epg.xml), 4K channels locked to true 4K
- Dual engine: Python gateway + Node.js WASM fallback, 4-layer failover
- 30 channels, EPG aggregation
cd /opt/ysp-live-docker && docker compose down -v
docker rmi ysp-live:9.0
cd /opt && rm -rf /opt/ysp-live-docker /opt/v9.0.zipdocker compose down -v also removes the device registration data.