为什么 MacBook 的刷新率里有 59.94Hz 这种奇怪的小数?
打开 MacBook Pro 的显示器设置,刷新率列表大概长这样:
1 | 24Hz / 25Hz / 30Hz / 48Hz / 50Hz / 60Hz / 120Hz |
整数和小数混在一起。整数好理解,那几个小数是怎么来的?
答案要从 70 年前说起。
刷新率是什么?
显示器的刷新率,就是屏幕每秒重新绘制画面的次数。60Hz 意味着每秒画 60 张,相邻两张之间间隔约 16.7 毫秒。
视频内容也有自己的帧率——每秒包含多少帧画面。播放视频时,显示器刷新率最好和视频帧率一致。不一致会出现两种问题:
- 画面撕裂:显示器刷新到一半,视频已经换了下一帧,屏幕上同时出现两帧画面,产生一条横向裂缝
- 抖动(Judder):帧率和刷新率不整除,某些帧被显示 2 次、某些帧只显示 1 次,画面节奏不均匀,看起来像在轻微颤抖
MacBook 的 ProMotion 自适应刷新率会自动切换到和当前视频匹配的刷新率,消除这两个问题。整数刷新率对应整数帧率的内容,小数刷新率对应历史遗留的小数帧率内容。
一切始于 1953 年的彩色电视
黑白电视时代,帧率是整整齐齐的 60Hz,和美国电网频率同步,画面稳定。
1953 年,美国推出彩色电视标准(NTSC)。工程师需要在原有黑白信号里塞入一个彩色信号。问题是,电视信号里同时存在三种频率:
- 行扫描频率($f_H$):电子束从左到右扫描一行的频率,约 15,750 Hz
- 彩色副载波($f_{色}$):携带颜色信息的高频信号,约 3.58 MHz
- 音频载波($f_{音}$):携带声音信息的信号,4.5 MHz
这三个信号同时在一根天线上传输。频率关系稍有不对,就会互相干扰,在画面上产生肉眼可见的条纹。
要消除干扰,三个频率之间必须满足严格的数学关系。工程师算来算去,发现唯一的解法是把帧率从 60Hz 降低 0.1%,乘以 1000/1001:
$$60 \times \frac{1000}{1001} \approx 59.94 \text{ Hz}$$
一个将近整数却永远不是整数的帧率,就这样被写进了全球广播标准,沿用至今。
为什么频率不对会出现条纹?
这里有个物理现象叫差拍(Beat)。
两个频率接近但不相等的信号叠加,会产生一个新的低频信号,频率等于两者之差。440Hz 和 441Hz 的音叉同时响,你会听到每秒”嗡”一下的低频颤音,这就是差拍。
在电视信号里,彩色副载波(3.58 MHz)和音频载波(4.5 MHz)叠加,差值约 920 kHz。这个差拍频率如果和行扫描频率不成整数比,就会在画面上形成缓慢移动的低频条纹——就像两张频率略有差异的网格叠在一起,出现大块明暗图案(莫尔条纹)。

为什么偏偏是 0.1%?
数学逼出来的,不是拍脑袋定的。
第一个约束:彩色副载波必须”隐形”
彩色副载波在画面上会产生细密的点状干扰。要让这些干扰点不可见,需要利用人眼的特性:如果相邻两行的干扰点位置正好相反(一行亮的地方下一行暗),人眼会自动把它们平均掉,看不见。
要实现这个效果,副载波频率必须是行频的奇数倍的一半——比如 2.5 倍、3.5 倍,而不能是整数倍(2 倍、3 倍)。这样每扫描一行,干扰点的相位就翻转一次,相邻行互相抵消。
$$f_{色} = \frac{455}{2} \times f_H \quad \cdots (1)$$
455 是奇数,所以 455/2 满足条件。

第二个约束:差拍也必须”隐形”
彩色副载波和音频载波的差拍同样会产生条纹,所以差拍频率也必须是行频的奇数倍的一半:
$$f_{音} - f_{色} = \frac{117}{2} \times f_H \quad \cdots (2)$$
117 也是奇数,这是满足约束的最近整数解。
联立两个约束
将 (1) 和 (2) 相加,$f_{色}$ 消掉:
$$f_{音} = \frac{455 + 117}{2} \times f_H = 286 \times f_H$$
$$f_H = \frac{4{,}500{,}000}{286} \approx 15{,}734.27 \text{ Hz}$$
比黑白电视时代的 15,750 Hz 低了约 0.1%。
推出帧率
NTSC 制式每帧有 525 行,采用隔行扫描(每帧分两场扫描,帧率 = 2 × 行频 ÷ 525):
$$f_{帧} = \frac{2 \times f_H}{525} = \frac{2}{525} \times \frac{4{,}500{,}000}{286} = \frac{9{,}000{,}000}{150{,}150} = \frac{60{,}000}{1001} = 60 \times \frac{1000}{1001}$$

1001 从哪来?
$$1001 = 7 \times 11 \times 13$$
- 每帧 525 行 = 3 × 5² × 7
- 差拍系数 286 = 2 × 11 × 13
525 × 286 = 150,150,约分后分母剩下 7 × 11 × 13 = 1001。没有人刻意选这个数,它是音频频率、行数、差拍系数的因数结构联立后自然出现的。
MacBook 上的整数刷新率从哪来?
小数的来源说清楚了,整数就好理解了。
整数刷新率对应本来就是整数帧率的内容:
- 24Hz / 48Hz:电影院标准(24fps),以及高帧率电影(48fps,如《霍比特人》)
- 25Hz / 50Hz:欧洲 PAL 制式,基于 50Hz 电网,帧率天生是整数
- 30Hz / 60Hz / 120Hz:日常使用、游戏、桌面 UI
小数刷新率对应经过 ×1000/1001 修正的内容:
- 23.976Hz:好莱坞电影在流媒体上的标准帧率(24 × 1000/1001)
- 47.952Hz:23.976 的 2 倍,用于高帧率内容匹配
- 59.94Hz:北美电视、Netflix、YouTube 的主流帧率(60 × 1000/1001)

| 视频内容 | 帧率 | MacBook 切换到 |
|---|---|---|
| Netflix / YouTube(北美) | 59.94fps | 59.94Hz |
| 好莱坞电影(流媒体) | 23.976fps | 47.95Hz(2倍) |
| 欧洲 PAL 制式 | 25fps | 50Hz |
| 电影院 DCP | 24fps | 24Hz |
| 桌面 UI / 游戏 | — | 60Hz / 120Hz |
小结
MacBook 刷新率列表里的小数,是 1953 年美国工程师在数学约束下被迫引入的 0.1% 偏移(×1000/1001)的直接产物。整数刷新率对应那些本来就用整数帧率的内容标准。
两者并存,是因为世界上的视频内容本来就分两个体系:一个带着 70 年前的历史包袱,一个没有。MacBook 都要兼容。