帧率转换会让视频变长或变短,而音频长度不变,于是出现越来越大的口型不同步。这里算出漂移量、需要的音频变速比和采样点补偿数。
-
总漂移(毫秒)
-
每秒漂移(毫秒)
-
音频变速比
-
采样点补偿数
-
新时长 = 原时长 × 原帧率 ÷ 目标帧率;总漂移 = 新时长 − 原时长;采样点补偿 = 总漂移 × 采样率;音频变速比 atempo = 原时长 ÷ 新时长。
音画不同步是怎么发生的
视频的长度是由"帧数 ÷ 帧率"决定的,音频的长度是由"采样点数 ÷ 采样率"决定的。两者本来是独立的两条时间轴,只要帧率一变、而音频原样保留,时间轴就会错开——这就是帧率转换导致音画漂移的根源。
经典的 4% 问题
最著名的一次是胶片转 PAL 电视:电影 24 fps,欧洲电视 25 fps。同一批胶片帧在 25 fps 下播放,整部片缩短了 4.1667%,音频也必须相应加速 4.1667%,否则口型会越对越歪。这就是"PAL 加速"(PAL speedup),也是很多人觉得欧美老片在欧洲版本里"语速偏快"的原因。
| 转换 | 时长变化 | 每小时漂移 | 音频变速比 |
|---|---|---|---|
| 24 → 25 fps | 缩短 4% | −144 秒 | 1.041667× |
| 25 → 24 fps | 延长 4.1667% | +150 秒 | 0.96× |
| 24 → 23.976 fps | 延长 0.1% | +3.6 秒 | 0.999× |
| 23.976 → 24 fps | 缩短 0.1% | −3.6 秒 | 1.001× |
注意第二行:24 → 23.976 的漂移每小时只有 3.6 秒,短期看视频毫无问题——但两小时片长就会累积到 7 秒,对白会明显晚于口型。这类"慢漂移"最容易被忽略。
两种修法
- 改音频:对音频做整体变速(ffmpeg 的 atempo 滤镜),保持音调基本不变。合成最简单,代价是音乐调性有极轻微改变。
- 改视频:在时间轴上拉伸/压缩视频,用插帧或丢帧补齐帧数。质量损失更明显,但音频绝对干净。
对音频整体变速 4.1667%(PAL 加速配套):
ffmpeg -i in.wav -filter:a "atempo=1.041667" out.wav 按毫秒级偏移对齐音轨(音频延后 2400 毫秒):
ffmpeg -i v.mp4 -itsoffset 2.4 -i a.wav -c:v copy -c:a aac out.mp4
ffmpeg -i in.wav -filter:a "atempo=1.041667" out.wav 按毫秒级偏移对齐音轨(音频延后 2400 毫秒):
ffmpeg -i v.mp4 -itsoffset 2.4 -i a.wav -c:v copy -c:a aac out.mp4
你可能还想问
怎么判断是音频早还是晚了?
对着说话画面听声音:声音先到是音频偏早(需延后),声音后到是音频偏晚(需提前);用拍手或敲击类画面最容易比对。
偏移多少才听得出?
经验上音画偏差超过约 100 毫秒开始被察觉,超过 200 毫秒明显出戏;广播级要求更严格,通常控制在几十毫秒内。
怎么修正偏移?
在剪辑软件里整体平移音频轨道;持续渐变的偏移(越播越不同步)属帧率不匹配,需用重定时或重新封装解决,单纯平移无效。
速查在线工具箱