跳到主要内容
SubtitleMatrix

丢帧转非丢帧时间码

时间码丢帧时间码
或者粘贴字幕文本

选项

30 fps 非丢帧与 29.97 丢帧对同一段时钟的写法不同,这个框决定文件按哪种约定读取、又按哪种写回。一小时后的一条字幕,在一种约定下读作 01:00:00,000,在另一种下读作 01:00:03,600 —— 两者每小时差 3.6 秒,不是舍入误差。页面标题点名一个方向,这个框只提供那一个,所以你拿到的就是这一页所讲的那件事。文本完全不变:不会按视频重设时间,不会换算帧率,而一小时中第一分钟内的字幕原样返回,因为那段里没有丢掉任何帧号。

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

这一页把字幕文件里的每一个时间码从 29.97 fps 丢帧(drop-frame)重新标记为 30 fps 非丢帧,于是每个时钟会向后修正一段随节目时长增长的量:一小时的第一分钟内为零,一小时后 3.6 秒,十小时后 36 秒。台词、字幕条序号、顺序与硬换行都保持原样。

丢帧只丢弃帧编号,不丢画面帧:它每秒仍数 30 个标记,但每逢整分钟(每十分钟的整分钟除外)跳过 ;00 与 ;01 两个标记。29.97 fps(NTSC 的 30000/1001)实际每秒并不给出 30 帧,靠这条约定才跟得上真实时间;非丢帧保留全部标记,于是慢慢落后。把丢帧机器上读出的时钟当成非丢帧来读,每个值都会偏大,字幕就会越来越早。

这个修正不是一次平移:每条字幕按它所在的位置得到不同的量——五分钟处 333 毫秒,十分钟处 600 毫秒,一小时处 3600 毫秒。两个边界同步移动,所以每条字幕的长度逐毫秒保持不变,字幕之间的间距也按位置整体挪动。

丢帧约定写不出的时间点会被拉回能写的最后一个标记:每个跳号分钟里的 ;00 与 ;01 不存在,00:01:00,000 会落到 00:00:59,933,早 67 毫秒;两小时内这样不可逆的取值有 216 个。修复后短于一帧(33.37 毫秒)的字幕条写不出来,会被丢弃并计入上方的有损记录,而不是悄悄拉长。全程在浏览器里完成,文件不上传。

示例

一份五分钟处的文件

输入

1
00:05:00,000 --> 00:05:02,000
The room is dark.

2
00:10:00,000 --> 00:10:03,000
A cold night.

输出

1
00:04:59,667 --> 00:05:01,667
The room is dark.

2
00:09:59,400 --> 00:10:02,400
A cold night.

修正不是一个数字套整份文件:五分钟处时钟后退 333 毫秒,十分钟处后退 600 毫秒,因为到第一条字幕时丢帧已经扔掉十个标记,到第二条时扔掉了十八个。每条字幕的长度逐毫秒保持不变,因为两端移动了同样的量——这是重新标记,不是平移。

同一修正在一小时处

输入

1
01:00:03,600 --> 01:00:06,600
An hour into the programme.

输出

1
01:00:00,000 --> 01:00:03,000
An hour into the programme.

一小时处,丢帧的 01:00:03,600 就是非丢帧的 01:00:00,000——108 个被跳过的标记,3600 毫秒。这是用来核对这一页的数字:输出的第一行应当恰好比输入的第一行早 3600 毫秒,从丢帧机器上取下的文件应当落回整点。

常见问题

丢帧转非丢帧后,字幕为什么会提前?

因为文件里的时钟比它所指的时刻大。非丢帧按每秒 30 个标记计数,好像 29.97 fps 真的每秒给 30 帧,于是慢慢跑到真实时间前面;丢帧每分钟跳两个标记去追它。把丢帧机器上读出的时钟当成非丢帧来解释,就会指过头,修正是把这个超出量减掉。

为什么同一份文件里每条字幕移动的量不一样?

因为这个量随位置增长:一小时的第一分钟内为零,五分钟处 333 毫秒,一小时处 3600 毫秒,十小时处 36000 毫秒。它不是一次整体平移,而是逐条按所在位置重新标记;两端移动同样的量,所以每条字幕的长度逐毫秒不变。

丢帧时间码里写不出来的时间点会怎样?

会被拉回能写的最后一个标记。每个跳号分钟都缺 ;00 与 ;01,所以 00:01:00,000 与 00:01:00,010 都落到 00:00:59,933,早 67 毫秒。这是这一页唯一不是精确重标的地方,范围也有限:两小时内 216 个取值。

丢帧转非丢帧会让某条字幕消失吗?

只有短于一帧(33.37 毫秒)的字幕条会。吸附可能把一条十毫秒的字幕两端拉到同一个标记上,而结束等于开始的条目写不出来,于是被丢弃并计入工作区上方的有损记录。文件里没有这种条目时,报告不会提。

丢帧转非丢帧和帧率转换是一回事吗?

不是。这里没有任何帧被重排或缩放到别的帧率,字幕之间的间距不变,只改变时间码的计数约定。25 fps 素材的字幕不会被重新计时;要做那件事是另一个页面。

丢帧转非丢帧的帧率框要填什么?

填素材真实的帧率,它不影响这次转换。页面名字里的 30 与 29.97 是时间码字符串上的计数约定,不是视频帧率;这个框之所以必填,是因为 MicroDVD 把时间存成帧号,没有帧率就读不出来。

再跑一次相反方向的页面能拿回原文件吗?

只要没有时间点落在丢帧写不出的那一类里,就能逐字节拿回。两页是同一套算术的两个方向,修正量都由每条字幕的位置决定,而不是固定偏移;唯一的例外是被吸附的值,00:01:00,000 变成 00:00:59,933 之后回不来。

相关工具