更新日志2023-02-06 替换systemd持久化运行方式为pm2
广告
明明加了特别关注,Bilibili 却从不提醒;明明天天刷 B 站,却总是刷不到正在直播的 TA……
你,是否有这样的烦恼?你,是否为此感到困惑?
现在,录播姬来了!让你不再错过任何一场直播!就算一时有事,也能记录下这美好时刻!
录播姬打钱
前言
咳咳,说回正题。
老是错过哔哩哔哩上的直播,为此我很是苦恼。
都说遇事不决量子力学就上 Github。于是,我找到了这款优秀的开源项目:录播姬 | BiliBili Stream Recorder
这个开源项目完整度极高,多平台支持,所以没有服务器的同学也不用担心用不了,只是稍微麻烦点。
那就简单说说如何使用和配置通知服务吧~
安装、配置&使用(仅简要说明,官方文档更详细)
下载
录播姬官方网站 提供可以自动更新的编译版本。自行根据系统架构选择即可 (Github 上录播姬 Linux amd64 版本安装包)
安装
本教程默认下载后的安装包名为BililiveRecorder-CLI-linux-x64.zip, 安装目录为brec, 程序目录为brec/work, 工作目录为brec/file
使用 Systemd 作为后台运行服务,为保证安全以用户brec运行
本教程中运行系统为Debian
准备
apt updateapt upgradeapt install zip -y #安装后续所需软件
useradd brec #创建用户 brec
mkdir -p brec/file brec/workchown -R brec:brec brec #将 brec 目录所有权转移给用户 brecsu brec #切换到用户 brec
cd brec/workunzip BililiveRecorder-CLI-linux-x64.zipmv BililiveRecorder.Cli brecchmod +x brec./brec --version #检查录播姬是否能正常运行exit #退出用户 brec配置 Systemd 运行
nano /etc/systemd/system/brec.service #创建 Systemd 服务文件brec.service 文件模板如下:
[Unit]Description=BililiveRecorderAfter=network.target
[Service]User=brecExecStart=<dir>/brec/work/brec run --bind "http://*:23567" --http-basic-user "<username>" --http-basic-pass "<password>" "<dir>/brec/file"
[Install]WantedBy=multi-user.target模板内共有四个占位符,两个重复:
<dir>表示brec文件夹所在目录<username>表示开启 http 访问后认证的用户名<password>表示开启 http 访问后认证的密码
编辑完 systemd 服务文件并保存后,别忘了systemctl daemon-reload来重载 Systemd
接下来开启 brec 服务systemctl start brec, http 服务将会在 23567 端口开放
如果需要开机启动就
systemctl enable brec
担心安全问题或者想开启域名访问,用Caddy反代开启tls即可
配置
录播姬的配置说明非常简单且详尽,不需要更多的解释和说明
自动脚本实现通知、转码、上传
虽然我们已经配置好录播姬,也可以很轻松地添加房间号、自动录制了。但作为一个懒人,没有提醒、自动上传分类、弹幕转码怎么行!
这个板块主要分享一个小脚本,涵盖 Telegram 提醒、弹幕转码、Rclone 自动上传网盘等功能
代码开源在 Github,本文内容可能不会及时更新,以托管在 GitHub 内的最新版本为准
下载
git clone https://github.com/Morax-xyc/Bililiveauto基本原理
首先需要监听录播姬的 Webhook, 所以选 JavaScript 为语言,Nodejs 为运行时环境
使用 express web 框架作为接受服务器,代码如下:
const dotenv = require("dotenv")dotenv.config()const express = require(’express‘);const app = express();
app.use(express.json({ extended: false }));app.post(’/bililive‘, function (req, res) { res.sendStatus(200);})
var server = app.listen(process.env.port, function () {
var host = server.address().address var port = server.address().port
console.log("BiliLiveAuto脚本正在运行, 地址为 http://%s:%s", host, port);})其中引入了dotenv库来读取.env作为配置文件
接收完录播姬传递的webhook,根据其中EventType的值来判断录播姬传递的事件类型
switch(req.body.EventType) { case "FileClosed": <略> break; case "StreamStarted": <略> break; case "SessionStarted": <略> break; case "StreamEnded": <略> break; default: console.log("Webhook: 判断类型: " + req.body.EventType + " => 提醒未发送"); };如果接收到开播、下播、录制的webhook,就通过tgnotice.js模块通知;接收到”文件关闭”的webhook,就启动runbash.js模块来运行bash指令转码、上传
配置
此脚本使用.env文件作为配置文件,模板如下:
#runport=8081rclonedir=od:/Bililive # rclone中配置的上传地址danmufc=/home/danmu/DM # danmakufactory编译后的二进制文件workdir=/home/bililiveauto # 脚本所在文件夹bilifile=/home/brec/file # 录播姬的工作目录
#TelegramTG_CHAT_ID=12345678 # Telegram IDTG_TOKEN=9876543:abcdeffhijklmnopqrstuvwxyz # Telegram Bot Token
#功能开关
#是否上传原始文件?true/falseuploadorigin=false
#是否删除本地文件?true/falsedeletelocal=true通知
本脚本使用Telegram来通知,只需要向@userinfobot发送任意消息即可得到Telegram ID; 向@BotFather申请Bot获得Bot Token
最后将两者填入配置文件即可
最终步骤当然要记得私聊一下你的bot
弹幕处理
弹幕处理使用了一个叫DanmakuFactory的项目
配置文件中的danmufc就需要自行编译DanmakuFactory后填入编译好的二进制文件地址
请在编译完成后自行配置并加上--save参数保存json文件以便使用。也可以使用下面我的配置:
{ "resolution": [1920, 1080], "scrolltime": 12.000000, "fixtime": 5.000000, "density": -1, "fontname": "Microsoft YaHei", "fontsize": 38, "opacity": 180, "outline": 0, "shadow": 1, "displayArea": 0.300000, "scrollArea": 0.300000, "bold": false, "showUsernames": false, "showMsgbox": false, "msgboxSize": [500, 1080], "msgboxPos": [10, 0], "msgboxFontsize": 35, "giftMinPrice": 0.00, "blockmode": ["Btm","Special","Repeat"], "statmode": []}保存在编译好的二进制文件所在目录下的DanmakuFactoryConfig.json即可
本配置去除所有特殊弹幕、只在30%的屏幕上显示弹幕、共显示12秒、去除重复弹幕
自动转封装
本脚本使用FFmpeg来处理视频文件
录播姬录制下来的文件为flv格式,但编码却是h264,所以可以很方便地转封装为mkv格式
自动上传
自动上传使用rclone
安装脚本:
curl https://rclone.org/install.sh | sudo bash配置及使用建议Google一下,教程太多就不反复造轮子了
运行
运行本脚本需要先安装nodejs
建议使用nvm脚本快速安装
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bashnvm install --lts然后在此脚本目录运行node server.js即可
pm2持久化运行
安装pm2
npm install pm2 -g运行bililiveauto
pm2 start server.js --name bililiveauto配置pm2开机自启 root用户全自动,非root用户请执行命令后根据提示复制命令执行
pm2 startup储存当前服务列表并加入自启
pm2 save此致,你的bililiveauto将自动在后台运行并在重启时自启。可使用pm2 status查看服务状态,pm2 logs bililiveauto查看日志,pm2 monit打开状态监视器。
最后一步
在录播姬的设置里, 将地址填入”webhook v2”即可, 如”http://127.0.0.1:8081”