【分享】B站直播弹幕版的制作
香烟奶糖
2019年05月22日 10:59

前言

因为之前有很多聚聚询问我弹幕版是怎么做的,所以这次就把步骤写下来,也当做个记录吧!

不过我自己并不是计算机专业的,所有方法都是自己摸索出来的,所有有些地方我也是一知半解,请见谅。

emmm,首先这确实不是用录屏的方法,不过这方法在Windows平台下还算简单。一般来说得分四步,不过在Windows可以简略三步。

  1. 录制直播流

  2. 抓取弹幕信息

  3. 弹幕转换

  4. 字幕烧录

下面分Windows和Linux两个平台讲述吧!


Windows

一、录源保存保存弹幕

在Windows平台下,有一个软件“Biliroku”,可以实现录制直播的同时保存弹幕。“Biliroku”录制完成后会有一个flv格式的视频文件和一个xml格式的文件。

下载地址:https://github.com/zyzsdy/biliroku/releases

二、弹幕转换

从软件上下载到弹幕是保存在xml文件中,需要转换成ass的字幕格式,要用到能转换格式的工具。这里需要用到github上的”Niconvert“项目,具体使用方法可以参考项目地址。

项目地址:https://github.com/muzuiget/niconvert

三、字幕烧录

最后需要把转换成的字幕文件烧录进视频文件中,做成硬字幕。这一步有很多软件可以用,不过我之前用的是“Arctime”这一软件。导入视频文件和字幕文件,再导出就可以了。

注意设定输出参数

等待Arctime编码完成就行,然后再用视频剪辑软件进行分P,就可以上传了。


Linux/WSL

零、前言

这里说的Linux是基于命令行模式,并且支持自动化。当然因为我是在windows的子系统下(WSL)进行的,所以有些步骤还是可以在windows下进行。在开始之前,得先安装上FFmpeg和Python,当然两条命令就可以。

一、录源

对于录源,因为网上各种直播录制软件好像都没有Linux版本,所以得自己调用FFmpeg来录制直播流。这里涉及到直播地址解析的问题。

一种方法是先自己解析直播地址,然后再调用ffmpeg来录源。在github上有一个项目“bilibili_live_extractor”可以解析B站直播地址,缺点在于无法自动检测直播流,必须得等直播开始后才能解析。另一种方法是用github上的”bililive-go“,可以自动监测直播间的状态,然后进行录制。

项目地址:https://github.com/ntkomata/bilibili_live_extractor

项目地址:https://github.com/hr3lxphr6j/bililive-go

使用“bilibili_live_extractor”可以解析B站直播地址

”bililive-go“自动监测直播间的状态进行录制

二、抓取弹幕信息

抓取弹幕信息没有现成的项目可用,我的方法是同时参考“biliroku”和”blivedm“两个项目。

因为“blivedm”仅仅抓取到弹幕信息,并没有像”biliroku“那样保存在xml文件中,所以得自己参考biliroku,修改blivedm的源码。至于文件读写,可以放在“blivedm”中,也可以在再写一个shell脚本,利用输入输出重定向进行文件读写。

项目地址:https://github.com/zyzsdy/biliroku

项目地址:https://github.com/h12345jack/blivedm

“biliroku”源码

三、弹幕转换

弹幕转换可以直接用”niconvert“项目,支持命令行模式。不过这一步我是在Windows下完成的。具体使用方法可以参考项目地址。

项目地址:https://github.com/muzuiget/niconvert

四、字幕烧录

烧录也比较简单,直接调用ffmpeg就可以了。不过烧录还是在windows平台下比较好,在Liunx好像存在缺乏字符集的问题(?),会有些字符找不到,烧录后有些字符会变成方块。

这里说明一下,crf和preset选项参数设定得根据需要自行设定。crf影响输出码率,preset影响编码速度。嘉兴路的直播码率在6000左右,而中泰和悠唐在3500左右,自己根据需要设定。

烧录命令

到这里,等待powershell执行完毕就行了。


最后,祝大家诸事顺利。