Acfun 弹幕JSON 粗略解析定义文档

以下为探索出的 Acfun 弹幕格式定义。目前 CommentCoreLibrary尚无法完全还原这个格式下的所有定义。

格式范例

v1

{
    "c": ...,
    "m": ... or JSON.stringify({
        "l": ...,
        "p": ...,
        "pz": ...,
        "rx": ...,
        "k": ...,
        "r": ...,
        "e": ...,
        "f": ...,
        "sz": ...,
        "c": ...,
        "z": [ ... ]
    }),
}

v2:

{
    "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时请参考 高级弹幕 部分)

高级弹幕 .m/.message

高级弹幕(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] 单位:deg
  • k: y轴旋转 [-3600,3600] 单位:deg
  • r: z轴旋转 [-3600,3600] 单位:deg
  • e: x轴拉伸 [-50,50]
  • f: y轴拉伸 [-50,50]
  • sz: z轴拉伸 [-50,50]
  • c: 锚点位置
    • 0: 左上
    • 1: 中上
    • 2: 右上
    • 3: 左中
    • 4: 中中
    • 5: 右中
    • 6: 左下
    • 7: 中下
    • 8: 右下

移动参数 .z

移动参数 z 存在时是以数组的形式存在,其中每一个值都可能含有如下属性的一个或多个属性。其中除了 l (这个移动的生存时间)以外, 其余参数均是可选参数。如果有参数没出现则表示在这个时间区间内,没出现的参数没有发生变化。

  • x: 新x坐标
  • y: 新y坐标
  • z: 新z坐标
  • rx: 新x轴旋转
  • e: 新y轴旋转
  • d: 新z轴旋转
  • f: 新x轴拉伸
  • g: 新y轴拉伸
  • sz: 新z轴拉伸
  • l: 效果生存时间
  • t: 透明度

属性 .w

  • 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)