弹幕时间调节器

813次阅读
没有评论

说明

该软件用于调整b站xml格式的弹幕的时间,解决不同时间的弹幕不同步的问题。无论是整体不同步,还是一半时间是同步的,后面不同步,都可以用这个软件来解决。

为什么会产生这种局部不同步问题?
因为实际直播的时候可能会由于主播网络波动,而造成时间的损失,比如直播时间是17:00-18:00,在17:30的时候卡了一分钟,所以生成的回放只有59分钟。而弹幕不会因为这一分钟的卡顿丢失,所以会产生一分钟的弹幕偏移。

所以,一般情况下,当你看到直播回放视频突然“跳”了一下时,就可能开始产生弹幕不同步了。

该软件内置 niconvert,所以无需你手动将xml文件转化为ass文件。

支持使用 微博弹幕下载器 下载的xml格式弹幕文件。

该软件完全免费,禁止商业使用。

下载

Windows

如何选择

如果你已经安装了java(1.8及以上版本)并设置好了环境变量,即可选择release.zip。 你可以按win+r,输入cmd,在命令提示符中输入java -version如果显示出java版本且为1.8及以上,即可下载该文件;如果显示'java' 不是内部或外部命令,也不是可运行的程序或批处理文件,则应该选择另外两个版本。

如果你没有安装java,或者安装了但不会设置环境变量,你可以选择另外两个版本。你可以右键此电脑(我的电脑)-属性来查看你的系统是64位还是32位(x86),并选择正确的版本。

相关链接

使用教程

请将下载完的zip文件解压后再使用,切勿直接在压缩包中运行

首先,你要下载并安装 Python,点这里下载

为了方便在观看视频的时候能显示弹幕,我们需要一个支持ass字幕的播放器,它会在播放视频的时候检查与该视频同一目录下是否有同名的ass文件,你也可以在播放视频的时候将ass文件拖入播放器来加载该文件。

potplayer 是一个不错的选择。不过它的官网在中国好像上不去,你也可以选择我的镜像:

为了方便实践,我提供了一个例子及相关文件,你可以 点击这里下载


首先,你需要把xml格式的弹幕文件复制一份放到软件下的workspace目录,并在workspacec目录下创建一个同名的txt文件,如

DanmuTimeMachine
└ workspace
 ├ danmu.xml
 └ danmu.txt

打开txt文件,接下来对弹幕的操作就可以在这里进行了。

每条指令占一行,只需回车即可输入下一条指令。不要有空格等多余的字符。

软件默认生成1920×1080的弹幕文件,字体大小默认为80px,如果需要修改,可以在txt文件中输入指令。

修改分辨率,只需输入数字x数字,其中“x”为小写英文字母。比如竖屏的1080x1920

修改字体大小,输入s 数字,注意中间有空格。

修改弹幕速度,输入t 数字,注意中间有空格。比如你觉得弹幕太快了,数字就可以是正数;太慢,请不要直接输入负号,在前面加个0,比如-1改为0-1

默认的弹幕布局为异步,即弹幕越长,速度越快。如果要改成同步,输入sync

例子,1080×1920,字体大小为72,弹幕需要变慢1s,每一条弹幕速度都相同,不会因为长度而变化,就可以输入:

1080x1920
s 72
t 1
sync

调整弹幕时间

软件的原理是,把某个时间开始往后的所有弹幕,提前或延后一段时间。然后生成新的xml文件,并把它转化为ass文件,然后再把生成的xml文件删除。为什么不先生成ass文件再对ass文件做处理呢?因为这样会导致弹幕重叠。不过你只需知道,它不会修改原来的xml文件。

比如说某个视频的弹幕,从00:00:00-00:15:00都是正常的,但在00:15:00开始由于主播网络卡了10秒,导致这里丢失了10秒画面,但是弹幕没有缺失,导致弹幕慢了10秒。你就可以把从00:15:00开始的弹幕都提前10s,这样弹幕和画面就对的上了。

格式:时:分:秒 偏移时间,其中偏移时间单位为秒,负数是提前,正数是延迟。注意这个冒号是英文形式的冒号(:),不是中文形式的冒号(:),请将输入法切换为英文输入法。还有,中间有一个空格用来分隔。

比如刚刚的例子就是:
00:15:00 -10

假设00:30:00又卡了一下,导致弹幕又延迟了10s,那就是
00:30:00 -10

请问,这对原来分别在00:20:00和00:40:00的弹幕做了什么呢?
答案:00:20:00的弹幕提前了10s,00:40:00提前了20s。
它是按顺序叠加的。

完整例子:

1080x1920
s 72
t 1
sync
00:15:00 -10
00:30:00 -10

修改完后,保存txt文件(可以按快捷键ctrl+s),运行软件目录下的run.cmd,即可在workspace目录下生成修复后的ass文件。


这看起来有点麻烦呐,怎样才能更方便的修复弹幕时间呢?

这个例子,告诉你技巧。

首先,我们生成一个没有修复的ass文件。
打开txt文件,因为是1080×1920的竖屏视频,所以,输入

1080x1920

ctrl+s保存,然后运行run.cmd。

打开视频,将ass文件拖到播放器中(PotPlayer请拖到首选字幕而不是次选字幕)。

接着,观看视频,直到一个标志性的弹幕错位(比如主播开了个玩笑,然后弹幕刷“哈哈哈”),推算出错位了多长时间,在哪里开始错位的(根据你从哪里发现不对劲开始,如果不觉得不对劲,那就随便选个时间,只要不会产生更多的不对劲就可以)。例子中是在00:04:25卡了一下,然后产生了30s的延迟,好,暂停视频,那么现在txt文件就是:

1080x1920
00:04:25 -30

ctrl+s保存,运行run.cmd。

刚刚的视频没关闭吧?好,把生成的ass文件再拖到播放器中(PotPlayer请拖到首选字幕而不是次选字幕)

然后把进度条拖到00:04:20左右,继续播放,发现刚刚的延迟修复了。

继续观看,直到01:23:20又出现了8s延迟。

好,暂停视频,现在是txt文件是

1080x1920
00:04:25 -30
01:23:20 -8

ctrl+s保存,运行run.cmd。

然后再把生成的ass文件再拖到播放器中(PotPlayer请拖到首选字幕而不是次选字幕)。

进度条拖到01:23:15,又修复了。

就这样,边播放边修复,从前往后,直到视频播放完毕,你就修复好了一个视频的弹幕。

最后,你就可以使用正确的ass文件了,xml文件和txt文件也建议保存下来,以便以后发现错误的时候可以修复。

你也可以选择 将ass字幕文件渲染进视频中