23.976 和 25 是怎么来的:字幕越走越偏背后的一段电视史

· 约 4 分钟 🕰️ 字幕时间轴校准

打开一份对不上的字幕,你会发现校正它需要乘一个很不圆整的数: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.9761.04272 分 34 秒5 分多
25 → 241.04172 分 30 秒5 分
24 → 23.9761.00103.6 秒7 秒多
30 → 29.971.00103.6 秒7 秒多

7 秒是什么概念?一句话说完了,字幕才出来。 这也是为什么有些字幕「开头看着挺好,后半段总感觉慢半拍」——它踩的正是这 0.1%。

所以拿到一份对不上的字幕,先分类

三种不同步,解法完全不同:

现象原因解法
整轨一致地早/晚几秒片头长度不同、版本不同只整体偏移
开头对得上,越往后差越多帧率不符(上面这段历史)帧率换算两点校准
前半段对,后半段突然错开片源中间被剪过线性校正救不了,得分段

判断方法只有一条:把开头对齐,然后跳到片尾看。还差,而且差得比开头更多——是拉伸,不是平移。

知道两边帧率就直接选帧率换算;不知道就用两点校准,给出前后两句话的「文件里写的时间」和「实际该出现的时间」,倍率和偏移会被一起解出来。两个锚点离得越远越准。这两种模式都在 字幕时间轴校准 里,校完只改时间戳,文本和样式一律不动。

延伸

最后记一个数就够了:看到 1.0427,那是 PAL 和 NTSC 的差;看到 1.001,那是 1953 年给彩色电视让出来的那 0.1%。

❓ 常见问题

为什么播放器不能自动把字幕校正过来?

因为字幕文件里根本没有帧率这个字段SRT、ASS、VTT 记的都是绝对时间(时:分:秒.毫秒),播放器只能照着时间戳显示,无从知道这份字幕当初是按哪个帧率做的。唯一的例外是 MicroDVD 的 .sub 格式,它记的是帧号而不是时间——播放这种字幕时必须告诉播放器帧率,帧率填错整条时间轴就会线性偏移,这也是它逐渐被淘汰的原因之一。所以校正只能靠你判断:知道两边帧率就直接换算,不知道就用两点校准反解倍率,见 字幕时间轴校准

怎么知道手上这个视频是多少帧?字幕又是按多少帧做的?

视频能查,字幕只能推查视频帧率:MPV 按 i、PotPlayer 按 Tab、VLC 走「工具 → 媒体信息 → 编解码器」,都能看到形如 23.976 fps 的数字。推字幕帧率:(1) 字幕来自欧洲或国内老论坛的 DVD 时代资源,多是 25;(2) 来自北美蓝光、WEB-DL 的,多是 23.976;(3) 把字幕最后一条的时间和视频总时长比一比——字幕末条比片长短约 4%,说明字幕是 23.976 而视频是 25;长约 4% 则相反。推错了成本很低,换一个再看一眼预览就知道。

PAL 提速 4%,真的能听出来吗?

能,而且是整体升调算一下:25 ÷ 24 = 1.0417,换算成音高是 12 × log₂(1.0417) ≈ 0.71 个半音表现:(1) 全片配乐和人声整体升高大半个半音,有绝对音感的人会直接察觉「调不对」;(2) 片长缩短 4%,一部 120 分钟的电影变成 115 分钟;(3) 对白语速略快,不留意不容易发现。为什么还这么做:PAL 地区的替代方案是做 4% 的帧插值或丢帧,画面会抖;直接提速播放画面完全干净,代价只在音频上。后来的补救:部分 DVD 母带做过音高修正(变速不变调),但早期大量片源没有。

流媒体时代了,为什么还会遇到这个问题?

因为片源和字幕的来源已经分家了现在的典型情况:(1) 视频是 23.976 的 WEB-DL 或蓝光重编码;(2) 字幕来自字幕站,可能是十几年前按 PAL DVD 做的,一直被转手沿用。两者对不上是来源不同,不是谁做错了。另一类新出现的情况:同一部剧的不同平台版本片头长度不一样(有无 logo、有无「本剧纯属虚构」卡),这属于整体偏移而不是拉伸,用只平移的模式推一下即可。判断方法不变:对齐开头后跳到片尾看——还差且差得更多,是帧率;差得一样多,是偏移。

🕰️ 打开 字幕时间轴校准 字幕越往后越不同步·两点校准自动解出拉伸倍率·23.976/25/29.97 帧率换算·整体偏移微调·前后对照预览·本地处理不上传

🔗 相关阅读

全部教程 →