This is a one-stop tool for recording and broadcasting at Bilibili. It supports barrage conversion and video suppression and uploading to Bilibili. It also supports webhooks of Recorder and blrec.
If you are a recording man looking for xml barrage conversion, barrage suppression, and webhook upload tools, if you are a slicing man looking for a tool for downloading videos from site B, and if you are tired of multi-p uploads at site B, you can give it a try this software.
The original intention of making this tool is to solve the fragmentation of recording and broadcasting tools. Often, if you want to completely process a recording and broadcasting with barrage, you need to use the cooperation of multiple software. Some tools only have CLI, which increases the difficulty of use.
You can view the usage tutorial at Station B
If you have used this software, I hope you will mark the warehouse address in the introduction or keep the default tag. This software does not have any data tracking. I would like to know roughly the users and their situation.
Update history
Supports automated webhook processing for Recorder and blrec
Support Danmufactory GUI barrage xml conversion
Support slicing based on barrages
Support B station sub-P submission
Support video and barrage suppression
Support ffmpeg transcoding and transcapsulation
Support B station video download
Support Douyu recording and barrage downloads
There is no MacOS installation package provided. If you need it, you can compile it yourself. The binary files used need to be replaced during compilation.
Since I am not developing on Linux, the test coverage is not limited. If there are any problems, you can raise an issue.
CLI usage reference documentation
Download address: https://github.com/renmu123/biliLive-tools/releases
Backup: https://www.alipan.com/s/iRyhxjdqGeL
This function is mainly used to solve the problem of recording and broadcasting segments being cut into multiple segments due to network or segmentation settings.
After it is turned on, a live broadcast of the host will be uploaded to the same video. The definition of a live broadcast: for the same host, if there is a difference of n minutes between the creation time of this file and the end writing time of the previous file (using configuration), then It is defined as a live broadcast, and the session definition in webhook such as Luboji will not be used.
After turning on recording, or switching the switch repeatedly, there may be strange errors.
If a bug occurs, adjust the log level in the settings to debug
reproduce it, and provide feedback.
DanmakuFactory is used as the bottom layer of xml barrage conversion. Station B’s barrage is confirmed to be usable. Please test other types by yourself.
Some features such as adaptive resolution
Used to partially render videos with barrage, supporting lossless-cut project import
ctrl+s
save to llc project
ctrl+shift+s
save as llc project
ctrl+enter
to export
ctrl+z
undo
ctrl+shift+z
redo
I
start the current segment at the current time
O
ends the current segment at the current time
up
previous clip
down
segment
del
delete fragment
space
play/pause
ctrl+left
goes back 1 second
ctrl+right
goes forward 1 second
ctrl+k
switch view
When using the notification function, please keep all information properly and do not share it with others. This software will not send any information to any server.
Use the smtp service to send emails. The parameters of each email service provider are different. Please refer to the tutorials of each service provider.
Serer Jiang supports free push information to mobile WeChat, and free accounts have restrictions.
Official website: https://sct.ftqq.com/
The system proxy is used by default when sending information using tg bot.
To build tg bot, please find tutorials by yourself.
Official website: https://docs.ntfy.sh/
If you want to access webhook related functions, you can construct parameters and call the interface by yourself, use the post
method, the port is /webhook/custom
, and return http code=200 immediately after receiving it.
Parameters: event
: FileClosed
| FileOpening
(If you want to use the resumption function, please send the FileOpening
event within the set time interval after the last FileClosed
event)
filePath
: the absolute path of the video file coverPath
: the absolute path of the video cover. If it is empty, a file with the same suffix as jpg
as the video file name will be read. It is supported to be empty.
danmuPath
: video barrage xml
file. If it is empty, an xml
file with the same name as the video file will be read. It is supported to be empty.
roomId
: numeric type, room number, used for resuming the broadcast
time
: time used for title formatting, example: "2021-05-14T17:52:54.946"
title
: title, used to format the video title
username
: host name, used to format the video title
The following parameters are used for the barrage analysis function. If it is not necessary, some barrages that contain metadata (refer to blrec) will be automatically parsed, such as the barrage platform
generated by Danmakuji or blrec or douyu-cli (0.6.1 and above). :Platform, if it is Bilibili, it is recommended as bilibili
, Douyu recommends it as douyu
, in fact, you can fill in anything.
live_start_time
: Live broadcast start time, example: "2021-05-14T17:52:54.946" live_title
: Live broadcast title
Example:
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":"I am a pig", "username":"djw"}'
You can install it using binaries or using npm i bililive-cli -g
.
Specific document reference page
If this project is helpful to you, please buy me a bottle of happy water to help the project be better maintained.
Afdian: https://afdian.com/a/renmu123
You can also recharge my Bilibili account
Starting from 1.5.0, the Webhook title supports the ejs template engine. Please refer to the documentation for specific syntax. If the title exceeds 80 words, it will be automatically truncated and the template engine will be executed first. Then the {{}}
placeholder will be replaced. If there is a grammatical error , will be skipped and uploaded first.
//The following are the parameters that support injection{ title: string; // Live broadcast room title user: string; // Host name time: Date; // Live broadcast start time roomId: number | string; // Room number}
Example: <%= user %>-<%= time.getFullYear() %><%= String(time.getMonth() + 1).padStart(2, "0") %>直播录像
rendering result: djw-202408直播录像
I don't know either
If you are a novice, first select the corresponding encoding according to your own hardware. It is recommended to use the default parameters of quality modes such as crf or cq. After compression, check the video size, compression time, and image quality, and then adjust the parameters to meet your needs. According to the requirements, there are no best parameters, only the most suitable parameters. Different videos and different scenes may have different suitable parameters.
To advance, please search for ffmpeg-related tutorials.
Please try to update the graphics card driver. If it still cannot be used after updating to the latest, please try to manually change the ffmpeg executable file to 6.0, or use a version below 1.0.0
Relying on the two webhhooks "Video File Creation" and "Video File Completion", it is recommended to directly check all events.
Please turn off this function and use the "transcapture to mp4" function of this software
The upload task is divided into three stages, and only the second stage supports pause:
Get basic upload information
File slice upload
Merge files and call the submission interface
The download task is divided into three stages, and only the second stage supports pause:
Get basic information about downloaded files
File slice download
File merge
This function will query the first 20 manuscripts in the submission center every ten minutes. If you submit a manuscript to this software and have automatic comments turned on for reviewed non-renewable manuscripts, automatic comments will be made. If the status of a manuscript within 24 hours is not If the review is passed, the manuscript will be removed from the queue.
If your manuscript does not meet the above conditions but has not been submitted, please file an issue.
Enter the queue and view the rate in the last column of the task. You can adjust the suppression parameters based on the rate.
Check the log after suppression
Currently, the maximum number of ffmepg tasks and Douyu video download tasks are supported. They can be set in "Settings-Tasks-FFmpeg Maximum Number of Tasks". The default is no limit.
Manually paused tasks will not be automatically started
High-energy progress bar tasks will be automated because they will be very fast
The zip package is not a green package in the traditional sense. The data and installation package files are not stored in the same folder. If you try to use the installation package and then use the compressed package, the path of the binary file may be incorrect and cannot be used. Please Try modifying the binary path manually in settings.
If you want to put the data in the same folder, please create a portable
file in the folder where the executable file is located, without an extension such as .txt
. Restart the application after changing it. If necessary, back up the settings in the settings before creating a new file. .
Please do not modify the corresponding configuration after the live broadcast starts, such as title, resumption of broadcast and other configurations. This live broadcast may not take effect.
Support using ffmpeg to suppress barrages to video files
Tools page
Supports different cpu, gpu and related configurations of ffmpeg
Supports using danmufactory to automatically process xml files and suppress them
Tools page, GUI of danmufactory
Tool page, flv repackaging
Support video merging
Download page
Support slicing
Log records and display
Configure persistence and suppress high-energy progress bars
B station upload support
Remove biliup binary file dependency
Support sub-p
Multiple account support
webhook support
Luboji webhook support
blrec webhook support
Support automatic upload
Support barrage suppression
resume broadcast
Support custom ffmpeg and ffprobe
Douyu recording
Barrage analysis
Communication group: 872011161
Please use node version 20 and above.
$ pnpm install $ pnpm run install:bin
The弹幕分析
function depends on better-sqlite3
. If you cannot compile and install, try to install the c++ related tools in visual-studio2022, and python3 (maybe). If you are Win, you may also encounter errors such as cause=fork/exec %1 is not a valid Win32 application.
Modify the pnpm source file according to the prompts. If the application cannot be started, try to use electron-rebuild. If you still cannot install it in the end, try running node scriptsgithub-ci-better-sqlite3.js
in the project root directory to install the dependencies manually.
If the installation of binary dependencies fails or your platform is not supported, please try to download and install the binary dependencies manually.
Create a new packagesappresourcesbin
folder, which requires three files. At the same time, you need to set the relevant executable file address in the application settings.
DanmukuFactory.exe
self-compiled version
ffmpeg.exe
n7.0
ffprobe.exe
n7.0
pnpm run dev
# APP application $ pnpm run build:app # APP application without ffmpeg binary file $ pnpm run build:app:no-ffmpeg # CLI application $ pnpm run build:cli
GPLv3