tiansh / ass-danmaku

A firefox extension for downloading danmaku (video comments); Online converter: https://tiansh.github.io/ass-danmaku-online/
https://addons.mozilla.org/en-US/firefox/addon/ass-danmaku/
Mozilla Public License 2.0
63 stars 12 forks source link

ass字幕内弹幕的时间错误 #13

Open MC-dusk opened 3 years ago

MC-dusk commented 3 years ago

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弹幕的内容竟然完全不同……

tiansh commented 3 years ago

啊,那个是拼错了,应该用的那个项目是 pbf,之后修一下这个拼写问题。

是不是他是毫秒?我除以1000的话是不是就大概没问题了?

用的是 Protocol Buffers 格式的接口。

MC-dusk commented 3 years ago

我在同一个视频的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的关系……

tiansh commented 3 years ago

没太懂,你给的例子不就是说,出现时间应该是 349.299s,然后我现在生成的是 349299s,所以应该除以 1000?

MC-dusk commented 3 years ago

你说得对,我算错了,就是除以1000。 我之前一直没想明白为什么弹幕不一致,原来是时间超出99:99:99.999的弹幕被直接忽略了,json文件内有4200条左右,ass文件只有2000条。

tiansh commented 3 years ago

更新了一下,但愿好了。

MC-dusk commented 3 years ago

弹幕时间恢复正常了,但如果视频较长,后面的弹幕就没有了。 例如: https://www.bilibili.com/video/av288554260 07:00~24:00弹幕就没有了 danmu.zip

tiansh commented 3 years ago

这样吗,真麻烦。

你看看如果你把视频调到第八分钟开始看,下载的弹幕是不是只有中间一段的?

MC-dusk commented 3 years ago

仍以https://www.bilibili.com/video/av288554260 为例,视频时长24min,逐渐加载到最后,扩展会显示四个可下载的弹幕,但下载下来的内容完全一致。

tiansh commented 3 years ago

大概明白这情况了,不过没什么好的处理办法,最多可以让四个不同甚至拼好,但是前提得用户让它加载到最后。就不知道怎么办。

MC-dusk commented 3 years ago

仍以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……即可获得后续弹幕

tiansh commented 3 years ago

但是这个扩展不发任何请求,只是处理网页本身加载的内容。

MC-dusk commented 3 years ago

那没有好的办法了,B站现在不主动加载xml弹幕,主动加载的json弹幕又是分片的,只有跳转到视频结尾,然后合并获取的所有弹幕分片。

tiansh commented 3 years ago

跳转也只能拿到头尾两个分片吧?能拿到全部的吗?

MC-dusk commented 3 years ago

确实不能拿到全部,看来大概是6分钟一个分片😅


不过点击弹幕列表会同时加载所有分片 图片

tiansh commented 3 years ago

总之 1.13 又更新了一下。但是现在需要等所有分片加载完成才会显示下载的按钮。可以通过你说的展开弹幕列表的方式来加载分片。暂时没什么更好的主意。