proxylive是一款视频流转码与广播应用,可将HTTP MPEG-TS流按需转码为MPEG-TS或HLS格式并分发给多个客户端。核心价值在于实现多客户端共享单个后端连接,降低资源占用;支持按需转码以适配不同设备或带宽需求,并提供多源故障切换、EPG(电子节目指南)及用户认证功能,适用于家庭媒体中心或小型直播分发场景。
自动加载Tvheadend中的所有频道,需配置Tvheadend连接信息及频道刷新间隔。
配置示例(application.yaml):
yamlsource: tvheadendURL: [***] channels: type: tvheadend refresh: 60 # 刷新间隔(秒)
通过JSON文件定义频道信息,支持从文件/URL或Git仓库加载,配置刷新机制。
定期从指定文件路径或URL读取JSON数据。
配置示例(application.yaml):
yamlsource: channels: type: json refresh: 60 # 刷新间隔(秒) url: file:///my/disk/channels.json 或 [***]
从Git仓库读取频道数据和图标(picons),仅在检测到新提交时刷新。
配置示例(application.yaml):
yamlsource: channels: git: repository: [***] # 可选配置 user: youruser pass: yourpass branch: master type: json refresh: 60 # 刷新间隔(秒)
channels.json示例:
json[ { "number" : 1, "name" : "La 1 HD", "id" : "la1hd", "epgID" : "La 1 HD", "logoFile":"/picons/la1hd.png", "logoURL": "[***]", "categories" : [ "Generales", "TDT" ], "ffmpegParameters": "额外的FFmpeg参数(可选,用于MTPS提取)", "sources" : [ { "url" : "[***]", "priority" : 1, "type" : "ffmpeg" // 强制使用FFmpeg处理原始流(适用于MTPS) }, { "url" : "udp://225.225.201.1:8008", "closeHook": "[***]{{channel}}&date={{now}}", "priority" : 2 }, { "url" : "rtp://200.100.1500:1001", "priority" : 3 }, { "url" : "hlss://my.server/my/stream.m3u8", // hls或hlss(TLS加密) "closeHook": "pipe://echo \"Closed channel {{channel}} when {{now}}\" > example.txt", "priority" : 4 }, { "url" : "dashs://my.server/my/stream.m3u8", // dash或dashs(TLS加密) "priority" : 5 }, { "url" : "rtmp://my.server/rtmp/live", "priority" : 6 }, { "url" : "pipe://raspivid -o - -t 0 -fps 25 -g 50 -rot 180 -n -a 12 -b 6000000", // 处理进程输入流 "priority" : 7 } ] } ]
图标说明:图标可通过
logoFile(本地路径)或logoURL(远程URL)指定,logoURL会被缓存,客户端将从proxylive请求图标。使用Git源时,图标需存放于仓库根目录。
需在运行目录(Docker环境下为/app/)创建application.yaml配置文件,主要配置项如下:
yamlsource: # 源连接重试间隔(秒),可选 reconnectTimeout: 10 # EPG配置(可选) epg: url: [***] # EPG数据URL refresh: 600 # 刷新间隔(秒,默认10分钟) channels: # 频道源配置,详见“频道源类型” # ...(根据源类型配置) # 连接后端HTTP(S)流时使用的User-Agent userAgent: "Proxylive" # 流超时时间(秒):后端无数据传输时关闭客户端连接 streamTimeout: 60
用于定义转码路径及转码配置文件(profiles):
yamlffmpeg: # FFmpeg可执行文件路径 path: '/usr/bin/ffmpeg' # 转码配置文件(profiles),alias用于URL中的profile参数 profiles: - alias: "aac" # 音频转码示例 parameters: "-i {input} {channelParameters} -sn -ac 2 -c:a aac -b:a 320k -c:v copy" - alias: "240p" # 240p视频转码示例 parameters: "-i {input} {channelParameters} -sn -c:a:0 aac -ac 2 -b:a 64k -c:v libx264 -tune zerolatency -g 10 -vprofile high -level 4.0 -crf 18 -movflags +faststart -bufsize ***k -maxrate 300k -preset veryslow -vf scale=-1:244,yadif=0" # 更多配置文件(360p、480p、720p、1080p等)... # MPEG-TS输出参数(非“raw”配置文件时生效) mpegTS: parameters: "-threads 0 -f mpegts -mpegts_m2ts_mode 1 -mpegts_copyts 1 -mpegts_flags +resend_headers" # HLS输出配置(默认禁用) hls: enabled: false # 是否启用HLS tempPath: "/tmp" # HLS分片文件存储路径 parameters: "-flags -global_header -avoid_negative_ts disabled -map_metadata -1 -start_at_zero -copyts -flags -global_header -vsync cfr -y -nostats -f hls -hls_time 2 -hls_list_size 10 -hls_wrap 20 -hls_allow_cache 0 -hls_flags +append_list -hls_flags +discont_start -hls_flags +delete_segments" timeout: 30 # 用户断开后保留转码的超时时间(秒)
yamlbuffers: # 单次读取流的最大字节数,默认1MB chunkSize: *** # 广播缓冲区大小,默认50MB( larger buffer更稳定但延迟更高) broadcastBufferSize: 52428800
支持Plex认证(LDAP暂未实现),配置示例:
yamlauthentication: # Plex认证 plex: refresh: *** # 用户列表刷新间隔(秒,默认3小时) adminUser: "plexOwnerUser" # Plex管理员用户名 adminPass: "plexOwnerPass" # Plex管理员密码 serverName: "MyPlexServerName" # Plex服务器名称(仅允许管理员授权的用户访问) # LDAP认证(未实现) # ldap: # server: "ldap://server:389" # username: "user" # pass: "pass" # searchBase: "dc=ad,dc=my-domain,dc=com"
客户端连接示例(带认证参数):
http://localhost:8080/channel/list/mpeg/1080p?user=myplexuser&pass=myplexpass
http://{server}:8080/view/{profile}/{channelID}
server:proxylive服务IP/域名profile:转码配置文件别名(如1080p、aac,定义于ffmpeg.profiles)channelID:频道唯一标识(Tvheadend源为streamID,自定义JSON源为id字段)http://{server}:8080/channel/list/{format}/{profile}?user={user}&pass={pass} # 带认证 http://{server}:8080/channel/list/{format}/{profile} # 无认证
format:输出格式,支持mpeg(MPEG-TS)或hls(HLS)http://{server}:8080/epg
bashdocker run --name=proxylive -p 8080:8080 --restart=always -d -v /path/to/your/application.yml:/app/application.yml:ro segator/proxylive
-p 8080:8080:映射服务端口(容器内默认8080)-v /path/to/your/application.yml:/app/application.yml:ro:挂载本地配置文件(只读)--restart=always:容器退出时自动重启application.yaml配置文件java -jar proxylive.jar(需JRE 8+及FFmpeg)来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429