大家好,我是羊刀仙。
本篇为大家介绍一款录播工具,可通过Docker快速部署,正好手头有NAS,爱看直播或喜欢直播的朋友可以搭建一个愉快录播啦!
站点 | url | 支持情况 | cookie |
---|---|---|---|
Acfun直播 | live.acfun.cn | 滋瓷 | |
哔哩哔哩直播 | live.bilibili.com | 滋瓷 | 滋瓷 |
战旗直播 | www.zhanqi.tv | 滋瓷 | |
斗鱼直播 | www.douyu.com | 滋瓷 | |
火猫直播 | www.huomao.com | 滋瓷 | |
龙珠直播 | longzhu.com | 滋瓷 | |
虎牙直播 | www.huya.com | 滋瓷 | |
CC直播 | cc.163.com | 滋瓷 | |
一直播 | www.yizhibo.com | 滋瓷 | |
OPENREC | www.openrec.tv | 滋瓷 | |
企鹅电竞 | egame.qq.com | 滋瓷 | |
浪live | play.lang.live & www.lang.live | 滋瓷 | |
花椒 | www.huajiao.com | 滋瓷 | |
抖音直播 | live.douyin.com | 滋瓷 | 滋瓷 |
猫耳 | fm.missevan.com | 滋瓷 | |
克拉克拉 | www.hongdoufm.com | 滋瓷 | |
YY直播 | www.yy.com | 滋瓷 | |
微博直播 | weibo.com | 滋瓷 |
项目特点
支持国内基本所有主流直播平台,直接添加直播网址便可执行任务,操作十分简单;
可通过Dokcer快速部署,兼容arm/v6(服务器、软路由、NAS等),后续维护方便;
可以配合Grafana查看主播的直播时间;
部署流程
本篇会使用威联通NAS进行搭建,其它平台可做参考,无太大区别。
SSH连接NAS,输入以下命令,clone作者提供的文件:
# 这里选择直接clone官方文档,因此不需要创建
cd /share/Container
git clone https://github.com/hr3lxphr6j/bililive-go.git
SSH操作到这里,可以直接关闭终端控制台,转移至web端打开NAS管理界面。
先直接放上代码了,我对作者提供的docker-compose.yml
进行了部分修改:
version: "3.7"
volumes:
prometheus_data: {} # 定义prometheus_data卷,用于持久化Prometheus数据
services:
bililive-go:
image: chigusa/bililive-go
restart: unless-stopped
container_name: bililive-go
volumes:
- /share/Container/bililive-go/Videos:/srv/bililive # 用于存放录制的视频,这个不建议照抄,请自己指定路径
- /share/Container/bililive-go/config.docker.yml:/etc/bililive-go/config.yml # 将主机的config.docker.yml文件挂载到容器的/etc/bililive-go/config.yml,作为配置文件
ports:
- 9970:8080 # 冒号左侧端口修改
# 若仅仅需要录播,从这里之后可全都删掉
prometheus:
image: quay.io/prometheus/prometheus
restart: unless-stopped
container_name: bililive-prom
volumes:
- /share/Container/bililive-go/prometheus_data:/prometheus # 用于持久化存储Prometheus数据
- /share/Container/bililive-go/contrib/prometheus:/etc/prometheus # Prometheus的配置目录
command:
# Prometheus启动命令和参数,以下参数建议保存数据至少30天
- '--storage.tsdb.retention.time=30d'
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
ports:
- 9971:9090 # 冒号左侧端口修改
grafana:
image: grafana/grafana-oss
restart: unless-stopped
container_name: bililive-graf
volumes:
- /share/Container/bililive-go/contrib/grafana/provisioning:/etc/grafana/provisioning # Grafana的配置
environment:
- GF_SECURITY_ADMIN_USER=${ADMIN_USER} # 管理员用户名,从环境文件.env获取
- GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD} # 管理员密码
- GF_USERS_ALLOW_SIGN_UP=false # 禁止用户注册
- GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH=/etc/grafana/provisioning/dashboards/bilipanel.json # 设置默认仪表板路径
ports:
- 9972:3000 # 冒号左侧端口修改
上面grafana
项目的管理员用户名及密码完全不用理会,默认皆为admin,就算不改,部署后第一次登陆也会强制咱们修改~
先打开文件总管,在刚刚clone的文件目录下,新建一个prometheus_data
文件夹:
接着打开 Container Station,将上面的代码稍加修改(文件映射目录和端口号)后,复制粘贴进行创建:
稍加等待,可以看到已经创建成功:
项目使用
bililive-go
根据上文,web输入NAS_IP:9970 即可进入控制台,点击添加房间:
提示我们输入URL,就是观众在web看直播时网址栏对应的那个网址,复制粘贴进去即可:
添加完毕后,有的显示录制中(正在直播),有的则是监控中(未开播)。未开播的房间等开播后也会自动监控开始录制:
回到NAS,打开之前用于存放录像的- /share/Container/bililive-go/Videos:/srv/bililive
目录,.flv
代表原画面。没几分钟就这么大了。。。所以建议大家自己更换存放目录:
回到项目的控制面板,点击最右侧的文件:
可以快速查看录播的文件:
对着文件单机,就可以快速播放内容:
左侧设置,可以看到一串串配置代码,细致的功能修改需要我们在这里进行:比如我们若只想录制音频,可将audio_only: false
改为audio_only: true
。但要注意的是,修改配置时建议先停止监控,有些配置可能需要项目重启后才会生效:
一些其它配置,大家若有需求可以参考自行修改或添加:
rpc: # RPC 服务的配置
enable: true # 启用 RPC 服务
bind: :8080 # RPC 服务绑定的地址和端口,这里绑定到 8080 端口
debug: false # 是否启用调试模式
interval: 20 # 录制检查间隔时间,单位为秒
out_put_path: ./ # 输出文件的路径,默认为当前目录
ffmpeg_path: # ffmpeg 可执行文件的路径,如果为空,则从环境变量中查找
log: # 日志配置
out_put_folder: ./ # 日志输出目录
save_last_log: true # 是否保存上一次的日志
save_every_log: false # 是否保存每次的日志
feature: # 特性配置
use_native_flv_parser: false # 是否使用原生的 FLV 解析器
live_rooms: # 配置要监听的直播间列表
# qulity 参数目前仅 B 站启用,默认为 0
# (B 站)0 代表原画 PRO(HEVC) 优先, 其他数值为原画(AVC)
# 原画 PRO 会保存为 .ts 文件, 原画为 .flv
# HEVC 相比 AVC 体积更小, 减少 35% 体积, 画质相当, 但是 B 站转码有时候会崩
- url: https://www.lang.live/room/5664344 # 直播间 URL
is_listening: false # 是否监听该直播间
- url: https://live.bilibili.com/22603245 # 直播间 URL
is_listening: true # 是否监听该直播间
quality: 0 # 录制画质,0 为原画 PRO(HEVC)
out_put_tmpl: "" # 输出文件的模板,留空使用默认模板
video_split_strategies: # 视频分割策略
on_room_name_changed: false # 是否在直播间名称改变时分割视频
max_duration: 0s # 单个录像时间,用于分段,0 表示不限制,1h为1小时
# 仅在 use_native_flv_parser=false 时生效
# 单位为字节 (byte)
# 有效值为正数,默认值 0 为无效
# 负数为非法值,程序会输出 log 提醒,并无视所设定的数值
max_file_size: 0
cookies: {} # Cookies 配置,留空表示不使用
on_record_finished: # 录制完成后的操作
convert_to_mp4: false # 是否将录制的 FLV 文件转换为 MP4
delete_flv_after_convert: false # 转换为 MP4 后是否删除原始 FLV 文件
# 当 custom_commandline 的值不为空时,convert_to_mp4 的值会被无视,
# 而是在录制结束后直接执行 custom_commandline 中的命令。
# 在 custom_commandline 执行结束后,程序还会继续查看 delete_flv_after_convert 的值,
# 来判断是否需要删除原始 flv 文件。
# 以下是一个在录制结束后将 flv 视频转换为同名 mp4 视频的示例:
# custom_commandline: '{{ .Ffmpeg }} -hide_banner -i "{{ .FileName }}" -c copy "{{ .FileName | trimSuffix (.FileName | ext)}}.mp4"'
custom_commandline: "" # 自定义命令行,在录制结束后执行
timeout_in_us: 60000000 # 超时时间,单位为微秒
bililive-graf(Grafana)
根据上文,web输入NAS_IP:9972
,账户/密码皆为admin:
登陆后会弹出强制修改密码界面:update your password。改好后点击 Submit
:
再次登陆后,先修改下语言,按照下图位置,选择中文(简体)并点击SAVE
即可:
搭配Grafana查看主播的直播时间,还有录制文件的大小等:
反向代理
项目通过NAS部署,所以依然选择Lucky实现,关于Lucky部署及注意事项参考这篇:https://blog.ydxian.xyz/archives/lucky
点击添加子规则:
这里放上配置截图:
前端地址填写你解析好的二级域名;
后端是局域网访问该服务的完整链接;
由于这个项目组并不擅长安全内容,我顺便建议大家在lucky自行设置认证。
最后
这个录播工具还是非常不错的,忙起来的时候会错过很多精彩直播。比如官方赛事,还有几个爱看的主播并没有上传录播记录的习惯,就可以借助这个工具进行录制,休息吃饭的时候看一看(很下饭)。
如果本篇你觉得不错,别忘了多多三连支持,能点个关注是最好的!
我是羊刀仙,后续也会继续分享各类好玩的Dokcer项目、软件应用和精致好物,本篇到此结束,感谢观看~
评论区