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,因为$(FFFFFF)_{16}=(16777215)_{10}$
  • Unix时间戳,以毫秒为单位,基准时间为1970-1-1 08:00:00
  • 弹幕池:0普通池 1字幕池 2特殊池(注:目前特殊池为高级弹幕专用)
  • 发送者的ID,用于『屏蔽此弹幕的发送者』功能
  • 弹幕在弹幕数据库中rowID,用于『历史弹幕』功能

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

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

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

🍭支持一根棒棒糖!
0%