
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
An HLS proxy that intercepts live streams and burns WebVTT subtitles directly into the video, producing a single-track output compatible with any player — including those that don't support HLS subtitle tracks (Roku, many smart TVs, etc.).
If you are viewing this on Docker Hub you can find the source repository on Gitlab at nodeto/hls-subtitle-proxy or by clicking https://gitlab.com/nodeto/hls-subtitle-proxy.
bashdocker run -d \ --restart unless-stopped \ --name hls-subtitle-proxy \ -p 8081:8080 \ -e UPSTREAM=http://your-iptv-source/playlist.m3u \ kjoyce77/hls-subtitle-proxy
Point your IPTV client at http://<host>:8081/playlist.m3u.
.ts segment + matching subtitle cues, then uses ffmpeg to burn the subtitles into the video in real time.All settings are configured via environment variables.
| Env Var | Default | Description |
|---|---|---|
UPSTREAM | Upstream M3U playlist URL (required) | |
EXT_URL | (derived from listen address) | External URL clients use to reach this proxy |
CHANNELS | Comma-separated list of channel IDs | |
CONFIG | Path to a channels.json config file (mount into container) | |
PRESET | medium | x264 speed preset (ultrafast … veryslow) |
WORKERS | 2 | Number of concurrent ffmpeg encode workers |
CACHE_DIR | (auto temp dir) | Directory for cached encoded segments |
VERBOSE | Set to any value to enable verbose logging | |
ADDR | :8080 | Listen address (host:port) — note: this only affects the listen address inside the container; change the host-side port via Docker's -p flag instead |
Channels can be configured in two ways:
CHANNELS env — comma-separated list of channel IDs:
bash-e CHANNELS=csi,law-and-order,star-trek-1
Mounted config file — mount a JSON file into the container and set CONFIG:
bash-v /path/to/channels.json:/app/channels.json:ro
A channels.json file looks like:
json{ "channels": [ "csi", "law-and-order", "star-trek-1" ] }
If a channels.json is mounted to /app/channels.json it will be picked up automatically without needing to set CONFIG.
Minimal — proxy all channels:
bashdocker run -d \ --restart unless-stopped \ --name hls-subtitle-proxy \ -p 8080:8080 \ -e UPSTREAM=https://example.com/playlist.m3u \ kjoyce77/hls-subtitle-proxy
With channel filtering and encoding preset:
bashdocker run -d \ --restart unless-stopped \ --name hls-subtitle-proxy \ -p 8080:8080 \ -e UPSTREAM=https://example.com/playlist.m3u \ -e CHANNELS=csi,star-trek-1,doctor-who-classic \ -e PRESET=fast \ -e EXT_URL=http://myserver.local:8080 \ kjoyce77/hls-subtitle-proxy
With a mounted config file:
bashdocker run -d \ --restart unless-stopped \ --name hls-subtitle-proxy \ -p 8080:8080 \ -e UPSTREAM=https://example.com/playlist.m3u \ -v /path/to/channels.json:/app/channels.json:ro \ kjoyce77/hls-subtitle-proxy
Docker Compose:
yamlservices: hls-proxy: image: kjoyce77/hls-subtitle-proxy ports: - "8080:8080" environment: UPSTREAM: https://example.com/playlist.m3u CHANNELS: csi,law-and-order,star-trek-1 PRESET: fast restart: unless-stopped
MIT License - see LICENSE for details.
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务