⭐ 觉得好用?收藏备用,下次直接打开 ✨ 开通会员去广告 · 更多权益即将开放 ☕ 支持作者
字幕开头对得上、越往后差越多,是帧率不符或变速压制造成的,整体偏移救不了——得按比例拉伸时间轴。 这里填两个锚点自动解出倍率,或直接选帧率换算。全程浏览器本地处理,不上传
🎯 拖入 .srt / .vtt / .lrc / .ass 文件,或 点击选择文件
输出保持原格式;编码自动识别 GBK / Big5 / UTF-16

字幕时间轴校准 解决的是整体偏移解决不了的那一类不同步:字幕开头对得上、越往后差得越多。这种情况下时间轴需要的不是平移,而是按比例拉伸。全程浏览器本地处理,文件不上传。

先判断你是哪一种不同步

现象原因用哪个模式
整轨一致地早了/晚了几秒片源版本不同、有无片头只整体偏移
开头对得上,越往后差越多帧率不符、变速压制两点校准帧率换算
前半段对、后半段突然错开一大截片源中间被剪过本工具解决不了,得分段处理

最后一种要说明白:线性校准假设整轨是同一个倍率和偏移。如果视频中间插了广告或删过一段,那是分段问题,得把字幕切成几段分别校——这类情况建议用 Aegisub 手工处理。

两点校准是怎么算的

把时间轴看成一次函数:

新时间 = 原时间 × 倍率 + 偏移

你给两个锚点(某条字幕「在文件里写的时间」和它「实际该出现的时间」),就是两个方程两个未知数,倍率和偏移直接解出来,两个锚点都会精确命中。所以锚点间隔越大越准——两点定一条直线,两点挨得越近,线的斜率越容易被读数误差带偏。

时间可以写成 1:23.501:23:45.67801:23:45,678 或纯秒数 83.5,四种都认。

常见帧率换算的漂移量

换算倍率每小时漂移两小时电影到片尾
25 → 23.9761.0427字幕晚 2 分 34 秒晚 5 分多
23.976 → 250.9590字幕早 2 分 28 秒早近 5 分
25 → 241.0417字幕晚 2 分 30 秒晚 5 分
24 → 23.9761.0010字幕晚 3.6 秒晚 7 秒多
30 → 29.971.0010字幕晚 3.6 秒晚 7 秒多

23.976 / 29.97 / 59.94 这几个 NTSC 帧率实际是 24000/1001 这样的分数,小数只是近似写法——这也是「差一点点」会累积成大问题的根源。

校准完之后

  • 换格式(转 SRT / VTT / LRC / ASS)或修乱码字幕格式转换
  • 合成双语轨双语字幕合并——两轨时间对不上时,先在这里把副轨校到主轨同一条时间线上,配对率会高很多
  • 扒出纯文本喂给 AI:字幕转文字稿

📍使用场景

  • 开头对得上,越往后越不同步典型的帧率不符(PAL 25 帧的字幕配 NTSC 23.976 帧的片源)。整体偏移救不了——差值是一路变大的,要按比例拉伸。
  • 知道两边帧率,直接换算片源信息里写着 23.976,字幕是按 25 帧压的,选一下两个帧率就完事,不用去猜锚点时间。
  • 换了个版本的片源导演剪辑版、删减版、带不带片头,整轨只是早了或晚了几秒,用「只整体偏移」推一下就对上了。
  • 两点校准兜底完全不知道帧率也没关系——用播放器看第一句和最后一句实际什么时候出现,填进去自动解出倍率和偏移。

常见问题

为什么我调了整体偏移,字幕还是对不上?

因为你遇到的不是平移,是拉伸。判断方法很简单:把开头对齐之后再跳到片尾看——如果片尾还是差、而且比开头差得更多,那就是帧率问题。整体偏移是给每条字幕加同一个数,开头对了结尾必然还差;这个工具做的是「时间 × 倍率 + 偏移」,开头和结尾能同时对上。

两点校准的两句话该怎么挑?

锚点 ① 挑靠前的一句真实台词,别挑片头 Logo 或字幕组署名——那些常常是后补的,时间本身就不准。锚点 ② 越靠后越好,默认就是最后一条。两个锚点间隔越大,算出来的倍率越准:间隔 1 分钟时你填的时间差 0.2 秒,会在两小时的片子上放大成二十多秒;间隔拉到 1 小时以上,同样的误差只剩零点几秒。间隔不足 1 秒时工具会直接拒绝计算,不给你一个看着像模像样的假结果。

「字幕原用帧率」和「视频实际帧率」分别填哪个?

字幕原用帧率 = 这份字幕当初是照着哪个版本的片源做的;视频实际帧率 = 你现在手上这个视频文件的帧率。后者在播放器里能看到(MPV 按 i、PotPlayer 按 Tab、VLC 在「工具 → 媒体信息 → 编解码器」)。前者通常不写在文件里,靠猜:字幕来自欧洲 / 国内论坛的旧资源多是 25(PAL),来自北美蓝光的多是 23.976(NTSC)。猜错了就换一个试,预览表会立刻告诉你末条被移到哪儿。实在不确定就用两点校准,它不需要知道帧率。

23.976 和 24 只差一点点,值得校吗?

值得。倍率是 1.001,听着微不足道,但它是累积的:每小时漂移 3.6 秒,一部两小时的电影到片尾就差了 7 秒多——那已经是「一句话说完了字幕才出来」的程度。同理 29.97 ↔ 30 也是 3.6 秒每小时。真正夸张的是 25 ↔ 23.976,每小时两分半

校准之后还差一点点怎么办?

用下面的微调。它是在算出来的结果之上再整体平移,正值延后、负值提前,粒度 0.1 秒。常见情况是倍率已经对了(快慢一致了),只是整轨还早或晚一点——那说明你填锚点时读的时间有个固定的小误差,微调推一下即可,不用重新填锚点。

会动我的文本和样式吗?

只改时间戳,别的一律不动。文本内容、换行、ASS 的 {\xxx} 样式标签和表头、LRC 的 meta 全部原样保留,输出格式也和输入保持一致(拖进来是 .ass 出去还是 .ass)。要顺便换格式或清样式标签,用 字幕格式转换

数据会上传吗?

不上传。读文件用浏览器的 FileReader,编码识别用原生 TextDecoder,解析、拉伸、序列化全在浏览器内存里完成,没有任何网络请求。关掉网络这个页面照样能用。