B站弹幕如何导出
B站的一大灵魂便是弹幕,这也是很多人选择B站看番的原因——有着最多数目的中文弹幕。
B站主要使用xml可扩展标记语言,来保存弹幕,保存相关xml文件并使用转换工具将xml文件转换为更加常用的ass,srt等字幕格式即可导入播放器。
一般来说,使用B站的UWP程序在保存视频时,会默认也保存弹幕文件,如图中的danmaku.xml即为弹幕文件。但由于版权原因,你不可能在B站UWP程序下保存番剧。
因而,下面介绍几种另外的保存方法。
danmu2ass(主推,简单,可改样式)
项目地址:https://github.com/gwy15/danmu2ass
- 支持ep、ss、以及https://www.bilibili.com/bangumi/play/ss28281这样的链接。
- 提供了简单的web界面
使用方法
- WEB界面
下载 https://github.com/gwy15/danmu2ass/releases 中的 release
对于 Windows 用户,直接双击 danmu2ass.exe,会自动打开 web 界面。
或者使用 docker:docker run -it --rm -v /tmp:/tmp gwy15/danmu2ass:main /tmp
而后输入ss、ep或者链接,点击下载ass文件。
- 命令行
danmu2ass.exe [OPTIONS] [INPUT]
ARGS:
<INPUT> 需要转换的输入,可以是 xml 文件、文件夹或是哔哩哔哩链接、BV
号。如果是文件夹会递归将其下所有 XML 都进行转换 [default: .]
OPTIONS:
-a, --alpha <ALPHA>
弹幕不透明度 [default: 0.7]
--bold
加粗
-d, --duration <DURATION>
弹幕在屏幕上的持续时间,单位为秒,可以有小数 [default: 15]
--denylist <DENYLIST>
黑名单,需要过滤的关键词列表文件,每行一个关键词
-f, --font <FONT>
弹幕使用字体。单位:像素 [default: 黑体]
--font-size <FONT_SIZE>
弹幕字体大小 [default: 25]
--force
默认会跳过 ass 比 xml 修改时间更晚的文件,此参数会强制转换
-h, --height <HEIGHT>
屏幕高度 [default: 720]
--help
Print help information
--horizontal-gap <HORIZONTAL_GAP>
每条弹幕之间的最小水平间距,为避免重叠可以调大这个数值。单位:像素 [default: 20.0]
-l, --lane-size <LANE_SIZE>
弹幕所占据的高度,即“行高度/行间距” [default: 32]
--no-web
不打开 web ui 而使用 cli 模式
-o, --output <ASS_FILE>
输出的 ASS 文件,默认为输入文件名将 .xml 替换为 .ass,如果输入是文件夹则忽略
--outline <OUTLINE>
描边宽度 [default: 0.8]
-p, --float-percentage <FLOAT_PERCENTAGE>
屏幕上滚动弹幕最多高度百分比 [default: 0.5]
--pause
在处理完后暂停等待输入
--time-offset <TIME_OFFSET>
时间轴偏移,>0 会让弹幕延后,<0 会让弹幕提前,单位为秒 [default: 0.0]
-V, --version
Print version information
-w, --width <WIDTH>
屏幕宽度 [default: 1280]
--width-ratio <WIDTH_RATIO>
计算弹幕宽度的比例,为避免重叠可以调大这个数值 [default: 1.2]
针对弹幕样式,danmu2ass可以调整字体、字号、显示区域、显示时间等,功能强大适合精细化调整。
如果您不是为了练习日语听力,一般来说弹幕不要调的太满,预留一点空间给字幕,显示空间一般调到75%,并且调低透明度,以弹幕免影响观看体验。
JiJiDown/唧唧Down(推荐,简单方便)
1.下载 唧唧down客户端 【下载地址】http://client.jijidown.com/
2.安装唧唧down,打开唧唧down,粘贴b站番剧作品页到唧唧down,回车
3.选择批量下载
4.批量下载字幕文件
值得注意的是,这里虽然只写着弹幕xml下载,但是唧唧Down目前最新版本已经默认有帮你从xml转化成通用的ass字幕格式,因而无需自行转化一遍。
前两种方法导出的是直接可用的ass文件,无需转换,而后面两种则需要转换。
BiliTool
目前之前发布的油猴插件没有可以使用的。
BiliTool是一个相对麻烦的方法。
1.获取播放链接
打开类似 ep开头的,链接类似 https://www.bilibili.com/bangumi/play/ep114514的B站番剧播放界面,
注意不要从历史中点进来,否则可能打开 ss开头的,链接类似 https://www.bilibili.com/bangumi/play/ss42180。这时候你需要从旁边切换剧集,方可返回ep 的链接。
复制ep开头的链接备用。
2.获取SESSDATA。
使用BiliTool获取全弹幕要用到SESSDATA。
打开b站主站,使用账号密码登录,点击键盘上F12(有的电脑可能需要使用Fn+F12)打开浏览器开发者模式
找到并点击“应用程序”(火狐浏览器是“存储”)
找到并点击cookies,选择“http://www.bilibili.com”
找到“SESSDATA”,其中“值”即为该账号的SESSDATA,将其复制下来
3.使用BiliTool获取xml弹幕
打开BiliTool:https://bilitool.top/,在设置=》SESSDATA填入刚刚获得SESSDATA,保存后返回首页,填入ep链接,回车。
然后我们既可以看到番剧各种id,数据等。剧集列表下方,全部勾选,点击批量下载实时弹幕。
而后在侧边栏 工具 中,选择 弹幕下载,就可以看到下载的进度了,等到所有剧集的弹幕获取完毕后,点击左上角的批量下载,既可将所有剧集弹幕保存到一个zip中。
手动通过B站的API下载每集弹幕
通过上述的BiliTool,我们可以轻松的获取到每集的cid。我们无需获取SESSDATA,只需获得ep链接并贴入BiliTool,即可获得。剧集列表的最左一列便是cid。
之后将每集的oid拼接到弹幕的api的url中,下载弹幕文件,弹幕文件采用 xml 格式存储,接口地址 https://api.bilibili.com/x/v1/dm/list.so?oid=<cid> 或者 https://comment.bilibili.com/<cid>.xml
其中<cid>替换为前面的cid数值。
当然你也可以获取到oid后,将每集的oid拼接到弹幕的api中下载xml
(可选)将弹幕从xml格式转换为ass格式
在线转换器:https://tiansh.github.io/us-danmaku/bilibili/
选择下载好的xml弹幕文件,开始转换即可。
或者用danmu2ass,它也可以导入下载好的xml弹幕文件转换。
所以为什么不直接用danmu2ass直接输入ep号下载呢?😅😅