公众号旧文
为什么60帧不是真的60帧,而是59.94帧?
我挖出了一个70年前的技术遗产。
今天我在整理自己的视频库。
这些视频是用 yt-dlp 下载的,大部分是舞台视频和 MV。
我想做一件很普通的事情:
把所有 4K60P的视频筛选出来。
于是我写了个脚本,用 ffprobe 扫描每个视频的分辨率和帧率。
扫描结果出来之后,我发现事情有点不对劲。
列表里是这样的:
3840 × 2160 60
3840 × 2160 59.94
3840 × 2160 23.976
1920 × 1080 30
60帧我能理解。 24帧我也能理解。
但 59.94 是什么鬼?
更奇怪的是,很多视频居然是:
23.976 fps
看起来像是有人故意把帧率改成一个奇怪的小数。
经过一番探究我才发现,这个问题的答案,要从 70年前的电视机说起。
一、最早的电视,其实是30帧
在黑白电视时代,美国采用的电视标准叫 NTSC。
当时电视信号的电力频率是 60Hz。
为了和电网同步,电视的扫描频率也设计成:
60 次扫描 / 秒
但电视采用的是 隔行扫描。
简单来说,一帧画面不是一次扫出来的,而是分两次:
- 第一次扫奇数行
- 第二次扫偶数行
这样一来:
60 次扫描
= 30 帧画面
所以早期电视的帧率其实是:
30 fps
到这里,一切都还很正常。
直到 彩色电视出现。
二、彩色电视带来了一个巨大的兼容问题
1950年代,美国准备在电视信号中加入 彩色信息。
问题来了:
如果直接把彩色信号加入广播,老的黑白电视机会受到干扰。
换句话说:
如果处理不好,全美国几千万台电视都会出问题。
工程师必须找到一个办法:
- 新电视能显示彩色
- 旧电视还能正常看节目
最后他们做了一个看起来很奇怪的决定:
把整个电视系统的频率降低 0.1%。
三、一个奇怪的小数诞生了
新的帧率计算方式变成:
30 ÷ 1.001
结果是:
29.97 fps
同样的逻辑:
60 ÷ 1.001
得到:
59.94 fps
于是世界上就出现了一些奇怪的帧率:
29.97 fps
59.94 fps
这些数字从1953年开始,一直沿用到今天。
四、电影为什么是23.976?
电影工业的标准帧率是:
24 fps
但如果电影要在电视上播放,就必须匹配电视系统。
于是工程师又做了一次同样的调整:
24 ÷ 1.001
得到:
23.976 fps
所以现在的视频世界其实有两套帧率体系:
电影体系:
24
30
60
电视体系:
23.976
29.97
59.94
五、为什么视频网站显示60fps?
如果你在视频网站上看视频,通常只会看到:
60fps
而不会看到 59.94。
这是因为平台通常会 四舍五入显示,让普通用户更容易理解。
但如果你用视频工具查看文件,比如 ffprobe,就会看到真实帧率:
59.94 fps
这就是我今天在扫描视频库时看到的那个奇怪数字。
六、一个70年前的决定,还在影响今天
今天我只是想筛选几个 4K60的视频。
结果却发现:
我们今天看到的 59.94fps,其实是 1953年彩色电视标准留下的历史遗产。
70年前的工程师为了让黑白电视继续工作,只做了一个很小的调整。
把帧率降低 0.1%。
但这个小小的改动,一直影响到今天:
- 摄像机
- 电视台
- 视频编码器
- 视频网站
甚至你电脑里的视频文件。
有时候,技术历史比技术本身更有意思,
一个看起来毫不起眼的数字, 背后可能藏着一整段历史。