Skip to main content

Bilibili Live Streaming Recorder

Project description

Bilibili Live Streaming Recorder (blrec)

这是一个前后端分离的 B 站直播录制工具。前端使用了响应式设计,可适应不同的屏幕尺寸;后端是用 Python 写的,可以跨平台运行。

这个工具是自动化的,会自动完成直播的录制, 在出现未处理异常时会发送通知,空间不足能够自动回收空间,还有详细日志记录,因此可以长期无人值守运行在服务器上。

屏幕截图

webapp

terminal

功能

  • 自动完成直播录制
  • 同步保存弹幕
  • 自动修复时间戳问题:跳变、反跳等。
  • 直播流参数改变自动分割文件,避免出现花屏等问题。
  • 流中断自动拼接且支持 无缝 拼接,不会因网络中断而使录播文件片段化。
  • flv 文件注入关键帧等元数据,定位播放和拖进度条不会卡顿。
  • 可选录制的画质
  • 可自定义文件保存路径和文件名
  • 支持按文件大小或时长分割文件
  • 支持转换 flvmp4 格式(需要安装 ffmpeg
  • 硬盘空间检测并支持空间不足自动删除旧录播文件。
  • 事件通知(支持邮箱、ServerChanpushplus
  • Webhook(可配合 REST API 实现录制控制,录制完成后压制、上传等自定义需求)

先决条件

Python 3.8+
ffmpeg (如果需要转换 flv 为 mp4)

安装

  • 通过 pip 安装

    pip install blrec

    用到的一些库需要 C 编译器,Windows 没 C 编译器会安装出错, 使用以下方式先安装已编译好的库然后再按照上面的安装。

    pip install -r windows-requirements.txt

  • 免安装绿色版

    Windows 64 位系统用户也可以用打包好的免安装绿色版,下载后解压运行 run.bat 即可。

    下载

更新

  • 通过 pip 安装的用以下方式更新

    pip install blrec --upgrade

  • 免安装绿色版

    • 下载并解压新版本
    • 确保旧版本已经关闭退出以避免之后出现端口冲突
    • 把旧版本的设置文件 settings.toml 复制并覆盖新版本的设置文件
    • 运行新版本的 run.bat

使用方法

使用默认设置文件和保存位置

在命令行终端里敲入 blrec 并回车运行,然后在浏览器访问 http://localhost:2233

设置文件为 toml 文件,默认位置在 ~/.blrec/settings.toml。默认录播文件保存位置为当前工作目录 .

指定设置文件和保存位置

blrec -c path/to/settings.toml -o dirpath/to/save/files

如果指定的设置文件不存在会自动创建。通过命令行参数指定保存位置会覆盖掉设置文件的设置。

绑定主机和端口

默认为本地运行,主机和端口绑定为: 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 以避免每次都得输入

如果在不信任的环境下,请使用浏览器的隐式模式访问。

作为 ASGI 应用运行

uvicorn blrec.web:app

或者

hypercorn blrec.web:app

作为 ASGI 应用运行,参数通过环境变量指定。

  • config 指定设置文件
  • out_dir 指定保存位置
  • api_key 指定 api key

bash

config=path/to/settings.toml out_dir=path/to/dir api_key=******** uvicorn blrec.web:app --host 0.0.0.0 --port 8000

cmd

set config=D:\\path\\to\\config.toml & set out_dir=D:\\path\\to\\dir & set api_key=******** uvicorn blrec.web:app --host 0.0.0.0 --port 8000

Webhook

程序在运行过程中会触发一些事件,如果是支持 webhook 的事件,就会给所设置的 webhook 网络地址发送 POST 请求。

关于支持的事件和 POST 请求所发送的数据,详见 wiki。

REST API

后端 web 框架用的是 FastApi , 要查看自动生成的交互式 API 文档,访问 http://localhost:2233/docs (默认主机和端口绑定)。

Progressive Web App(PWA)

前端其实是一个渐进式网络应用,可以通过地址栏右侧的图标安装,然后像原生应用一样从桌面启动运行。

注意:PWA 要在本地访问或者在 https 下才支持。


常见问题

FAQ

更新日志

CHANGELOG


赞助 & 支持

如果觉得这个工具好用,对你有所帮助,可以投喂支持亿下哦~

投喂赞助 ☞ https://afdian.net/@acgnhiki

Thanks

JetBrains Logo (Main) logo

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

blrec-1.2.3.tar.gz (981.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

blrec-1.2.3-py3-none-any.whl (1.7 MB view details)

Uploaded Python 3

File details

Details for the file blrec-1.2.3.tar.gz.

File metadata

  • Download URL: blrec-1.2.3.tar.gz
  • Upload date:
  • Size: 981.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.20.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.2

File hashes

Hashes for blrec-1.2.3.tar.gz
Algorithm Hash digest
SHA256 77fba425af4fcd9434e9cc45fe3b5537bd9cd2684628a32b85ff8cdc6c894898
MD5 374246574849adeadae5be03afe8eeae
BLAKE2b-256 1b07662966ef46ba7beda61560eca2d173edb2ed40942921a644fc4fda628928

See more details on using hashes here.

File details

Details for the file blrec-1.2.3-py3-none-any.whl.

File metadata

  • Download URL: blrec-1.2.3-py3-none-any.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.20.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.2

File hashes

Hashes for blrec-1.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b320d9c23a3f00053c7136e1a0856307b2333967ea98e23b2fd04392e28efe9d
MD5 3eb0624830d9ba60998b37ca312fc691
BLAKE2b-256 e290a87758c4c891195b0b29a6fec90c93a1d0bf1dd56153a3d05851bae2a0b3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page