Home

Awesome

A站B站弹幕转字幕文件

本工具主要解决部分已经下架的视频的弹幕播放问题,转为ass字幕后可以使用任意支持字幕的播放器播放。

具体获取A站、B站弹幕的方法请自行搜索,B站可考虑使用BiliPlus哔哩哔哩唧唧

感谢tiansh/us-danmaku提供诸多指导。

安装方式

由于本工具使用了node-canvas进行字符长度的计算,而需要计算汉字的宽度,需要安装pango库,因此先参考node-canvas的安装说明进行安装。macOS除正常的依赖外,请额外安装pango库:

brew install pango

之后使用npm进行安装:

npm install -g danmaku-to-ass

使用方式

danmaku [参数] [文件列表]

默认输入为.xml文件时解析为B站弹幕,为.json文件(尚未实现)时解析为A站弹幕。

也可以提供一个由本工具生成的.ass文件(必须以--inlude-raw=true参数生成),以达到调整生成参数的目的,如以下命令可以将字号变小并覆盖原字幕文件:

danmaku --font-size=12,18,24 --out-dir=./subtitle ./subtitle

当然也可以使用--out参数单独处理一个文件,或指定不同的--out-dir保留旧文件。

参数

必要参数

配置参数

屏蔽规则

在使用--block--block-file时,每一个屏蔽规则都是一个正则表达式或一个内置规则,比如:

.{4,}
呵呵

则表示屏幕所有长度大于4的弹幕以及包含关键字“呵呵”的弹幕。除此之外也可以使用以下内置规则:

需要注意的是,从已有的.ass文件生成新的字幕时,原有的屏蔽规则会失效,所有屏蔽规则均以此次执行命令的配置为准。

参考配置文件

以下除fontName名均为默认值。

{
    "fontSize": [25, 36],
    "fontName": "黑体",
    "color": "#ffffff",
    "outlineColor": null,
    "backColor": null,
    "outline": 2,
    "shadow": 0,
    "bold": false,
    "padding": [2, 2, 2, 2],
    "playResX": 1280,
    "playResY": 720,
    "scrollTime": 8,
    "fixTime": 4,
    "opacity": 0.6,
    "bottomSpace": 60,
    "block": [],
    "includeRaw": true
}

程序调用

同样可以使用程序进行调用:

import convert from 'danmaku-to-ass';
import {readFileSync} from 'fs';

let text = readFileSync('av12345.xml', 'utf-8');
let ass = convert(text, {}, {source: 'bilibili', filename: 'av12345.xml'});

函数签名:

{string} convert({string} text, {Object} configOverrides, {Object} context);

参数说明: