以下为探索出的 Bilibili 弹幕格式定义。目前 CommentCoreLibrary 可以还原这个格式下的大部分定义。 不过由于有的定义是猜测的,所以还原后效果可能并不完全等同原始播放器。
<?xml version="1.0" encoding="UTF-8"?>
<i>
<chatserver>chat.bilibili.tv</chatserver>
<chatid>91236</chatid>
<source>k-v</source>
<d p="##,#,##,######,######,#,....,########">...</d>
</i>
普通弹幕文字为 d
标签内的text部分,参数取自 p
属性,顺序如下:
- stime: 弹幕出现时间 (s)
- mode: 弹幕类型 (
< 7
时为普通弹幕) - size: 字号
- color: 文字颜色
- date: 发送时间戳
- pool: 弹幕池ID
- author: 发送者ID
- dbid: 数据库记录ID(单调递增)
当 mode >= 7
时,弹幕为高级弹幕,text部分为JSON对象。根对象是一个数组,属性按照出没顺序
- x 坐标: 整数时是绝对坐标,浮点时表示相对坐标
- y 坐标: 整数时是绝对坐标,浮点时表示相对坐标
- alpha 渐变: 格式
start-end
的字符串表示透明度渐变 - duration 生存周期: 弹幕生存时间,默认 2500ms
- text: 文字
- (OPT) rotation Y: 可选,y坐标轴旋转,单位: deg
- (OPT) rotation Z: 可选,z坐标轴旋转,单位: deg
- (OPT) target X: 可选,目标x坐标
- (OPT) target Y: 可选,目标y坐标
- (OPT) animation duration: 动画生存时间
- (OPT) animation delay: 动画启动延迟
- (OPT) shadow: 是否显示阴影
- (OPT) font: 字体名称
- (OPT) ? 未知? 猜测是补间方式(0=线形easing?)
- (OPT) path: 动画路径