这是一个前后端分离的 B 站直播录制工具。前端使用了响应式设计,可适应不同的屏幕尺寸;后端是用 Python 写的,可以跨平台运行。
这个工具是自动化的,会自动完成直播的录制, 在出现未处理异常时会发送通知,空间不足能够自动回收空间,还有详细日志记录,因此可以长期无人值守运行在服务器上。
- danmaku_client完全放弃自带的弹幕实现,改用bilibli-api-python提供弹幕信息
- pip requirements:
aiofiles==22.1.0
aiohappyeyeballs==2.4.4
aiohttp==3.11.10
aiosignal==1.3.2
anyio==4.7.0
APScheduler==3.11.0
async-timeout==5.0.1
attrs==21.4.0
av==10.0.0
beautifulsoup4==4.13.4
bilibili-api-python==17.2.1
bitarray==2.9.3
Brotli==1.1.0
brotli-asgi==1.3.0
certifi==2024.12.14
charset-normalizer==3.4.0
click==8.0.4
colorama==0.4.6
dnspython==2.7.0
email-validator==1.3.1
exceptiongroup==1.2.2
fastapi==0.88.0
frozenlist==1.5.0
h11==0.14.0
httptools==0.6.4
humanize==3.14.0
idna==3.10
importlib_resources==6.4.5
iso8601==2.1.0
jsonpath==0.82
loguru==0.7.3
lxml==5.4.0
lxml_html_clean==0.4.2
m3u8==3.6.0
multidict==6.1.0
ordered-set==4.1.0
pillow==11.2.1
propcache==0.2.1
psutil==5.9.8
pycryptodomex==3.23.0
pydantic==1.10.19
PyJWT==2.10.1
python-dateutil==2.9.0.post0
python-dotenv==1.0.1
python-liquid==1.12.1
PyYAML==6.0.2
qrcode==8.2
qrcode-terminal==0.8
reactivex==4.0.4
requests==2.32.3
six==1.17.0
sniffio==1.3.1
soupsieve==2.7
starlette==0.22.0
tenacity==8.5.0
toml==0.10.2
tqdm==4.67.1
typer==0.7.0
typing_extensions==4.12.2
tzlocal==5.3.1
urllib3==2.2.3
uvicorn==0.20.0
uvloop==0.21.0
watchfiles==1.0.3
websockets==14.1
yarl==1.20.1
- 然后使用
pip install . --no-deps
即可
- 自动完成直播录制
- 同步保存弹幕
- 自动修复时间戳问题:跳变、反跳等。
- 直播流参数改变自动分割文件,避免出现花屏等问题。
- 流中断自动拼接且支持 无缝 拼接,不会因网络中断而使录播文件片段化。
flv
文件添加关键帧等元数据,使定位播放和拖进度条不会卡顿。- 可选录制的画质
- 可自定义文件保存路径和文件名
- 支持按文件大小或时长分割文件
- 支持转换
flv
为mp4
格式(需要安装ffmpeg
) - 硬盘空间检测并支持空间不足自动删除旧录播文件。
- 事件通知(支持邮箱、
ServerChan
、PushDeer
、pushplus
、Telegram
、Bark
) Webhook
(可配合REST API
实现录制控制,录制完成后压制、上传等自定义需求)
Python 3.8+
ffmpeg、 ffprobe
-
通过 pip 或者 pipx 安装
pip install blrec
或者pipx install blrec
使用的一些库需要自己编译,Windows 没安装 C / C++ 编译器会安装出错, 参考 Python Can't install packages 先安装好 Microsoft C++ Build Tools。
-
免安装绿色版
支持 Windows 10+ 或 Windows Server 2016+,下载后解压运行
run.bat
或run.ps1
。不是官方或最新系统可能需要安装系统更新或缺少的
C
或C++
运行时库下载
- Releases: https://github.com/acgnhiki/blrec/releases
- 网盘: https://gooyie.lanzoui.com/b01om2zte 密码: 2233
-
通过 pip 或者 pipx 安装的用以下方式更新
pip install blrec --upgrade
或者pipx upgrade blrec
-
免安装绿色版
- 下载并解压新版本
- 确保旧版本已经关闭退出以避免之后出现端口冲突
- 把旧版本的设置文件
settings.toml
复制并覆盖新版本的设置文件 - 运行新版本的
run.bat
-
通过 pip 或者 pipx 安装的用以下方式卸载
pip uninstall blrec
或者pipx uninstall blrec
-
免安装绿色版
删除解压后的文件夹
- 默认设置文件位置:
ENV BLREC_DEFAULT_SETTINGS_FILE=/cfg/settings.toml
- 默认日志存放目录:
ENV BLREC_DEFAULT_LOG_DIR=/log
- 默认录播存放目录:
ENV BLREC_DEFAULT_OUT_DIR=/rec
- 默认时区:
ENV TZ="Asia/Shanghai"
sudo docker run -v /etc/blrec:/cfg -v /var/log/blrec:/log -v ~/blrec:/rec -dp 2233:2233 acgnhiki/blrec
sudo docker run \
-v /etc/blrec:/cfg -v /var/log/blrec:/log -v ~/blrec:/rec \
-dp 2233:2233 acgnhiki/blrec \
-c /cfg/another_settings.toml \
--key-file path/to/key-file \
--cert-file path/to/cert-file \
--api-key bili2233
blrec --help
在命令行终端里执行 blrec
,然后浏览器访问 http://localhost:2233
。
默认设置文件位置:~/.blrec/settings.toml
默认日志文件目录: ~/.blrec/logs
默认录播文件目录: .
blrec -c path/to/settings.toml -o path/to/records --log-dir path/to/logs
如果指定的设置文件不存在会自动创建
命令行参数会覆盖掉设置文件的对应的设置
默认为本地运行,主机和端口绑定为: localhost:2233
需要外网访问,把主机绑定到 0.0.0.0
,端口绑定则按照自己的情况修改。
例如:blrec --host 0.0.0.0 --port 8000
指定 SSL
证书使用 https 协议并指定 api key
可防止被恶意访问和泄漏设置里的敏感信息
例如:blrec --key-file path/to/key-file --cert-file path/to/cert-file --api-key bili2233
如果指定了 api key,浏览器第一次访问会弹对话框要求输入 api key。
输入的 api key 会被保存在浏览器的 local storage
以避免每次都得输入
如果在不信任的环境下,请使用浏览器的隐式模式访问。
api key 可以使用数字和字母,长度限制为最短 8 最长 80。
3 次尝试内 api key 正确客户端 ip 会自动加入白名单,3 次错误后则 ip 会被加入黑名单,黑名单后请求会被拒绝 (403)。
黑名单和白名单数以及同时尝试连接的 ip 数量限制各为 100,黑名单或白名单到达限制后不再接受除了白名单内的其它 ip 。
只有重启才会清空黑名单和白名单。
uvicorn blrec.web:app
或者
hypercorn blrec.web:app
作为 ASGI 应用运行,参数通过环境变量指定。
BLREC_CONFIG
指定设置文件BLREC_OUT_DIR
指定录播存放位置BLREC_LOG_DIR
指定日志存放位置BLREC_API_KEY
指定api key
BLREC_CONFIG=path/to/settings.toml BLREC_OUT_DIR=path/to/dir BLREC_API_KEY=******** uvicorn blrec.web:app --host 0.0.0.0 --port 8000
set BLREC_CONFIG=D:\\path\\to\\config.toml & set BLREC_OUT_DIR=D:\\path\\to\\dir & set BLREC_API_KEY=******** uvicorn blrec.web:app --host 0.0.0.0 --port 8000
程序在运行过程中会触发一些事件,如果是支持 webhook
的事件,就会给所设置的 webhook
网络地址发送 POST 请求。
关于支持的事件和 POST
请求所发送的数据,详见 wiki。
后端 web
框架用的是 FastApi
, 要查看自动生成的交互式 API
文档,访问 http://localhost:2233/docs
(默认主机和端口绑定)。
前端其实是一个渐进式网络应用,可以通过地址栏右侧的图标安装,然后像原生应用一样从桌面启动运行。
注意:PWA 要在本地访问或者在 https
下才支持。
-
克隆代码
git clone https://github.com/acgnhiki/blrec.git
-
进入项目目录
cd blrec
-
创建虚拟环境
python3 -m venv .venv
-
激活虚拟环境
source .venv/bin/activate
-
以可编辑方式安装
pip install -e .[dev]
-
修改代码
……
-
运行 blrec
blrec
-
退出虚拟环境
deactivate
名称 | 链接 | 简介 |
---|---|---|
录播姬 | 官网 | 简单易用成熟稳定的 B 站直播录制工具 |
rclone | 官网 | 可以挂载网盘用于存放录播文件 |
alist | 官网 | 网盘文件浏览、播放 |
filebrowser | 官网 | 服务器文件管理 |