V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
timerring
V2EX  ›  问与答

做了一个开源的自动录屏、渲染弹幕、识别并渲染字幕、流水线处理的 b 站直播录制项目,欢迎佬提建议提需求

  •  
  •   timerring · 12 天前 · 559 次点击

    目前实现功能如下:

    • 速度快:采用 pipeline 流水线处理视频,理想情况下录播与直播相差半小时以内,能够在没有下播前就上传录播。
    • 多房间:同时录制多个直播间内容视频以及弹幕文件(包含普通弹幕,付费弹幕以及礼物上舰等信息)。
    • 占用小:自动删除本地已上传的视频,很小的空间也能跑起来(每个房间预留 5G 空间即可)。
    • 模版化:无需复杂配置,开箱即用,通过 b 站搜索建议接口自动抓取相关热门标签。
    • 检测片段并合并:对于网络问题或者直播连线导致的视频流分段,能够自动检测合并成为完整视频。
    • 渲染弹幕版视频:自动转换 xml 为 ass 弹幕文件并且渲染到视频中形成有弹幕版视频并自动上传。根据不同分辨率的视频有 fine tune 的渲染参数。
    • 硬件要求极低:即使无 GPU ,只用最基础的单核 CPU 搭配最低的运存即可完成录制,弹幕渲染,上传等等全部过程,无最低配置要求,10 年前的电脑或服务器依然可以使用!
    • ( 🎉 NEW)自动渲染字幕(如需使用本功能,则需保证有 Nvidia 显卡):采用 OpenAI 的开源模型 whisper ,自动识别视频内语音并转换为字幕渲染至视频中。

    项目地址: https://github.com/timerring/bilive

    目前已经将性能优化得相当极致了,理想状态下可以实现开播 20 分钟左右即可以上传弹幕+字幕版的录播。 不知道大家还能提出什么需求吗?欢迎佬多多提建议。

    6 条回复    2024-12-12 12:18:54 +08:00
    renmu
        1
    renmu  
       12 天前 via Android
    我也有做了一个 https://github.com/renmu123/biliLive-tools ,和你的不同点大概是有 gui 吧。
    和你用的技术栈也差不多 ffmpeg+danmakufactory ,biliup 已经被我放弃改自建,我还给 dnamakufactory 修了好几个 bug 。我甚至早就 star 你项目了(笑
    timerring
        2
    timerring  
    OP
       12 天前
    @renmu 原来是佬啊 哈哈 我刚给您 star 了,我主要是想在服务器上全自动运行,不想手动操作所以没有考虑做 gui ,因此我最开始是全 shell 写的,但是传参太麻烦了,最近改成全 python 了。😂
    renmu
        3
    renmu  
       12 天前 via Android
    @timerring 我一开始也是脚本写的,后面发现做录播的技术小白其实很多,就主要做 gui 了,在乎上传速度防撞车的应该会很喜欢你的项目
    renmu
        4
    renmu  
       12 天前 via Android
    有几个开发中我遇到的 bug 提一下,也有可能你不会遇到
    1. danmakufactory 在 win 下的文件名不能有 emoji ,否则会失败(在我的电脑上)
    2. danmakufactory 如果在转换时 xml 中没有弹幕,那么不会生成 ass 文件
    3. 价格有银瓜子,金瓜子,sc 计算都有点不一样,1.7.0 版本和 master 的计算有些区别,推荐抄 blrec 的,录播姬弹幕在库里有额外处理

    ps:ffmpeg 应该早就支持 emoji 了,如果不显示可能和你的字体有关,但是 ffmpeg 的 emoji 不带颜色。
    timerring
        5
    timerring  
    OP
       12 天前
    @renmu
    1.我解决 emoji 的问题了,不过是弹幕里的 emoji ,我找了一个通用的正则表达式滤除了 99% 的 emoji 表情( https://github.com/timerring/bilive/blob/main/src/utils/removeEmojis.py),现在很少遇到需要关于渲染 emoji 的报错。
    2.这个确实目前没遇到,除非片段真的很短,这个遇到以后我再针对性的写规则限制吧。
    3. 这个我统一把舰长和 sc 金额调整了,因为这会影响到渲染的效果,至于礼物我没有过滤,所以目前礼物的金额我还不打算处理。

    我原来查到 ffmpeg 说不打算支持 emoji 来着😂,所以我直接滤出了。
    timerring
        6
    timerring  
    OP
       10 天前
    最近上线了相关文档,欢迎大家使用并提需求。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1398 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 17:00 · PVG 01:00 · LAX 09:00 · JFK 12:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.