Skip to content

More Tips

kira1928 edited this page Feb 21, 2023 · 11 revisions

更多姿势

除了上述一个一个输入参数,bgo也支持从配置文件读取参数,也更滋瓷这种使用方式,下面是一个🌰,直接通过-c参数指定配置文件路径,在配置文件中添加直播间

bililive-go -c ./config.yml

# config.yml
rpc: 
  enable: false           # 是否开启API
  bind: 127.0.0.1:8080    # 监听地址
debug: false              # debug模式
interval: 15              # 直播间状态查询间隔时间(秒)
out_put_path: ./          # 输出文件路径
out_put_tmpl: ""          # 输出文件模板
live_rooms:               # 直播间url
    - https://www.panda.tv/10300
    - https://live.bilibili.com/1010
video_split_strategies:   # 分隔策略
    on_room_name_changed: false    # 是否在直播间名改变时分隔录像
    max_duration: 1h               # 单个录像最大时长
on_record_finished:       # 录制结束后的动作
  convert_to_mp4: true             # 把录制好的视频转换一份到 mp4
  delete_flv_after_convert: true   # 转换完成后删除原视频文件

当然,上述配置文件的所有参数你也可以通过手工的方式来指定(更新:有部分新增选项还没有对应命令行参数),CLI参数如下

      --help                 显示帮助信息
      --version              显示版本信息
      --debug                使用debug级log输出
  -t, --interval=20          直播见间状态查询间隔,默认20秒
  -o, --output="./"          录像输出文件路径
  -i, --input=INPUT ...      直播间地址,可以指定多个
  -c, --config=CONFIG        指定配置文件的路径
      --enable-rpc           开启 Http Rest API
      --rpc-addr=":8080"     Http Rest API 监听地址
      --split-strategies    分隔策略
      --output-file-tmpl    输出文件模板

输出文件名模板

默认的文件名模板如下

{{ .Live.GetPlatformCNName }}/{{ .HostName | filenameFilter }}/[{{ now | date "2006-01-02 15-04-05"}}][{{ .HostName | filenameFilter }}][{{ .RoomName | filenameFilter }}].flv

bgo最终输出的文件名为${out_put_path}/${out_put_tmpl}
out_put_tmpl基于go template实现,并添加sprig中的方法和如下的方法:

方法 说明
decodeUnicode 还原Unicode字符串,比如\\u9ed1\\u6697\\u5251 -> 黑暗剑
replaceIllegalChar 替换文件名中不支持的字符为_,包含:/, \, :, *, ?, ", <, >, |
unescapeHTMLEntity html.UnescapeHTMLEntity,处理html转义
filenameFilter replaceIllegalChar + unescapeHTMLEntity

输入的对象为live.Info,可以通过如下指令拿到相应的信息

指令 说明
.HostName 主播名
.RoomName 房间名
.Status, .Listening, .Recoding 直播状态,bgo监控器状态,bgo录制器状态,永远为True
.Live.GetLiveId 直播间ID(一串md5 string,由bgo根据直播间url计算所得)
.Live.GetRawUrl 直播间url
.Live.GetPlatformCNName 直播平台中文名
Clone this wiki locally