muzuiget / niconvert

弹幕转换工具
255 stars 33 forks source link

json格式弹幕文件的转化存在问题 #33

Closed LyzenX closed 2 years ago

LyzenX commented 2 years ago

我按照 文档-JSON 文件格式定义 的要求将弹幕文件保存为json格式后,发现所有弹幕都无法显示。打开转化后的.ass文件,发现弹幕大概全部跑屏幕外去了。如 PlayResX: 1080 PlayResY: 1920 ... Dialogue: -3,0:00:17.00,0:00:27.00,Danmaku,,0000,0000,0000,,{\move(2080, 497280, -160, 497280)}新年快乐 注意这个\move(2080, 497280, -160, 497280)

json: [ { "color": "ffffff", "is_guest": false, "start": 17, "style": "scroll", "content": "新年快乐", "commenter": "ignore" }, ...

muzuiget commented 2 years ago

感觉是分辨率这两行反了

PlayResX: 1080
PlayResY: 1920

互换一下试试。

LyzenX commented 2 years ago

好像是json中顺序的问题,如果是倒序,即start从大到小排序,就会出现这种问题,重新排序后就可以正常转化了。而xml格式就没有这种问题,无论是正序还是倒序都不会出现问题。

muzuiget commented 2 years ago

那应该是因为 JSON 就是解析 XML 后的内部格式,就没再做排序了。

muzuiget commented 2 years ago

修了,加了排序。

muzuiget commented 2 years ago

我测试了下,排不排序,在 smplayer 下都一样正常,所以我怀疑是你用的播放器的 ass 实现问题,以为每个 Dialogue 已经排好序了,超过时间就提前停止查找了。

smplayer 用的是 libass 库实现。