RPlay这个平台没有直播回放功能,错过想看的主播就只能等下次开播。有录播需求的话要么手动守着录,要么找个工具自动化。我搜了一圈发现有个叫rplay-live-dl的Docker项目,专门做这件事,就在UNRAID上部署了一套。
这个工具做什么
rplay-live-dl是个Python写的Docker工具,核心逻辑很简单:
配置你要监控的创作者列表
每60秒轮询一次这些创作者在没在播
直播一开始就自动调用yt-dlp下载.ts流
直播结束后用FFmpeg把.ts合并成mp4
同名标题自动加_1、_2后缀,不会覆盖
合并失败的保留原始流文件,方便手动补救
整个过程全自动,部署完就不用管了。
UNRAID部署
UNRAID的Docker GUI部署这种纯后台服务特别顺手,不需要打命令。我用的配置命令如下(token和用户ID已隐去):
docker run \
-d \
--name='rplay-live-dl' \
--net='bridge' \
--pids-limit 2048 \
-e TZ="Asia/Shanghai" \
-e HOST_OS="Unraid" \
-e HOST_HOSTNAME="Tower" \
-e HOST_CONTAINERNAME="rplay-live-dl" \
-e 'AUTH_TOKEN'='你的JWT_Token' \
-e 'USER_OID'='你的用户OID' \
-e 'INTERVAL'='60' \
-e 'LOG_LEVEL'='INFO' \
-e 'PYTHONUNBUFFERED'='1' \
-l net.unraid.docker.managed=dockerman \
-l net.unraid.docker.icon='https://rplay.live/favicon-32x32.png' \
-v '/mnt/disk1/appdata/rplay-live-dl/config':'/app/config':'rw' \
-v '/mnt/disk1/rplayvideo/archive':'/app/archive':'rw' \
-v '/mnt/disk1/appdata/rplay-live-dl/logs':'/app/logs':'rw' \
'paverz/rplay-live-dl:latest'
几个关键的配置点:
网络选bridge就行,纯后台服务不需要端口映射,没有Web界面。
存储分了三个卷。config放appdata里,archive放磁盘阵列的大空间目录(一场直播几个GB很正常),logs随便放。
环境变量全用Docker模板的变量区填,不需要挂.env文件。这个项目用pydantic-settings读配置,环境变量优先级比.env文件高,所以直接塞环境变量最省事。
时区设Asia/Shanghai,录制文件名带的时间戳会跟着这个时区走。
获取RPlay凭证
过程稍微折腾了一点,因为要在浏览器开发者工具里找:
登录rplay.live
F12开DevTools → Console → 输入localStorage.getItem('_AUTHORIZATION_')回车,拿到一串JWT token
访问https://rplay.live/myinfo/ → 页面上的User Number就是USER_OID
创作者ID的获取也类似——进创作者主页,F12 → Network → 刷新页面 → 搜CreatorOid → 复制那串ID。
AUTH_TOKEN是JWT格式,会过期。过期了按上面的步骤重新拿一次,在UNRAID模板里更新环境变量然后重启容器就行。
config.yaml只放创作者列表
这个项目分了两套配置:运行时参数走环境变量(凭证、轮询间隔、日志级别),创作者列表和API地址走config/config.yaml。
config.yaml很简单:
apiBaseUrl: https://api.rplay.live
creators:
- name: "创作者A"
id: "拿到的CreatorOid"
- name: "创作者B"
id: "另一个CreatorOid"
只要这一个文件放在挂载的config目录里就行。程序每次轮询都会重新读取,加新创作者不用重启容器。
我本来的想法是全部用环境变量,连config.yaml都不要。查了源码发现creators列表只支持YAML读取,没有环境变量映射。想过用Post Arguments在启动时从环境变量动态生成config.yaml,但这样做容器入口点和Python环境绑得太死,镜像更新可能挂。最后老老实实挂了一个config目录,创作者列表本来也不常改,多这一个文件不算什么负担。
怎么确认它在工作
进UNRAID终端:
# 看实时日志
docker logs -f rplay-live-dl
# 看录制产出
ls -la /mnt/disk1/rplayvideo/archive/
正常跑起来的日志大致是这个画风——每次轮询会报当前状态,检测到直播就开始下载,结束时触发合并。
日志默认有轮转(5MB×5份+30天清理),不会把盘撑爆。
一些实际情况
这个项目目前挂的版本标签是v2.0.0-vibe,带了-vibe后缀的版本是AI辅助开发的,作者自己在README里写了"Vibe Coding Notice"。用下来稳定性还行,至少我部署完几个小时内日志都正常。
还有一点:付费/私密直播会自动跳过(API返回403直接阻塞),这点挺合理,不会反复重试浪费流量。网络断了重连有3次指数退避重试,但长时间断网还是会丢那场直播。家庭宽带的稳定性下不是什么大问题。
总结
对于RPlay上的直播自动录制需求,rplay-live-dl是目前最轻量的方案。不需要装浏览器、不需要模拟操作、不需要处理任何验证码,直接调API+yt-dlp,干净利落。UNRAID上部署也就是填个Docker模板的事,5分钟搞定。
唯一的不足是没有Web管理界面,但一个自动录制工具其实也不需要——部署完忘了它,哪天想回看直接去archive目录翻就行了。