0%

Bilibili 弹幕文件的解析

B 站的每个视频都有 aidcid 两个参数,在已知视频 aid(即 AV 号)的情况下,可以通过链接 https://www.bilibili.com/widget/getPageList?aid=10492 获取 cid(将 10492 替换为你要查询的视频的 aid)。
视频的更多信息则可以通过 https://api.bilibili.com/view?type=jsonp&appkey=8e9fc618fbd41e28&id=10492 获取。
视频的弹幕文件采用 xml 格式存储,地址与其 cid 有关,为 https://comment.bilibili.com/$cid.xml(将 $cid 替换为视频的 cid)。
对于有许多分 P 的视频,它们的 aid(AV 号)相同,每个分 P 则对应一个不同的 cid。而在同一个页面下的番剧、影视等内容,每一分集的 cid 也是唯一的。
弹幕内容的存储方式为:

1
<d p="0,1,25,16777215,1312863760,0,eff85771,42759017">前排占位置</d>

这个元素中的各个参数由逗号分割,其意义分别为:

  • 弹幕出现的时间,以秒为单位
  • 弹幕的模式:1~3 滚动弹幕 4 底端弹幕 5 顶端弹幕 6 逆向弹幕 7 精准定位 8 高级弹幕
  • 字号:12 非常小 16 特小 18 小 25 中 36 大 45 很大 64 特别大
  • 字体的颜色:将 HTML 六位十六进制颜色转为十进制表示,例如 #FFFFFF 会被存储为 16777215,因为
  • Unix 时间戳,以毫秒为单位,基准时间为 1970-1-1 08:00:00
  • 弹幕池:0 普通池 1 字幕池 2 特殊池(注:目前特殊池为高级弹幕专用)
  • 发送者的 ID,用于「屏蔽此弹幕的发送者」功能
  • 弹幕在弹幕数据库中 rowID,用于「历史弹幕」功能

将 Bilibili 弹幕的 xml 文件转为 ass 字幕,可以使用以下脚本:
bilibili ASS 弹幕在线转换
us-danmaku

关于 ass 字幕格式可以参考以下文章:ASS 字幕格式规范

拓展阅读:
Bilibili 视频播放页面接口整理(不定期更新) - 知乎
Bilibili 爬取视频信息进行数据分析

🍭支持一根棒棒糖!
张书樵 微信

微信

张书樵 支付宝

支付宝