以下为探索出的 Acfun 弹幕格式定义。目前 CommentCoreLibrary尚无法完全还原这个格式下的所有定义。
{
"c": ...,
"m": ... or JSON.stringify({
"l": ...,
"p": ...,
"pz": ...,
"rx": ...,
"k": ...,
"r": ...,
"e": ...,
"f": ...,
"sz": ...,
"c": ...,
"z": [ ... ]
}),
}
{
"mode": ...,
"color": ...,
"size": ...,
"user": ...,
"stime": ...,
"time": ...,
"message": ... or JSON.stringify({
"l": ...,
"p": ...,
"pz": ...,
"rx": ...,
"k": ...,
"r": ...,
"e": ...,
"f": ...,
"sz": ...,
"c": ...,
"z": [ ... ]
})
}
c
: 属性序列,按照如下顺序- 开始时间 stime
- 颜色 color
- 模式 mode
- 大小 size
- HASH
- 发送时间 date
m
/message
: 弹幕文字(注意,在mode=7时请参考 高级弹幕 部分)
高级弹幕(mode=7)的 message
或者 m
字段将不再是文本,而是一个JSON编码的对象。
n
: 文字l
: 弹幕生存时间 [0,999] 单位:秒p
: x,y坐标 [-2000,2000] 单位:(/1000)%x
: x坐标y
: y坐标
pz
: z坐标rx
: x轴旋转 [-3600,3600] 单位:degk
: y轴旋转 [-3600,3600] 单位:degr
: z轴旋转 [-3600,3600] 单位:dege
: x轴拉伸 [-50,50]f
: y轴拉伸 [-50,50]sz
: z轴拉伸 [-50,50]c
: 锚点位置- 0: 左上
- 1: 中上
- 2: 右上
- 3: 左中
- 4: 中中
- 5: 右中
- 6: 左下
- 7: 中下
- 8: 右下
移动参数 z
存在时是以数组的形式存在,其中每一个值都可能含有如下属性的一个或多个属性。其中除了 l
(这个移动的生存时间)以外,
其余参数均是可选参数。如果有参数没出现则表示在这个时间区间内,没出现的参数没有发生变化。
x
: 新x坐标y
: 新y坐标z
: 新z坐标rx
: 新x轴旋转e
: 新y轴旋转d
: 新z轴旋转f
: 新x轴拉伸g
: 新y轴拉伸sz
: 新z轴拉伸l
: 效果生存时间t
: 透明度
f
: 字体l
: 滤镜,数组(可合并多个滤镜)- 模糊
[0, 水平模糊, 垂直模糊, 质量]
- 发光
[1, 颜色, 透明度, 水平模糊, 垂直模糊, 强度, 质量, 内阴影(bool), 挖空(bool)]
- 投影
[2, 偏移距离, 角度, 颜色, 透明度, 水平模糊, 垂直模糊, 强度, 质量, 内阴影(bool), 挖空(bool), 只要阴影(bool)]
- 斜角
[2, 偏移距离, 角度, highlight颜色, highlight透明度, shadow颜色, shadow透明度, 水平模糊, 垂直模糊, 强度, 质量, 斜角模式(inner, outer, full), 挖空(bool)]
- 渐变发光 (参考 acfun-filters.swf)
- 渐变斜角 (参考 acfun-filters.swf)
- 模糊