口袋48#

口袋48录播扒下来的弹幕是一个lrc文件:

[00:00:17.341]用户1	晚上好
[00:00:29.409]用户2	来了
[00:00:31.980]用户1	Hi

左边是该留言出现的时间点,接着是用户id,最后为留言内容。

为了将这些文字转换为「从右到左滚动」这种大家更熟悉的形式,我写了一个小工具。

Aegisub#

一款我使用频率最高的软件(笑)

这是一个字幕编辑工具,所有做过字幕相关工作的朋友应该都很熟悉了,就是俗称“打轴”的环节。厉害的人可以玩出很多豪华的特效,但我只是用到了其中一个基础的命令,用来模拟弹幕滚动的效果。

# 在设定的时间内,文字从(x1,y1)的位置移动到(x2,y2)
\move(<x1>,<y1>,<x2>,<y2>)

LrcToAss48#

项目地址

是的,我们要做的事情很简单,就是把lrc文件中的「出现瞬间」,转换为「有始有终的持续时间」。

假设这个弹幕要持续21秒,则在ass字幕文件中,时间格式为0:00:00.00,0:00:21.00

具体来说,完整的一行是这样的

Dialogue: 0,0:00:00.00,0:00:21.00,Default,,0,0,0,,{\move(1280,65,-1345,65)}晚上好

大部分代码就是在进行时间的换算,包括时分秒的进位之类的,挺无聊的,此处就省略了。

至于具体的时间长度设定,则需要根据视频的分辨率进行调整。

right = '1280'  
left = '-1345'  
# 弹幕停留时间
dtime = 21
# 弹幕高度池,此为30字号的默认设置
high = [65,95,125,155,185,215,245,275,305,335]
# 计数用,用于高度分配
n = 0

压制#

将lrc文件逐行处理完成后,我们就得到了一个ass文件。

直接用小丸工具箱之类的压制就行了,毕竟也不是什么蓝光压制,不需要太专业。

2024-02-06 追记

最近换成了群友写的StarTools,显卡压制,最主要的是可以直接压emoji不会乱码了,省去了一个处理emoji的步骤。