b站自动录播自建教程

421 阅读5分钟

录播需求

经常看的b站up主直播时间不规律需要一个自动录播并上传云盘的自动化挂录播服务,不大需要自动发布到b站功能,本地存储空间小,需要上传到云端减小空间压力。

mikufans 录播姬 和 blrec 选哪个?

目前主流的挂录播的只有两个 录播姬 和 blrec 两个,实测录播姬服务器录播有断流,切分为小文件现象,blrec听说没有这个问题,目前使用这个。

部署思路

目前 录播姬 和 blrec 都有各种部署方式,但要实现自动录播的能力还得需求借助其他插件,最优选择的部署方式是docker部署。借助 biliup-for-java 插件,设置好 webhook 地址后,主播开播、下播时,相关参数都会被传输到 biliup-for-java 中,实现录播后处理。然后使用 rclone 自动上传到网盘。

docker 还是 docker compose?

虽然 docker 和 docker compose 部署效果是一致的,但 docker compose 部署可以保存文件方便再部署,一旦遇到意外,docker compose 的优势就体现出来了,不用再次查询文档部署,启动多个容器,直接一行命令重启就行。缺点是需要妥善保存docker-compose.yml 文件。

部署步骤

系统安装(虚拟机安装) 略

docker安装 略

目前 dockerhub 被墙,网上公开免费的镜像时不时失效不稳定,建议使用 1panel 来获取 dockerhub 地址,方便,快捷,稳定。缺点是商业公司提供,介意安全的使用传统方式,或者安装后删除使用。

录播姬 + biliup-for-java 部署(网络不稳有断流现象)

version: "3.8"
services:
  recorder: # b站录播姬
    image: bililive/recorder:latest
    restart: always
    container_name: bililive-recorder
    volumes:
      - type: bind
        source: /root/video/bililive/ # 在这里写宿主机保存录播的路径
        target: /rec
    ports:
      - "2356:2356"
      # 第一个 2356 是宿主机的端口,可以根据自己需求改动。
      # 第二个 2356 是容器内的端口,不要修改。
    environment:
      - BREC_HTTP_BASIC_USER=你的用户
      - BREC_HTTP_BASIC_PASS=你的密码
      - UMASK=022
      # (高级参数,非必填)这个值用于控制镜像写出的文件权限,002为当前用户&当前用户组可读写,默认值022为当前用户可读写,其他用户只读
      - PUID=1000
      # (高级参数,非必填)这个值用于控制文件所有者,建议设置为宿主机的用户的UID或者和宿主机用户相同用户组的用户的UID
      - PGID=1000
      # (高级参数,非必填)这个值用于控制文件所有者所属的用户组,建议设置为宿主机的用户相同的用户组的GID

  bup: # 上传插件
    image: mwxmmy/biliupforjava:latest
    restart: always
    container_name: bup
    mem_limit: 512m
    volumes:
      - type: bind
        source: /root/video/bililive/ # 在这里写宿主机保存录播的路径
        target: /bilirecord
      - /root/video/complete/:/complete # 录制完成后移动路径
    ports:
      - "2357:80"
      # 第一个 2357 是宿主机的端口,可以根据自己需求改动。
      # 第二个 80 是容器内的端口,不要修改。

blrec + biliup-for-java 部署

version: "3.8"
services:
  blrec: # 录制
    image: acgnhiki/blrec:latest
    restart: always
    container_name: blrec
    volumes:
      - /etc/blrec:/cfg
      - /var/log/blrec:/log
      - /root/docker/blrec/rec:/rec # 这里宿主地址+/rec
    ports:
      - "2239:2233"
    command: 
      -c /cfg/another_settings.toml --api-key bili2233
            
  bup: # 上传插件
    image: mwxmmy/biliupforjava:latest
    restart: always
    container_name: bup-1
    mem_limit: 512m
    volumes:
      - /root/docker/blrec/:/bilirecord # 注意 这里宿主地址不要+/rec
      - /root/video/complete:/complete # 录制完成后移动路径
    ports:
      - "2258:80"
      # 第一个 2357 是宿主机的端口,可以根据自己需求改动。
      # 第二个 80 是容器内的端口,不要修改。

docker 转 docker compose 参考

大多数教程一般是提供 docker 部署,这里提供 docker compose 部署,如果不是很懂 docker compose 的话,这里提供个网站可以一键转换可以参考一下。 composerize

Cookies 以及 Cookies 的获取方法 略

Webhook配置

录播姬

设置-> Webhook V2 填入

http://bup/recordWebHook 或者 http://宿主机ip+docker容器映射宿主机端口号/recordWebHook

blrec

设置-> Webhook->Webhook 列表 填入

http://bup/recordWebHook 或者 http://宿主机ip+docker容器映射宿主机端口号/recordWebHook

Rclone安装 略

建议直接安装不要使用docker部署

添加房间

直播间链接 在录播姬或者blrec添加房间 进入 biliup-for-java 后台 编辑 选择

录制结束后移动到/complete

Rclone配置

登录网盘 略

Rclone命令

# 本地到网盘
rclone [功能选项] <本地路径> <配置名称:路径> [参数] [参数]
# 网盘到本地
rclone [功能选项] <配置名称:路径> <本地路径> [参数] [参数]
# 网盘到网盘
rclone [功能选项] <配置名称:路径> <配置名称:路径> [参数] [参数]

# [参数]为可选项

Cron结合Rclone 实现定时上传或者备份

使用 crontab 将 rclone copy 命令复制到云存储。

crontab -e
# G 跳转到末尾,o 新建一行进行输入,键入下面命令后 :wq 退出
# 注意修改本地路径和远程路径
~~~
*/5 * * * * rclone copy /home/xxxx/download/animes alist:/AliDrive/Videos/Animes
~~~Copy

这行命令的效果是每 5 分钟执行一次 rclone copy,rclone copy 会先检查源地址是否有目标地址没有的文件,若有则进行复制操作,没有则无事发生。

遇到的一些坑

容器挂载的问题 blrec + biliupforjava doker容器地址配置 宿主地址不要+/rec Rclone配置 Rclone配置有点繁琐

参考链接

搭建自己的在线动漫资源库 Cron结合Rclone 实现定时上传或者备份

B站直播的录播与上传 录播搭建思路