这是一个用于 B 站录播的一站式工具,支持弹幕转换与视频压制并上传至B站,支持B站录播姬、blrec、DDTV的webhook。
如果你是录播man正在寻找xml弹幕转换、弹幕压制、webhook上传工具,如果你是切片man正在寻找下载b站视频工具,如果你厌倦了b站的多p上传,你可以来试试本软件。
做这款工具的初衷是为了解决录播工具的碎片化,往往想完整处理一场带有弹幕的录播要使用多个软件的配合,一些工具只有CLI,加大了使用难度。
你可以在B站查看使用教程
如果你使用了本软件,希望你在简介标注仓库地址或保留默认tag,本软件不存在任何数据追踪,我想大致知道使用使用人群及情况
- 支持录播姬与blrec的webhook自动化处理
- 支持 Danmafactory GUI 弹幕xml转换
- 支持根据弹幕切片
- 支持b站分P投稿
- 支持视频与弹幕压制
- 支持 ffmpeg 转码及转封装
- 支持B站视频下载
- 支持斗鱼录播及其弹幕下载
- 支持斗鱼、虎牙、B站直播录制
任何版本更新前请查看更新记录,避免破坏性更新带来的问题
最优先支持的是桌面程序,其余或多或少缺失了部分功能
不提供 MacOS 安装包,需要的可以自行编译,编译时需要替换用到的二进制文件。
由于我不在Linux开发,测试覆盖不广,如果存在问题可以提issue。
下载地址:https://github.com/renmu123/biliLive-tools/releases
备用阿里云盘:https://www.alipan.com/s/iRyhxjdqGeL
CLI的使用参考文档
下载地址:https://github.com/renmu123/biliLive-tools/releases
也可以使用npm i bililive-cli -g
来进行安装
尚未施工完成
由于软件并非针对web设计,无法保证安全性,请谨慎暴露在公网中
我们这里以本软件和录播姬共用作为示例:
你可以通过运行docker-compose up -d
来快速搭建
version: "3"
services:
# UI镜像
webui:
image: bililive-tools-webui
ports:
- "3000:3000"
# 接口镜像
api:
image: bililive-tools-backend
# ports:
# # 接口地址,按需启用
# - "18010:18010"
volumes:
# 映射的配置目录,用于持久化配置文件
- ./data:/app/data
# 用于处理webhook数据
- ./video:/app/video
environment:
# 登录密钥
- BILILIVE_TOOLS_PASSKEY=your_passkey
# 账户加密密钥
- BILILIVE_TOOLS_BILIKEY=your_bilikey
具体支持的环境变量见文档
你可以设置卷来进行数据持久化
./data:/app/data
TODO 字体
docker下由于存储和网络的隔离,webhook使用其他安装方式并不完全一致,我们这里以录播姬为例,其他服务类似:
运行之后打开录播姬的配置webhookV2为http://api:18010/webhook/bililiverecorder
,无须在软件中设置“录播姬工作目录”
version: "3.8"
services:
# UI镜像
webui:
image: bililive-tools-frontend
ports:
# 前者按需改动
- "3000:3000"
# 接口镜像
api:
image: bililive-tools-backend
# ports:
# # 接口地址,按需启用
# - "18010:18010"
volumes:
# 映射的配置目录,用于持久化配置文件
- ./data:/app/data
# 用于处理webhook数据,按需修改,和录播姬的参数一致
- ./video:/app/video
environment:
# 登录密钥,自行修改
- BILILIVE_TOOLS_PASSKEY=your_passkey
# 账户加密密钥,自行修改
- BILILIVE_TOOLS_BILIKEY=your_bilikey
recorder:
image: bililive/recorder:latest
restart: unless-stopped
volumes:
# 用于处理webhook数据,按需修改,和上述参数一致
- ./video:/rec
ports:
- "2356:2356"
# 第一个 2356 是宿主机的端口,可以根据自己需求改动。
# 第二个 2356 是容器内的端口,不要修改。
environment:
- BREC_HTTP_BASIC_USER=用户名
- BREC_HTTP_BASIC_PASS=密码
# 更多参数见录播姬文档
可用于国内未备案机器,或懒得自部署的情况,由于浏览器安全措施,需要关闭https和http混合的安全选项,或者选择自签名,或者自部署,自部署参考项目
密钥为appConfig.json
的passKey
字段
线上地址:https://bililive.irenmu.com
默认webhook地址:http://127.0.0.1:18010/webhook/bililiverecorder
需要在本软件的“设置-webhook-录播姬工作目录”设置录播的工作目录
默认webhook地址:http://127.0.0.1:18010/webhook/blrec
依赖于“视频文件创建”,“视频文件完成”两个webhhook,建议直接勾选全部事件。
默认webhook地址:http://127.0.0.1:18010/webhook/custom
需要将DDTV的软件“设置-文件与路径设置-录制文件保存路径”设置为绝对路径,打开弹幕录制。
由于DDTV的webhook返回参数的非常扭曲难用,无法保证任意配置下的可用性
如果想接入webhook相关功能,你可以自行构造参数并调用接口,采用post
方法,端口为/webhook/custom
,接收后立刻返回http code=200。
参数:
event
: FileClosed
|FileOpening
(如果你想使用断播续传功能,请在上一个FileClosed
事件后在设置的时间间隔内发送FileOpening
事件)
filePath
: 视频文件的绝对路径
coverPath
: 可选,视频封面的绝对路径,如果为空,会读取与视频文件名相同的后缀为jpg
的文件
danmuPath
: 可选,视频弹幕xml
文件,如果为空,会读取与视频文件名相同的xml
文件
roomId
: 数字类型,房间号,用于断播续传
time
: 用于标题格式化的时间,示例:"2021-05-14T17:52:54.946"
title
: 标题,用于格式化视频标题
username
:主播名称,用于格式化视频标题
以下参数用于弹幕分析功能,非必要
有些弹幕中存在元数据(参考blrec)的会被自动解析,比如弹幕姬或blrec或douyu-cli(0.6.1及以上)生成的弹幕
platform
:平台,如果是b站推荐为bilibili
,斗鱼推荐为douyu
,其实填啥都可以
live_start_time
:直播开始时间,示例:"2021-05-14T17:52:54.946"
live_title
:直播标题
示例:
curl --location 'http://127.0.0.1:18010/webhook/custom' \
--header 'Content-Type: application/json' \
--data '{
"event":"FileClosed",
"filePath":"D:\\aa.mp4",
"coverPath":"D:\\aa.jpg",
"danmuPath":"D:\\aa.xml",
"roomId":93589,
"time":"2021-05-14T17:52:54.946",
"title":"我是猪",
"username":"djw"
}'
这个功能主要用于解决:由于网络或者设置分段原因导致录播片段被切割成多个。
开启后,会将主播的一场直播上传到同一个视频中
一场直播的定义:同一个主播,本次文件创建时间与上一个文件结束写入时间如果相差n分钟(使用配置),那么会被定义为一场直播,不会使用webhook中比如录播姬的session定义。
开启录制后,或反复切换开关,可能会有奇怪的错误。
如果出现bug,将设置中的日志等级调整为debug
后复现然后进行反馈。
xml弹幕转换底层使用DanmakuFactory,B站弹幕确认可以使用,其余类型请自行测试。
部分功能如自适应分辨率
用于局部渲染带有弹幕的视频,支持lossless-cut项目导入
ctrl+s
保存到llc项目ctrl+shift+s
另存为llc项目ctrl+enter
导出ctrl+z
撤销ctrl+shift+z
重做I
在当前时间开始当前片段O
在当前时间结束当前片段up
上一个片段down
下一个片段del
删除片段space
播放/暂停ctrl+left
后退1秒ctrl+right
前进1秒ctrl+k
切换视图
使用通知功能时,请妥善保存所有信息,请勿分享给他人,本软件不会发送任何信息到任何服务器
使用smtp服务来发送邮件,每个邮件服务商的参数各不相同,使用请自行参照各服务商的教程。
serer酱支持免费推送信息到手机微信,免费账户有限制。
使用tg bot发送信息时默认使用系统代理。
tg bot 的搭建请自行寻找教程
你可以使用二进制文件或者使用npm i bililive-cli -g
进行安装。
具体文档参考页面
windows下环境变量修改后可能需要重启电脑方能生效
可以使用环境变量BILILIVE_TOOLS_BILIKEY
自定义账号密钥,自定义前请先退出原有全部账号。
通过环境变量BILILIVE_TOOLS_PASSKEY
自定义登录密钥
1.5.0起 Webhook 标题支持ejs模板引擎,具体语法参考文档,如果标题超过80字,会被自动截断,会优先执行模板引擎,之后会对{{}}
占位符进行替换,如果有语法错误,会被跳过,优先保证上传。
// 以下为支持注入的参数
{
title: string; // 直播间标题
user: string; // 主播名称
time: Date; // 直播开始时间
roomId: number | string; // 房间号
}
示例:<%= user %>-<%= time.getFullYear() %><%= String(time.getMonth() + 1).padStart(2, "0") %>直播录像
渲染结果:djw-202408直播录像
我也不知道
如果你是一个小白,先根据自己的硬件选择对应的编码,推荐使用crf或cq等质量模式的默认参数,压制后查看视频大小,压制时间,画质,接下来调整参数,以满足你的需求,没有最好的参数,只有最合适的参数,不同视频,不同场景可能合适的参数都不一致。
进阶请自行搜索ffmpeg相关的教程
请尝试更新显卡驱动,如果更新到最新后还无法使用,请尝试手动更换ffmpeg可执行文件为6.0
请关闭该功能,使用本软件的“转封装为mp4”功能
上传任务分为三个阶段,只有第二个阶段是支持暂停的:
- 获取上传基础信息
- 文件切片上传
- 文件合并,调用提交接口
下载任务分为三个阶段,只有第二个阶段是支持暂停的:
- 获取下载文件基础信息
- 文件切片下载
- 文件合并
该功能会每隔一段时间(自行设置)会查询一次投稿中心的前20个稿件,如果为本软件投稿且开启了自动评论的已审核非续传稿件,会进行自动评论,如果一个稿件24小时内状态不为审核通过,那么这个稿件将被移出队列。
如果你的稿件不为以上情况却未进行投稿,请提issue
进入队列,查看任务最后一栏的速率,可以根据速率调整压制参数
压制之后查看log
- 手动暂停的任务不会被自动启动
- 高能进度条任务会自动进行,因为速度会很快
zip包并非传统意义上的绿色包,数据和安装包文件的不会存放在同一个文件夹中,如果你尝试使用安装包后使用压缩包,可能会导致二进制文件的路径错误从而无法使用,请尝试在设置中手动修改二进制文件路径。
如果你想将数据放在同一个文件夹内,请��可执行文件所在文件夹创建一个portable
文件,无拓展名如.txt
,更改后重启应用,如有需要可以新建文件前在设置中备份设置。
请不要在直播开始后修改相应的配置,比如标题,断播续传等配置,本场直播可能并不会生效
如果在使用 docker 时遇到 EISDIR: illegal operation on a directory, read
错误,通常是因为某个文件路径被误认为是目录。请检查你的 docker-compose.yml
文件中的卷映射配置,确保文件路径和目录路径正确区分。
例如:
- 支持使用ffmpeg压制弹幕至视频文件
- 工具页面
- 支持ffmpeg不同cpu,gpu以及相关配置
- 支持使用danmufactory自动处理xml文件并进行压制
- 工具页面,danmufactory的GUI
- 工具页面,flv的转封装
- 支持视频合并
- 下载页面
- 支持切片
- log记录及其展示
- 配置持久化,压制高能进度条
- B站上传支持
- 移除biliup二进制文件依赖
- 支持分p
- 多账户支持
- webhook支持
- 录播姬webhook支持
- blrec webhook支持
- 支持自动上传
- 支持弹幕压制
- 断播续传
- 支持自定义ffmpeg以及ffprobe
- 斗鱼直播录制
- 弹幕分析
交流群:872011161
node版本根据.node-version
来进行选择
$ pnpm install
$ pnpm run install:bin
弹幕分析
功能依赖于better-sqlite3
,如果你无法编译安装,尝试安装visual-studio2022中的c++相关工具,以及python3(也许)。
如果你是Win,你还可能遇到报错比如cause=fork/exec %1 is not a valid Win32 application.
,根据提示修改pnpm源文件,如果应用无法启动,尝试使用electron-rebuild。
如果你最后还是无法安装,尝试在项目根目录运行node scripts\github-ci-better-sqlite3.js
手动安装依赖。
如果二进制依赖安装失败或者不支持你的平台,请尝试手动下载安装二进制依赖,最新版本为距离当前版本最近的版本。
新建packages\app\resources\bin
文件夹,里面需要三个文件。
同时需要在应用的设置里设置相关可执行文件地址。
pnpm run dev
# APP应用,如果需要分发也可以在github action进行自动编译
$ pnpm run build:app
# CLI应用
$ pnpm run build:cli
# docker
# 相关文件在`docker`文件夹下
为github actions自动编译
地址:https://github.com/renmu123/biliLive-webui
如果本项目对你有帮助,请我喝瓶快乐水吧,有助于项目更好维护。
爱发电:https://afdian.com/a/renmu123
你也可以给我的 B 站帐号 充电
GPLv3