hihkm / DanmakuFactory

支持特殊弹幕的xml转ass格式转换工具
MIT License
577 stars 32 forks source link

xml转换ass后内容出错 #86

Closed renmu123 closed 2 months ago

renmu123 commented 2 months ago

源文件只有一条该sc,但是在转换后的ass中到处都是,而且时间各不一样 图片

还有一些时间排序出问题 图片

经过我的debug,发现好像是这个函数有问题,但是我没找到产生bug的具体代码

转换参数用得是这个--resolution 1920x1080 --scrolltime 13 --fixtime 5 --density 0 --fontname "Microsoft YaHei" --fontsize 40 --opacity 255 --outline 0.5 --shadow 0 --displayarea 0.5 --scrollarea 1 --bold true --showusernames false --showmsgbox true --msgboxsize 265x480 --msgboxpos 0x90 --msgboxfontsize 26 --msgboxduration 10 --giftminprice 200 --giftmergetolerance 0 --blockmode null

参考文件:blive_弹幕xml.zip

lengyanyu258 commented 2 months ago

ASS(Advanced SubStation Alpha) 格式的文件中,是通过绘图指令实现在一段时间内显示图形的。下面就是一条 SC 需要显示的内容:

Dialogue: 0,0:14:41.00,0:14:46.00,message_box,,0000,0000,0000,,{\pos(0,1558)\c&HD8D8FF\p1\bord0\shad0}m 0 21 b 0 10 10 0 21 0 l 379 0 b 390 0 400 10 400 21 l 400 85 l 0 85
Dialogue: 0,0:14:41.00,0:14:46.00,message_box,,0000,0000,0000,,{\pos(0,1643)\p1\c&H321AAB\bord0\shad0}m 0 0 l 400 0 l 400 31 b 400 42 390 52 379 52 l 21 52b 10 52 0 42 0 31
Dialogue: 1,0:14:41.00,0:14:46.00,message_box,,0000,0000,0000,,{\pos(10,1565)\c&H1B0E5E\b1\bord0\shad0}动作玩家lil
Dialogue: 1,0:14:41.00,0:14:46.00,message_box,,0000,0000,0000,,{\pos(10,1607)\c&H313131\fs33\bord0\shad0}SuperChat CNY 30000
Dialogue: 1,0:14:41.00,0:14:46.00,message_box,,0000,0000,0000,,{\pos(10,1643)\c&HFFFFFF\bord0\shad0}快点打爆丝

在这五行脚本中,前两行画出了 SC 的背景,后三行分别显示昵称、金额和 SC 内容,它们共同组成了一条 SC。在 \pos(x,y) 的坐标位置上于 0:14:41.00 时刻出现,并持续显示至 0:14:46.00 时刻消失。

由于还会有礼物或其它 SC 在底部出现或消失,导致这条 SC 的位置不会是固定在 \pos(x,y) 处,而是会在某些时刻向上或向下移动,此时便需要重新绘制它的移动动画或是显示图形。这就导致了同一条 SC 的内容会在 ASS 文件中重复出现多次(但每次的持续时间或是显示的位置并不会相同),这是正常情况,不是 BUG。


时间排序出问题可能是桶排序算法有误,这是 BUG。