跳到主要内容
SubtitleMatrix

字幕吸附到帧

时间轴对齐到参考轨
或者粘贴字幕文本

选项

每条字幕的边界都会移到这个帧率下最近的帧,所以在 25 fps 下 00:00:02,010 会变成 00:00:02,000,00:00:02,030 变成 00:00:02,040。正好落在两帧正中的边界向上取整,所以 00:00:02,020 会变成 00:00:02,040。这里不做任何缩放:时间轴长度不变,只是边界落到帧上,因此每条字幕的长度最多会前后变化半帧。这不是文件声明的帧率 —— 它只决定输出里的边界落在哪里。

时间按哪个帧率计算。在格式页面里,这是 MicroDVD 需要的值,因为它把时间存成帧号。在帧率页面里,它是文件当初对应的速率 —— 字幕是按这个版本做的 —— 而页面的第二个框填你要拿它配套的视频速率。常见的有 23.976、24、25、29.97、30、50、59.94 和 60。填错会让整条时间轴偏移;在帧率页面里,偏移是按比例发生的,而不是一个固定的量。

这一页把每条字幕的起止边界移到你选定帧率下最近的帧上。它不改变任何速度:时间轴总长不变,字幕顺序不变,改变的只是每个边界落在哪里。25 帧下 00:00:02,010 变成 00:00:02,000,00:00:02,030 变成 00:00:02,040,所以单条字幕的长度最多向任一方向变化半帧,这是页面有意做出的取舍。

它真正的作用是把一个决定从播放器手里拿回来。字幕以毫秒存储,但许多播放器和压制工具按帧工作,夹在两帧之间的边界只能由绘制者取整,而不同软件取整方式不同:同一份文件在一台机器上早一帧、另一台上晚一帧。在这里吸附一次,决定就由你做且只做一次,之后每个边界都是帧边界,所有读取该文件的工具都会一致。

这不是帧率转换。把字幕从 23.976 换到 25 会用一个比例乘整条时间轴,让字幕继续贴合视频,那是另一组的另一页。这一页完全不看视频:文件本身正确、只是希望边界落在帧上,就用吸附;文件相对视频就是错的,必须先改变比例。

页面上会出现两个帧率框,因为它们回答不同的问题。一个是读取文件用的帧率,MicroDVD 这类帧号格式必须靠它才能被理解;另一个是要吸附到的帧率。文件自带帧率声明时两者通常相同,而填错是安静的:输出仍然帧准确,只是落在没人要的网格上。全部在浏览器标签页内完成,不上传,SRT、WebVTT、ASS、SSA、SBV、SAMI、MicroDVD、TTML、JSON、CSV 一视同仁。

示例

每个边界都落到帧上

输入

1
00:00:02,020 --> 00:00:04,030
Hello there.

2
00:00:07,010 --> 00:00:09,040
Second line.

输出

1
00:00:02,040 --> 00:00:04,040
Hello there.

2
00:00:07,000 --> 00:00:09,040
Second line.

25 帧下边界应落在 40 毫秒的整数倍上。02,020 正好在两帧之间,向上取到 02,040;04,030 抬到 04,040;07,010 退到 07,000。没有任何缩放,第二条仍约两秒,两条之间的间隔在帧精度上也没变,只是各自长度动了动:2010 与 2030 毫秒变成 2000 与 2040。

短于一帧的字幕条

输入

1
00:00:04,000 --> 00:00:04,010
Squeezed.

2
00:00:06,010 --> 00:00:08,010
A normal one.

输出

2
00:00:06,000 --> 00:00:08,000
A normal one.

10 毫秒的字幕条两端都取整到第 100 帧,吸附后首尾同一时刻——一条结束即开始的字幕无法显示。它被删除并计数,而不是被拉长到一帧,因为凭空造一个长度等于把文件从未要求过的字幕放上屏幕。25 帧下要短于 20 毫秒才会遇到;第二条长二十倍,行为照常。

常见问题

字幕吸附到帧和帧率转换有什么本质区别?

帧率转换改变时间轴有多长,吸附只改变边界落在这条时间轴上的位置。24 转 25 会把每个时间戳乘 0.96,让两秒的字幕变成 1.92 秒;吸附把这两秒仍然留作两秒,只把两端各移动不到半帧。

把字幕吸附到帧后能对上另一种帧率的视频吗?

不能。这一页从不看视频,也不改变时间轴长度,所以因视频帧率不同而错位的文件,吸附之后错得一样多。要先用帧率转换页算出并应用比例,再在交付工具需要帧边界时做吸附。

吸附到帧时,单条字幕的长度最多会变多少?

每个边界最多半帧,整条最多一帧,绝不会更多。25 帧下最多 40 毫秒,每个边界 20 毫秒。23.976 或 29.97 下每帧不是整毫秒,即使首尾都是整数也会移动:两秒的字幕会变成 2002 毫秒。

同一份字幕连续吸附两次,第二次为什么没有变化?

因为一旦所有边界都在帧上,离它最近的帧就是它自己,第二次运行会逐字节返回同一份文件。这也让吸附可以安全地留在批处理里;反过来,若第二次仍有变化,说明第一次没有吸附完整。

吸附到帧时字幕条会被删掉吗?

只有当它短于半帧时才会:两端取整到同一帧,已经没有可写的字幕。25 帧下即短于 20 毫秒,现实中几乎不存在。页面会统计删掉的数量,所以结果区是要看的地方,而不是下载下来的文件。

吸附用的帧率应该填文件自己声明的那个吗?

不要想当然。声明说的是“如何读取文件里的帧号”,吸附帧率说的是“输出边界落在哪个网格”,多数交付里两者相同。当你要把文件交给另一种帧率的工具时它们会不同,此时照填声明帧率就是那种安静的错误:输出仍帧准确,只是落在没人要求的网格上。

相关工具