ass-danmaku
ass-danmaku copied to clipboard
ass字幕内弹幕的时间错误
ass字幕内弹幕的时间错误。比如从https://www.bilibili.com/video/av928803013 下载的ass弹幕随便选一行:
Dialogue: 0,98:14:43.00,98:14:51.00,Rtl,,20,20,2,,{\move(685,25,-125,25)}这才是正确的使用方式
弹幕时间98h14m43s,而视频时长不到半小时。
简单看了一下425a5a8,是用的json弹幕源吗?
Parser for bilibili use ~~pdf~~ pbf project.
json内"progress":1410948
,意思是距离视频开头1410.948s,是不是换算的问题?
另外json弹幕和xml弹幕的内容竟然完全不同……
啊,那个是拼错了,应该用的那个项目是 pbf,之后修一下这个拼写问题。
是不是他是毫秒?我除以1000的话是不是就大概没问题了?
用的是 Protocol Buffers 格式的接口。
~~我在同一个视频的ass弹幕和json弹幕中找不到相同的一条弹幕内容,所以不能确定对应关系~~ 终于找到一条
{"id":43941243138867210,"progress":349299,"mode":1,"fontsize":25,"color":16777215,"midHash":"d2567fc8","content":"头发都张长了","ctime":1610887785,"weight":3,"idStr":"43941243138867207"}
Dialogue: 0,97:01:39.00,97:01:47.00,Rtl,,20,20,2,,{\move(635,25,-75,25)}头发都张长了
似乎不是除以1000
的关系……
没太懂,你给的例子不就是说,出现时间应该是 349.299s,然后我现在生成的是 349299s,所以应该除以 1000?
你说得对,我算错了,就是除以1000。 我之前一直没想明白为什么弹幕不一致,原来是时间超出99:99:99.999的弹幕被直接忽略了,json文件内有4200条左右,ass文件只有2000条。
更新了一下,但愿好了。
弹幕时间恢复正常了,但如果视频较长,后面的弹幕就没有了。 例如: https://www.bilibili.com/video/av288554260 07:00~24:00弹幕就没有了 danmu.zip
这样吗,真麻烦。
你看看如果你把视频调到第八分钟开始看,下载的弹幕是不是只有中间一段的?
仍以https://www.bilibili.com/video/av288554260 为例,视频时长24min,逐渐加载到最后,扩展会显示四个可下载的弹幕,但下载下来的内容完全一致。
大概明白这情况了,不过没什么好的处理办法,最多可以让四个不同甚至拼好,但是前提得用户让它加载到最后。就不知道怎么办。
仍以https://www.bilibili.com/video/av288554260 为例:
抓包json弹幕(获得seg.so文件)
https://api.bilibili.com/x/v2/dm/web/seg.so?type=1&oid=284038161&pid=288554260&segment_index=1
其中segment_index=1
换为2、3……即可获得后续弹幕
但是这个扩展不发任何请求,只是处理网页本身加载的内容。
那没有好的办法了,B站现在不主动加载xml弹幕,主动加载的json弹幕又是分片的,只有跳转到视频结尾,然后合并获取的所有弹幕分片。
跳转也只能拿到头尾两个分片吧?能拿到全部的吗?
确实不能拿到全部,看来大概是6分钟一个分片😅
不过点击弹幕列表
会同时加载所有分片
总之 1.13 又更新了一下。但是现在需要等所有分片加载完成才会显示下载的按钮。可以通过你说的展开弹幕列表的方式来加载分片。暂时没什么更好的主意。