打开一份对不上的字幕,你会发现校正它需要乘一个很不圆整的数:1.0427。
这个数不是谁拍脑袋定的,它是 25 ÷ 23.976。而 25 和 23.976 这两个帧率,一个来自 1960 年代的欧洲电视制式,一个来自 1953 年美国给黑白电视加彩色时的一次妥协。你那条越走越偏的时间轴,装着这两件事的差。
起点:电影是 24 帧
有声电影自 1920 年代末起把拍摄和放映帧率定在 24 fps,此后基本没变过。今天院线片、蓝光、流媒体的绝大多数电影内容,母版仍然是 24 帧。
问题出在电视——电视的帧率不是按胶片定的,是按市电频率定的。
NTSC:30 帧,以及那个 0.1%
北美市电 60 Hz,早期黑白电视就把场频定在 60 Hz、帧率 30 fps(隔行,两场一帧)。
1953 年要在这套系统上加彩色,而且必须让老黑白电视机仍能正常收看。方案是在原有信号里插入一个约 3.58 MHz 的彩色副载波。但这个副载波会和伴音载波产生差拍,在画面上形成可见的干扰纹。
工程上的解法是把行频稍微挪一点,让几个载波的频率关系错开。代价是帧率跟着变成原来的 1000/1001:
30 × 1000/1001 = 29.97002...
同一个系数后来也被用在电影内容上:
24 × 1000/1001 = 23.97602...
所以 29.97 和 23.976 都不是近似值,它们精确地等于 30000/1001 和 24000/1001。小数写法才是近似的——这一点后面会变得很重要。
24 帧怎么放进 30 帧:3:2 下拉
电影 24 帧要在 30 帧的电视上播,多出来的 6 帧从哪来?答案是 3:2 pull-down:把每 4 个电影帧拆成场,按 3 场、2 场交替分配,变成 5 个电视帧。
电影帧 A B C D
电视场 AA BBB CC DDD
关键在于:时长完全不变。24 帧的一秒仍然是一秒,只是被摊成了更多场。所以 NTSC 地区的电影在电视上播,片长和影院一致,音调也一致。
PAL:25 帧,以及直接提速 4%
欧洲市电 50 Hz,PAL 制式场频 50 Hz、帧率 25 fps。
24 要变成 25,差距是 4.17%——太小,做 3:2 那样的场分配不划算;做帧插值或规律丢帧,画面会抖。于是 PAL 地区选了最简单粗暴的一条路:
把 24 帧的片子直接当 25 帧播。
画面一帧不改,全片放快 4.17%。后果有三个:
| 后果 | 数值 |
|---|---|
| 片长缩短 | 4%(120 分钟 → 115.2 分钟) |
| 音调升高 | 12 × log₂(25/24) ≈ 0.71 个半音 |
| 语速变快 | 约 4%,不留意察觉不到 |
这就是PAL speedup。它意味着同一部电影,PAL DVD 比 NTSC DVD 短 4 分钟、整体高大半个半音。有绝对音感的人看欧版 DVD 会觉得配乐「调不对」,就是这个原因。
于是字幕分成了两族
字幕是照着某一个具体版本的片源做的,时间轴自然就继承了那个版本的时基:
| 字幕来源 | 典型帧率 |
|---|---|
| 欧洲 / 国内老论坛的 DVD 时代资源 | 25 |
| 北美蓝光、WEB-DL、多数流媒体 | 23.976 |
| 少数原生数字母版 | 24 |
把 25 帧时基的字幕配到 23.976 的片源上,需要的倍率就是:
25 ÷ 23.976 = 1.04271
每小时漂移 2 分 34 秒。一部两小时的电影,片尾会差出五分多钟——那已经不是「不太同步」,是完全对不上了。
0.1% 也必须校
另一对更隐蔽:24 和 23.976,倍率只有 1.001。
听起来可以忽略,但它是累积的:
| 换算 | 倍率 | 每小时漂移 | 两小时片尾 |
|---|---|---|---|
| 25 → 23.976 | 1.0427 | 2 分 34 秒 | 5 分多 |
| 25 → 24 | 1.0417 | 2 分 30 秒 | 5 分 |
| 24 → 23.976 | 1.0010 | 3.6 秒 | 7 秒多 |
| 30 → 29.97 | 1.0010 | 3.6 秒 | 7 秒多 |
7 秒是什么概念?一句话说完了,字幕才出来。 这也是为什么有些字幕「开头看着挺好,后半段总感觉慢半拍」——它踩的正是这 0.1%。
所以拿到一份对不上的字幕,先分类
三种不同步,解法完全不同:
| 现象 | 原因 | 解法 |
|---|---|---|
| 整轨一致地早/晚几秒 | 片头长度不同、版本不同 | 只整体偏移 |
| 开头对得上,越往后差越多 | 帧率不符(上面这段历史) | 帧率换算或两点校准 |
| 前半段对,后半段突然错开 | 片源中间被剪过 | 线性校正救不了,得分段 |
判断方法只有一条:把开头对齐,然后跳到片尾看。还差,而且差得比开头更多——是拉伸,不是平移。
知道两边帧率就直接选帧率换算;不知道就用两点校准,给出前后两句话的「文件里写的时间」和「实际该出现的时间」,倍率和偏移会被一起解出来。两个锚点离得越远越准。这两种模式都在 字幕时间轴校准 里,校完只改时间戳,文本和样式一律不动。
延伸
- 校完要转格式或修乱码:字幕格式转换,四种格式的结构差异见 字幕格式全解
- 要做中英双语轨:双语字幕合并——两轨帧率不同时,先各自校到同一条时间线上再合并,否则按时间重叠配对会大面积错位
- 要把字幕扒成纯文本:字幕转文字稿
最后记一个数就够了:看到 1.0427,那是 PAL 和 NTSC 的差;看到 1.001,那是 1953 年给彩色电视让出来的那 0.1%。