一个优秀的直播录制工具

一个优秀的直播录制工具

之前在gayhub上瞎逛,想找一找有没有能够下载bilibili大会员视频的工具(传cookie进去然后下载的那种),然后意外找到了一个叫做bililive-go的项目,目前支持哔哩哔哩、熊猫、战旗、斗鱼、火猫、龙珠、虎牙、全民、CC、一直播、twitch、OPENREC共12家平台的直播原画录制,是王老菊未来科技的优秀“员工”使用Go语言编写,依赖项仅有ffmpeg

简单配置

Linux

  • 完善依赖:
apt install -y ffmpeg p7zip-full

yum install -y ffmpeg p7zip

直接使用现成的包就好

  • 获取二进制文件
    以x64平台为例,为了简单起见,解压后我将文件重命名为了bililive-go
wget --no-check-certificate https://github.com/hr3lxphr6j/bililive-go/releases/download/0.22.12/bililive-go-linux-amd64.7z
7z x bililive-go-linux-amd64.7z && rm -rf config.yml && mv bililive-go-linux-amd64 bililive-go
:## config.yml在这里用不上,如果需要进阶使用可以保留并编辑
  • 使用(建议在Screen中运行或者使用nohup)
./bililive-go -i {直播间地址1} -i {直播间地址2} ... -i {直播间地址n} -o {输出目录} -t 5

-t是检查直播是否开始的间隔,可以适当调大一点;软件可以使用ctrl+c或者kill -2信号停止录制,并且得到一个正常的录播文件

Windows

  • 首先还是解决ffmpeg的依赖问题,从官网下载ffmpeg,下载最新的稳定release版本即可,并将其解压到某个文件夹;我这里是以前下载的ffmpeg4.1版本,找到解压后目录里的bin文件夹并打开,可以看到ffmpeg.exe的可执行文件,我们要将其所在目录添加到系统环境里,让bililive-go能够正常调用;
  • 如图所示添加环境变量
    <img src="https://p.sda1.dev/0/99a3337373b0eb25d1813ae9a3cfb8ac/167276453.png" alt="添加环境变量" title="添加环境变量"style="">
    如果一切正常,添加完成后在cmd中运行ffmpeg -version应该有类似下面的输出
    <img src="https://p.sda1.dev/0/29c035ca6c0ac8c42f305b6f638872be/1050238664.png" alt="检查ffmpeg" title="检查ffmpeg"style="">
  • 下载解压bililive-go,这里我同样将bililive-go-windows-amd64.exe重命名为了bililive-go.exe;并将文件复制到ffmpeg的bin目录内
  • win+R组合键打开cmd
  • 类似之前的格式运行bililive-go
    <img src="https://p.sda1.dev/0/ac86de1844519cfc8cb5d6ca71e265c8/264618499.png" alt="运行" title="运行"style="">

Linux下进阶使用(为什么没有win呢

作者在https://github.com/hr3lxphr6j/bililive-go/blob/master/docs/API.md 中提供了非常完善的web控制API,并且连如何注册成服务都甩到你脸上了,接下来我们就尝试将bililive-go注册成系统服务,并且通过外部脚本进行管理。
在简单配置的基础上,将二进制文件移动到/usr/bin目录下(匹配原作者给的服务文件写法)

mv bililive-go /usr/bin/
mkdir -p /etc/bililive-go/
echo "rpc:
enable: true
port: 127.0.0.1:6161
token: "填入你的token"
tls:
enable: false
cert_file: ""
key_file: ""
debug: false
interval: 5
out_put_path: /Record
" > /etc/bililive-go/config.yml
echo "[Unit]
Description=Live Stream Saver
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/bililive-go -c /etc/bililive-go/config.yml
Restart=on-failure

[Install]
WantedBy=multi-user.target" > /etc/systemd/system/bililive-go.service
systemctl daemon-reload
systemctl enable bililive-go.service
systemctl start bililive-go.service

正常情况下,netstat -tunlp | grep bililive-go命令将输出:
<img src="https://p.sda1.dev/0/8a35b51a9013b86bb54f0e3af66dbf00/2649736520.png" alt="Linux0.png" title="Linux0.png"style="">
我们希望这个服务可以远程调用,因此使用nginx进行一下反代……反代过程略
写了一个Python的简易控制程序……点击这里查看