# 为什么字幕看得越久，偏差越大

> 如果字幕开头是对的，之后慢慢提前或落后，那么整体平移是没用的：它是为一个以不同速度播放的电影版本制作的。下面说明如何判断你遇到的是哪种问题，以及每种问题怎么修复。

来源：https://frameplayer.app/zh/guides/subtitles-out-of-sync
更新于：2026-09-21

字幕不同步有两种情况，修复方法正好相反。一种是固定的差距：从第一个场景到最后一个场景，每一行都晚半秒。另一种会越来越大：开头几行没问题，到电影中段偏了好几秒，到结尾描述的已经是另一个场景了。第一种是延迟。第二种是速度不同，而它是下载来的字幕最常见的问题，远比第一种多。

## 延迟还是逐渐偏差：你遇到的是哪一种

记下开头附近字幕偏了多少，然后往后跳半小时再看一次。

- **两次的差距一样**。这是延迟。任何播放器的字幕延迟设置都能修复：设置一次，整部电影就都对了。
- **第二次的差距更大**。这是逐渐偏差。延迟设置修复不了，因为它把每一行移动相同的量，而误差却在不断增大。

## 逐渐偏差从何而来

电影以每秒 24 帧拍摄。这个帧率有两个版本在流通，还有第三个数字是因为过去的欧洲电视而出现的：

- **23.976**（24000/1001）是为北美电视制作的视频播放电影的帧率，也是如今大多数资源使用的帧率。
- **25** 是欧洲 PAL 电视使用的帧率。电影直接加快百分之四播放，所以一部两小时的电影会短大约五分钟。
- 精确的 **24** 是电影院使用的帧率。不过大多数蓝光电影仍然是 23.976。

字幕文件就是一张时间列表。按 25 fps 的版本对好时间轴，再放到 23.976 fps 的版本上播放，第一行之后的每一行都会提前一点，提前的量是电影已播放时长的百分之四。

| 电影播放到 | 25 fps 字幕配 23.976 fps 视频 |
|---|---|
| 1 分钟 | 提前 2.5 秒 |
| 10 分钟 | 提前 25 秒 |
| 30 分钟 | 提前 1 分 14 秒 |
| 60 分钟 | 提前 2 分 27 秒 |
| 90 分钟 | 提前 3 分 41 秒 |

按 23.976 fps 版本对好时间轴的字幕放到 25 fps 的版本上，则方向相反，越来越晚，幅度相同。而 23.976 和 24 之间相差千分之一：一小时结束时大约三秒半，小到在最后一个场景之前都不会被注意到。

> **注意：** **有几种字幕格式计算的是帧数而不是时间**。MicroDVD 的 `.sub` 文件写的是“从第 1204 帧到第 1260 帧”，所以对不对取决于播放器假定的帧率。按错误的帧率播放，它们的偏差和上表完全一样。

## 如何修复逐渐偏差

### 最好的办法：为你这个版本制作的字幕

按与你的视频相同的资源对好时间轴的字幕，根本不需要修复。OpenSubtitles 可以按文件本身而不是文件名找到这样的字幕：它根据文件大小以及文件开头和结尾各 64 KB 计算出一个指纹，返回大家为这个文件上传的字幕。没有匹配结果时，找资源名与你的一致、帧率也相同的字幕，大多数字幕网站都会在每个文件旁边标出帧率。

### 转换字幕文件的帧率

没有更好的字幕时，就拉伸你手上的这份。这是一次性的修改，能永久修好文件：

- **Subtitle Edit**（Windows，免费）：*Synchronization › Change frame rate*，从 25 改为 23.976；如果字幕是落后的，就反过来改。它的 *Point sync* 可以根据你手动对上的两行字幕完成同样的事，还能同时修复延迟。

### 或者在观看时拉伸

- **mpv** 可以用 `--sub-speed` 实时拉伸字幕时间。对于 23.976 fps 视频上的 25 fps 字幕，就是 `--sub-speed=25/23.976`。
- **VLC** 在 *Tools › Track Synchronization* 中有字幕速度设置。

这些设置只在本次会话中有效（如果写进配置文件，则对所有文件都有效），所以转换文件通常是更好的修复方法。

## Frame Player 能帮上什么

*图：[Frame Player](https://frameplayer.app/zh) 中的字幕搜索：第一个结果是按文件本身找到的，无需调整即可使用；第二个是为 25 fps 制作的，在下载前就被标了出来。*

- **它首先按文件搜索**。字幕面板向 OpenSubtitles 查找为你这个副本制作的字幕，并标明结果是来自这种匹配，还是来自按片名搜索，因为按片名匹配到的可能是另一个资源，时间轴就值得检查一下。
- **帧率不同会在下载前标出**。如果某个结果是为与你的视频不同的帧率制作的，面板会把它标出来，这样你就不会选中那个会越来越不同步的字幕。
- **它会提出让字幕适配你的视频**。下载一个为不同帧率制作的字幕后，面板会询问是否拉伸它以匹配视频。它只询问而不直接拉伸，因为字幕网站上的帧率只是上传者自己填写的。
- **字幕菜单可以手动拉伸任何字幕**：25 → 23.976、23.976 → 25 或 24 → 23.976。这适用于你原本就有的字幕文件，以及视频内部那些没人说明是按什么帧率制作的字幕轨。它适用于文本字幕；基于图像的字幕（PGS、VobSub）无法拉伸。
- **你设置的速度和延迟会为这个文件保存**，并且只为这个文件保存，所以下次打开时字幕仍然是对的，也不会影响到下一集。
- **种子内的字幕会自动加载**，并与正在播放的那一集匹配。

先修正速度，再用延迟消除剩下的差距。如果你想让字幕文件本身在所有播放器中都是对的，用 Subtitle Edit 转换一次仍然能永久解决。

## 常见问题

### 为什么字幕开头是对的，后面就错了？

因为它是按另一个以不同速度播放的电影版本对的时间轴。最常见的情况是，为 25 fps 资源制作的字幕，放在 23.976 fps 的资源上播放。两者开头一致，之后偏差约为播放时长的百分之四，一小时结束时就是两分半钟。

### 字幕延迟设置能修复吗？

只有在偏差始终不变时才行。延迟把每一行移动相同的量，所以面对逐渐累积的偏差，它只是把字幕对得上的那个点从电影开头挪到了中间某处。

### 23.976 是什么意思？

电影以每秒 24 帧拍摄。为北美电视制作的视频以 24000/1001，即约 23.976 帧播放，如今大多数资源都保留了这个帧率。欧洲的 PAL 电视以 25 帧播放电影，快了百分之四，为这些版本制作的字幕也带着这个速度。

### 字幕开头晚、结尾早，怎么办？

那是逐渐偏差和固定延迟同时存在。先修正速度（找适合你这个资源的字幕，或者转换帧率），然后再用延迟消除剩下的差距。
