排障

录屏音画不同步、越录到后面差得越多怎么办?三大成因与修复(含 ffmpeg 命令)

音画差距「越录越大」是累积漂移,不是固定延迟——九成来自可变帧率(VFR)被剪辑软件当成固定帧率播,其次是音频时钟和视频时钟采样率不一致。先测片头/片中/片尾三处偏差判断类型:全程一样大=固定延迟,一次性平移即可;线性变大=漂移,必须转成 CFR 或用 atempo 拉伸音轨。Windows / Mac / OBS 的预防设置与已录完的补救命令都在文内。

讲 讲笔团队 ·2026-09-09·12 分钟

核心要点

  • 「越录差得越多」和「一直差一点」是两个病:前者叫累积漂移(drift),音视频走的是两条速度不同的时间轴;后者叫固定延迟(offset),整体平移就能修。先测片头 / 片中 / 片尾三处偏差,再决定怎么修。
  • 漂移的头号成因是可变帧率(VFR):手机录屏、部分录屏软件、游戏录制默认输出 VFR,剪辑软件按固定帧率(CFR)解释它,差距就一路拉大。先转 CFR 再剪,能解决大半。
  • 第二成因是时钟:普通设备晶振 ±50ppm 的误差,录 11 分钟就能漂出一帧(33ms)、15 分钟到达人眼可察觉阈值。采样率写错更凶——44.1kHz 当 48kHz 播快 8.84%,一小时差 5 分 18 秒。
  • 有硬阈值可对照:ITU-R BT.1359 的可察觉阈值是音频超前 45ms / 滞后 125ms,ATSC IS-191 更严(超前 ≤15ms、滞后 ≤45ms)。录课的实操标准:全片任意位置不超过一帧(30fps=33ms)。
  • 蓝牙耳机制造的是固定延迟不是漂移:SBC 约 150–300ms。只用来监听的话,文件其实是准的——别被自己的耳朵误导。
  • 已录完的补救三板斧:-fps_mode cfr 转固定帧率 → atempo 按比例拉伸音轨 → -itsoffset 平移。命令都在最后一节。

「前两分钟口型是对的,讲到二十分钟就明显对不上,最后十分钟声音比嘴快了小半句」——这是录课排障里最让人抓狂的一类问题,因为你在剪辑软件里把片头对齐了,片尾照样错。

差距随时间变大,说明音频和视频走的是两条速度不一样的时间轴,这叫累积漂移。它和「全程慢半拍」的固定延迟不是一回事,解法也完全相反:固定延迟拖一下音轨就好,漂移必须改时间基——要么把视频从可变帧率转成固定帧率,要么把音轨按比例拉伸。这篇按「先判断类型、再对症下药」的顺序讲,最后给已经录完的片子一套可以直接抄的 ffmpeg 命令。

关于本文的数字与来源:音画同步阈值引自 ITU-R BT.1359(1998)与 ATSC IS-191(2003),见 TV Tech: Updating Lip Sync Issues 与 ATSC Recommends AV Sync Rules。VFR 检测与转换方法参考 FFmpeg Wiki: Variable Frame Rate 与 FFmpeg Cookbook: VFR to CFR。OBS 的「使用设备时间戳」建议来自 OBS 官方论坛的音频漂移讨论串。蓝牙编解码器延迟数据引自 SoundGuys 的编解码器实测。各软件的菜单名称随版本变动较大,正文中不确定的地方我都标了出来。

先分清:固定延迟 还是 越录越差

这一步只要三分钟,但决定了后面所有动作。打开成片,跳到三个位置分别看口型:开头 30 秒、正中间、结尾前 30 秒。找一个有明确爆破音的字(「不」「怕」「把」),或者干脆看你敲键盘、点鼠标的动作和音效对不对得上。

三处偏差的表现 类型 本质 去哪一节
头 0.3 秒、中 0.3 秒、尾 0.3 秒,三处一样固定延迟(offset)某一环节引入了恒定的时间差固定延迟来源、平移修复
头 0 秒、中 1.8 秒、尾 3.6 秒,线性变大累积漂移(drift)两条时间轴速度不同VFR、时钟
前半段好好的,某一刻突然错开,之后维持跳变录制中设备断开重连 / 缓冲区溢出丢帧、手动切段
画面整段卡住不动、声音照常走,之后画面又接上VFR + 编码器丢帧播放器按 CFR 补帧,把空隙填成静止画VFR、丢帧
在剪辑软件里看是错的,用其它播放器看是对的(或反过来)解释差异,不是文件坏了该软件不处理 VFR 时间戳VFR

最值得记住的判据:「片头是对的,越往后越错,而且错的幅度大致跟时间成正比」= 漂移,别去剪辑软件里手动拖音轨了,拖不平的。先按下面的方法找出是哪条时间轴在跑偏。

顺带说一个反直觉的情况:有些片子只在剪辑软件里不同步,用系统播放器看反而是对的。这不是文件坏了,是剪辑软件在把 VFR 素材导入时间轴时按固定帧率重新排帧,把原本靠时间戳表达的节奏抹掉了。遇到这种,别修文件,先按 VFR 那一节预处理再导入。

差多少算问题?三个可对照的数字

「感觉有点不同步」没法执行,得有数。三个量级从松到紧:

标准 / 参照 音频超前画面 音频滞后画面 含义
ITU-R BT.1359 可察觉阈值45 ms125 ms超过这个数,观众开始「觉得哪里不对」
ITU-R BT.1359 可接受阈值90 ms185 ms整条链路端到端的容忍上限
ATSC IS-191(广播播出)15 ms45 msATSC 认为 ITU 那套太宽松,进编码器前要卡到这个数
录课实操标准(本文建议)全片任意位置 ≤ 1 帧(30fps=33ms / 25fps=40ms)好记、好验证,且天然满足 ITU 可察觉阈值
为什么「声音早」比「声音晚」更刺眼?看 ITU 的两个数——超前只容忍 45ms,滞后能容忍 125ms,差了将近三倍。这符合现实经验:声音在空气里传播本来就比光慢,人从小就习惯了「先看到、后听到」(打雷就是极端例子),所以大脑对「声音滞后」有天然的容错;而「声音抢在嘴动之前」在自然界不存在,一点点就露馅。对录课的实际启发是:如果必须留一点偏差,宁可让声音稍微滞后,别让它超前。

头号成因:可变帧率(VFR)被当成固定帧率播

这是「越录越差」最常见的原因,而且它跟你的麦克风、你的电脑配置都没关系——纯粹是文件格式和剪辑软件之间的误会。

它是怎么发生的

录屏和拍摄有个本质区别:摄像机是按固定节拍出帧的,而录屏是「屏幕变了才出一帧」。你讲 PPT 停在一页上不动的那 20 秒,屏幕没有任何变化,录屏软件没必要重复写 600 张一模一样的画面——它只写一帧,然后在时间戳里标明「这一帧持续 20 秒」。这就是可变帧率(VFR,Variable Frame Rate),它省空间、省 CPU,对录屏来说很合理。

问题出在下游。大量剪辑软件和转码工具默认假设素材是固定帧率(CFR)——每一帧的间隔都一样长。它拿到 VFR 文件,不去读时间戳,直接按「一秒 30 帧」往时间轴上排。于是那些被压缩掉的静止时段就被压扁了,视频轨比实际时长短了一截;而音频轨走的是采样时钟,一秒就是 48000 个采样点,一点不含糊。两条轨越走越分家,而且差距随时间累积——这正是「越录到后面差得越多」的标准画像。

同一个原因还会产生另一个典型症状:画面卡住不动、声音继续走,过一会儿画面又接上。播放器按 CFR 播 VFR 文件,遇到帧间隔特别长的地方就一直举着上一帧。

哪些来源默认是 VFR

  • 手机录屏(iOS 屏幕录制、安卓自带录屏)——几乎必然是 VFR,而且帧率还会随发热和负载变化;
  • OBS 的部分配置——尤其是设置里 FPS 选了「分数 FPS 值」或用了某些硬件编码器时;
  • 游戏录制类工具(Windows Xbox Game Bar、显卡自带的录制)——为了不拖累游戏帧率,天然按实际渲染节奏出帧;
  • 网页录屏 / 浏览器 MediaRecorder——浏览器采集屏幕时帧率完全跟着页面重绘走,是 VFR 的重灾区。这也是在线录屏在长时间录制上天然吃亏的地方之一;
  • 会议软件的云录制 / 本地录制——为了在网络波动时保住音频,视频帧率是弹性的,导出的文件常带明显的 VFR 特征。会议录制的导出问题另见会议软件录的课怎么导出成 MP4。

怎么确认

三种办法,从快到准:

  1. 看软件提示。把文件拖进 Premiere Pro,如果弹出「可变帧率」相关提示,就确认了。剪映、达芬奇不一定给提示,但如果预览时画面卡住而声音继续,基本也能定性。
  2. 用 ffprobe 比两个数。
    ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate,avg_frame_rate,nb_frames,duration -of default=noprint_wrappers=1 输入.mp4
    r_frame_rate 是 FFmpeg 推算的基准帧率,avg_frame_rate 是总帧数除以时长。两者对不上(比如 30/1 对 28983/1000)就高度怀疑 VFR。但要注意:对不上只是「怀疑」,对得上也不能证明是 CFR——这个判据不是铁证。
  3. 用 vfrdet 滤镜(最准)。FFmpeg 4.0 起提供:
    ffmpeg -i 输入.mp4 -vf vfrdet -f null -
    跑完在输出末尾会给出 VFR 帧的数量与占比,这个是真读了每一帧的时间戳算的。

怎么修

核心原则:在进剪辑软件之前先转成 CFR,别指望剪辑软件替你处理好。

ffmpeg -i 输入.mp4 -fps_mode cfr -r 30 -c:v libx264 -crf 18 -preset medium -c:a copy 输出.mp4
  • -fps_mode cfr 强制输出固定帧率;较老版本的 FFmpeg 用的是 -vsync cfr,该参数现已弃用但仍可用——命令报错说不认识 -fps_mode 就换成它。
  • -r 30 是目标帧率,建议直接填你想要的整数值(30 或 25),不要填 29.97 这类分数;
  • 视频必须重编码(转帧率本身就要重排帧),-crf 18 是接近视觉无损的档位,录课素材用这个足够;音频原样复制不动。

更根本的做法是从源头就录成 CFR。OBS 里:设置 > 视频,「常用 FPS 值」选 30 或 60,别选「分数 FPS 值」;设置 > 输出 > 录像,确认编码器的帧率配置没有跟着画面走。OBS 的完整设置见 OBS 怎么录屏?从下载到录出声音的完整设置教程。用手机或 iPad 参与录制的,更要留意这一条——路线选型见 用 iPad 给电脑录课怎么做 和 用手机当电脑摄像头录课怎么做。

第二成因:音频时钟和视频时钟不是同一个

排除了 VFR 还在漂,那就得看时钟了。你的电脑里不止一个时间基准:声卡有自己的晶振,USB 麦克风里有另一颗晶振,摄像头有第三颗,操作系统还有自己的高精度计时器。它们标称都是「一秒」,但没有一个真的准。

晶振误差:一个被低估的数字

消费级设备的晶振精度通常在 ±50ppm(百万分之五十,即 0.005%)这个量级,好一点的 ±20ppm,差的能到 ±100ppm。看着微不足道,换算成录课时长就不是了:

时钟误差 录 10 分钟偏差 录 1 小时偏差 多久漂出 1 帧(33ms)
10 ppm(0.001%,好设备)6 ms36 ms约 55 分钟
50 ppm(0.005%,最常见)30 ms180 ms约 11 分钟
100 ppm(0.01%)60 ms360 ms约 5.5 分钟
0.1%(软件重采样出错量级)0.6 秒3.6 秒约 33 秒
8.84%(44.1kHz 当 48kHz 播)约 53 秒约 5 分 18 秒不到 0.4 秒

读这张表的三个结论:

  • 典型的 50ppm 误差,录 11 分钟就漂出一帧、15 分钟就到 ITU 的 45ms 可察觉阈值。所以「短视频没事、录一节 45 分钟的完整课就崩」是完全正常的现象——不是你今天运气差。
  • 录一节 45 分钟的常态课(评职称的课堂教学实录就是这个长度),50ppm 下末尾会差 135ms,已经超过可察觉阈值三倍。
  • 最后一行才是真正的灾难:采样率标错不是「稍微有点漂」,是几十秒量级的错位。这类问题通常一眼就能看出来,也最好修——统一采样率即可。

三个要统一的地方

OBS 只支持 44.1kHz 和 48kHz 两档,任何一个设备对不上就会触发重采样,而重采样质量差的实现正是漂移的来源之一。所以:

  1. 录制软件的采样率:统一定成 48000Hz(视频行业标准,和后续导出的 AAC 音轨也对得上)。OBS 在 设置 > 音频 > 常规 里。
  2. Windows 里每一个音频设备的「默认格式」:右键任务栏音量图标 > 声音设置 > 拉到底点「更多声音设置」,在「播放」和「录制」两个选项卡里逐个设备进属性 > 高级 > 默认格式,全部改成 48000Hz。注意是「每一个」——包括你现在没在用的那些,因为软件可能在录制中途把它们拉起来。
  3. macOS 里的设备格式:打开 「音频 MIDI 设置」(在 应用程序 > 实用工具 里),左侧逐个选中输入 / 输出设备,把「格式」统一成 48000.0 Hz。Mac 录音的完整设置见 Mac 录屏怎么录声音。

OBS 特有的一个开关:使用设备时间戳

如果你用 OBS 且已经统一了采样率还在漂,检查这一项:音频输入采集源 > 属性 > 「使用设备时间戳」(Use Device Timestamps)。

它决定 OBS 是相信音频设备自己报的时间戳,还是用 OBS 自己的时钟给音频打标。OBS 论坛上关于音频漂移的讨论里,这个勾是被提到最多的解法——在 Windows WASAPI 设备上 OBS 默认就是不勾(关闭),正是为了防漂移。但也有反例:部分采集卡(Elgato 的一些型号有已知的时间戳漂移问题)在关闭时会立刻错位,勾上反而正常。

所以别背结论,做个对照实验:两种状态各录 10 分钟同样的内容,看片尾偏差,哪个不漂用哪个。

「同步偏移」修不了漂移。OBS 的「高级音频属性」里有个同步偏移(毫秒),很多教程一上来就让你调它。要说清楚:它加的是一个固定值,只能修固定延迟。面对越录越差的漂移,你在片头调准了,片尾照样错——而且因为片头看着对了,你会以为修好了,导出后才发现白忙。先分清类型再动手,这就是本文第一节存在的理由。

第三成因:录制时丢帧、编码器跟不上

前两个成因是「时间基不对」,这一个是「机器真的忙不过来」。当 CPU / GPU 编码不过来时,录屏软件面临一个选择:要么丢弃来不及编码的帧,要么把音频缓冲区撑爆。处理得好的软件会丢帧但把时间戳写对(结果是画面偶尔卡顿但同步正常);处理得不好的就会丢帧且时间戳跟着错位,于是漂。

怎么识别:这类问题有一个很好认的特征——偏差不是平滑增长的,而是「一台阶一台阶」跳。而且往往和你做了什么强相关:一放高清教学视频就跳一次、一开摄像头就跳一次、一切换到复杂的动画 PPT 就跳一次。OBS 的话,直接看主界面右下角状态栏的丢帧统计,或者「帮助 > 日志文件」里的丢帧记录,一目了然。

怎么处理(按性价比排序):

  1. 换硬件编码器。OBS 设置 > 输出 > 录像 > 编码器,从 x264(走 CPU)换成 NVIDIA NVENC / AMD AMF / Intel QuickSync(走显卡里的专用编码单元)。这一步通常能把 CPU 占用直接砍掉一大半,是最立竿见影的动作。
  2. 降录制参数。录课不是录游戏:1080p / 30fps 完全够用,PPT 讲解甚至 25fps 都行。从 60fps 降到 30fps,编码压力直接减半,而讲课内容看不出任何区别。分辨率与画幅的取舍见 录课录出来有黑边、画面不满屏怎么办。
  3. 录到固态硬盘、别录到机械盘或 U 盘。写入跟不上会导致录制线程阻塞,进而丢帧。也别录到网盘同步目录里(OneDrive、坚果云的同步文件夹)——同步进程会在你录制时抢 IO。
  4. 把无关程序关干净。浏览器几十个标签页、微信、杀毒软件全开着录课,是丢帧的常客。开录前的完整清单见 录课前电脑要怎么设置。

固定延迟的三个来源:蓝牙、监听、采集卡

如果你测出来三处偏差一样大,那是固定延迟,找下面三个来源。好消息是这一类修起来最简单:整体平移一下就完事。

① 蓝牙耳机(最常见,也最容易误判)

蓝牙链路的编解码延迟是实打实的:

编解码器 典型端到端延迟 对照 ITU 45ms 可察觉阈值
SBC(蓝牙基础编解码器,最普遍)150–300 ms超出 3–7 倍
AAC(苹果设备常用)100–200 ms(实现差异大)明显超出
LDAC(高码率)200–300 ms超出最多
aptX Low Latency30–40 ms(编解码层)勉强够用,但需收发两端都支持
有线可忽略✅ 录课就用这个

关键是要分清两种情况,不然你会白修一遍:

  • 只用蓝牙耳机监听(麦克风是有线的):延迟只发生在你耳朵里,录进文件的音轨其实是准的。很多老师边录边觉得「不同步」,导出一看好好的——摘掉耳机用音箱回放,或者干脆录课时不监听。
  • 用蓝牙耳机的麦克风录音:那延迟就真的进文件了。而且蓝牙麦克风一旦激活就要走 HFP 免提协议,采样率掉到 16kHz 单声道,音质也一起塌——这一点在录课声音忽大忽小那篇里讲得更细。录课一律用有线麦克风或 USB 麦克风。

② 视频采集卡 / 外接摄像头

用 HDMI 采集卡把相机或另一台设备的画面引进电脑,采集链路本身有几十到一两百毫秒的延迟,而麦克风信号是直接进声卡的——结果就是画面固定慢于声音。这类正是 OBS「高级音频属性 > 同步偏移」该出场的场合:给音频加一个正的偏移值把它推后,跟画面对齐。具体多少毫秒只能试出来,方法见下一节的拍手法。

③ 摄像头画中画和屏幕两条流的延迟不同

同时录屏幕和摄像头时,两路视频的采集延迟本来就不一样(USB 摄像头通常比屏幕采集慢),软件会尽量对齐,但不是每个软件都做得好。判断方法:只看屏幕内容和声音对不对得上,再单独看摄像头画面和声音对不对得上。如果屏幕是准的、摄像头慢,那就是这一类,在软件里单独给摄像头源加偏移。

手机 / 录音笔单独录音,注定会漂

为了音质,有的老师用手机或录音笔单独录一条音轨,后期再和屏幕录像对齐。这个思路本身没错(音质确实好得多),但你必须知道:这两个设备的时钟是完全独立的,漂移不是「可能发生」,是必然发生。

按上面那张表估算,两台设备各 ±50ppm、方向相反的话,合计误差能到 100ppm,录一小时片尾差 360 毫秒——远超可察觉阈值。所以:

  • 开录时拍一次手,收录时再拍一次手。这就是电影用场记板的原理:给两条音轨各留一个尖锐的对齐点。只在开头拍一次是不够的——你只能对齐起点,看不出漂移;首尾各一次,才能量出漂了多少、算出拉伸比例。
  • 后期先对齐首拍手,再看尾拍手差多少,然后按 atempo 那一节的公式把外录音轨整体拉伸,一次搞定。
  • 更省事的做法是让屏幕录像同时也录一条麦克风音轨(哪怕是笔记本内置麦、质量很差)。这条烂音轨是天然的对齐参考——剪辑软件的音频波形自动对齐功能就是靠它工作的,比人眼找拍手快得多。

如果你要批量录一整门课,这套流程上的取舍(是否分轨、怎么标记、怎么批处理)值得先规划好,见 批量录课怎么提效?一天录完一门课的完整流程。

开录前把它掐死:七条设置

音画不同步是典型的「前期一分钟、后期一小时」问题——尤其是已经录完的 45 分钟常态课,重录的代价高得吓人。这七条固定下来:

  1. 帧率锁成整数。录制软件里选 30fps(或 25fps),不要选「分数 FPS」「跟随源」「自动」。录课不需要 60fps。
  2. 确认输出是 CFR。OBS 在 设置 > 视频 里锁定 FPS;用手机 / 网页录屏的,默认就是 VFR,做好「导出后先转一遍 CFR」的心理准备。
  3. 采样率三处统一成 48000Hz:录制软件、系统里所有输入设备、系统里所有输出设备(Windows 逐个设备的「默认格式」;Mac 用「音频 MIDI 设置」)。
  4. 麦克风走有线。USB 麦或 3.5mm 领夹麦。蓝牙耳机可以用来听,但别用它的麦克风录。
  5. 录到本地固态硬盘,不录到机械盘、U 盘、网盘同步目录。
  6. 先试录 10 分钟,只看片尾。这一步是全篇最重要的动作:不要试录 30 秒——漂移在 30 秒里根本看不出来(50ppm 下只有 1.5 毫秒)。录满 10 分钟,直接跳到最后 30 秒看口型。对得上再正式开录。
  7. 开录后拍一次手、收录前再拍一次手。成本是两秒钟,换来的是「事后能精确量出漂了多少」的能力——剪辑时把这两下剪掉即可。这是本文里性价比最高的一条建议。
讲笔录制前的参数确认界面,开录前核对帧率、音频设备与录制设置
开录前把帧率和音频设备确认一遍,比录完 45 分钟再发现片尾对不上划算得多。

用录课软件绕开这类问题

上面这些设置之所以要一条条抠,是因为通用录屏工具把「屏幕采集」「音频采集」「编码」三件事交给你自己配。讲笔(Lecta) 是按录课流程做的工具:屏幕、麦克风、摄像头画中画在同一个引擎里采集并写进同一个工程,帧率和音频参数不需要你手动对齐;录完在同一个工程里做去静音、去口头语、本地离线生成字幕(whisper 在本机跑,不上传云端),再直接导出 MP4——整条链路只有一次编码,没有「导出 → 换个软件重新导入 → 时间基被重新解释」这个最容易出漂移的环节。

要提前知道的限制:免费版单次录制 10 分钟且带水印,正式录课需要 Pro(¥288/年,教育版 ¥128/年);支持 macOS 12.3+ 与 Windows 10+。到 lecta.cc/download 下载,或先看功能介绍。产品全貌见 讲笔是什么?功能、适合人群与录屏使用方法。

讲笔编辑器界面,录制完成后在同一工程内做字幕、去静音与导出,避免跨软件重新解释时间基
录完直接在同一个工程里剪辑导出,少一次跨软件搬运,就少一次时间基被重新解释的机会。

已经录完了怎么救(含 ffmpeg 命令)

课已经录完、重录成本太高,按这个顺序处理。顺序很重要:先转 CFR,再修漂移,最后修偏移——反过来做,前面修好的会被后面一步推翻。

第 0 步:量出偏差

在剪辑软件里放大波形,找片头和片尾各一个明确的对齐点(拍手声最好,键盘声、爆破音也行),分别记下音频波形峰值和画面对应动作之间差了多少毫秒 / 多少帧。记下两个数:片头偏差 D₀、片尾偏差 D₁,以及视频总时长 T。

第 1 步:转成固定帧率(治 VFR)

ffmpeg -i 输入.mp4 -fps_mode cfr -r 30 -c:v libx264 -crf 18 -preset medium -c:a copy 输出_cfr.mp4

较老版本 FFmpeg 把 -fps_mode 写成 -vsync(已弃用但仍能用)。转完重新量一次片尾偏差——很多片子做到这一步就已经全程同步了,后面两步可以直接跳过。

第 2 步:修线性漂移(治「越录越差」)

用 atempo 微调音频速度。比例的算法:

atempo 比例 = T ÷ (T + D₁),其中 T 是视频总时长(秒),D₁ 是片尾「音频比画面快了多少秒」(音频慢就填负数)。
例:60 分钟(3600 秒)的课,片尾音频比画面快 3.6 秒 → 3600 ÷ 3603.6 ≈ 0.999。
ffmpeg -i 输入_cfr.mp4 -filter:a "atempo=0.999" -c:v copy -c:a aac -b:a 192k 输出_同步.mp4

视频流原样复制不重编码,只重编码音频,速度很快。这里必须用 atempo,不要用 asetrate——后者靠改采样率来改速度,会把音高一起改掉,你的声音会变尖或变闷。

第 3 步:修固定偏移(治「全程慢半拍」)

把音频整体往后推 0.3 秒:

ffmpeg -i 输入.mp4 -itsoffset 0.3 -i 输入.mp4 -map 0:v -map 1:a -c copy 输出.mp4

读法:同一个文件读两遍,第二个输入被整体推后 0.3 秒,然后取第一个输入的视频 + 第二个输入的音频。要让音频提前,就把 -itsoffset 0.3 挪到第一个 -i 前面(推后视频等于提前音频)。这一步纯复制流,不重编码,几秒就跑完。

只想用剪辑软件的话,这一步在任何软件里都能做:解除音视频链接,把音轨整体拖动对应的帧数即可。

救不回来的一种情况,早点认:录制中途音频设备断开重连过(蓝牙掉线、USB 麦松动、驱动重载),偏差会在某个时间点跳变,而且前后两段的漂移速率可能都不一样。这种没有一条命令能全局修好——只能在时间轴上按跳变点切段,逐段对齐,或者重录那一段。不用重录整节课的补救思路见 录课说错了怎么办?不用重录的 6 种补救方法。

最后:交片前再验一次

修完导出、要交给评审或上传平台之前,把成片跳到最后 30 秒再看一眼。原因很实际:平台会对上传的视频做二次转码,而转码环节本身也可能重新解释时间戳,尤其当你交上去的还是个 VFR 文件时。这也是为什么第 1 步转 CFR 值得做——它同时也让你的文件在平台转码后更可控。上传后画质与规格的问题见 录课视频上传后变模糊怎么办;评审类项目的成片硬指标见 基础教育精品课视频技术要求逐条对照表。

常见问题

录屏音画不同步、越到后面差得越多是什么原因?

这叫累积漂移(drift),和「固定延迟(offset)」是两个不同的毛病。差距随时间线性变大,说明音频轨和视频轨走的是两个不同速度的时间基。最常见的三个原因:①录屏文件是可变帧率(VFR),被剪辑软件或播放器当成固定帧率(CFR)解释——手机录屏、部分录屏软件、游戏录制、网页录屏默认都是 VFR,这是头号原因;②音频采样率不统一,比如设备实际按 44.1kHz 采集、容器里写成 48kHz,音频会快 8.84%,一小时能差五分多钟;③声卡晶振和视频时间基不同源,普通设备 ±50ppm 的误差,录 11 分钟就能漂出一帧(33ms)、15 分钟到达人眼可察觉阈值。判断方法:看片头、片中、片尾三处的口型偏差,全程一样大就是固定延迟(一次性平移即可修复),越往后越大就是漂移(必须改时间基)。

怎么判断录屏文件是不是可变帧率(VFR)?

用 ffprobe 比较两个数:ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate,avg_frame_rate,nb_frames,duration -of default=noprint_wrappers=1 输入.mp4。r_frame_rate 是 FFmpeg 推算的基准帧率,avg_frame_rate 是总帧数除以时长。两者对不上(比如 30/1 对 28983/1000)就高度怀疑是 VFR。注意这不是铁证——两个数一样也不能证明就是 CFR。更准的办法是用 FFmpeg 4.0 起提供的 vfrdet 滤镜:ffmpeg -i 输入.mp4 -vf vfrdet -f null -,跑完看输出里 VFR 那一项的帧数占比。另外,把文件拖进 Premiere Pro 时如果弹出「可变帧率」提示,或者剪映 / 达芬奇里画面卡住但声音继续走,基本就可以确认了。

录屏音画不同步怎么用 ffmpeg 修复?

先看是哪一类。①固定延迟(全程偏差一样):ffmpeg -i in.mp4 -itsoffset 0.3 -i in.mp4 -map 0:v -map 1:a -c copy out.mp4,把音频整体往后推 0.3 秒(要往前推就把 -itsoffset 加在第一个 -i 前面)。②VFR 导致的漂移:先转成固定帧率,ffmpeg -i in.mp4 -fps_mode cfr -r 30 -c:v libx264 -crf 18 -preset medium -c:a copy out.mp4(较老版本的 FFmpeg 用 -vsync cfr)。③时钟漂移导致的线性偏差:用 atempo 微调音频速度,比例=视频总时长 ÷(视频总时长+片尾偏差),比如 60 分钟片子片尾音频快了 3.6 秒,就是 3600÷3603.6≈0.999,命令 ffmpeg -i in.mp4 -filter:a "atempo=0.999" -c:v copy -c:a aac -b:a 192k out.mp4。别用 asetrate 来做这件事,它会连音高一起改。

音画差多少观众能看出来?

有成文标准。国际电联的 ITU-R BT.1359 给出的「可察觉阈值」是音频超前画面 45 毫秒、或滞后画面 125 毫秒——人对「声音比画面早」远比「晚」敏感,这也是为什么口型对不上时总感觉是声音抢跑;「可接受阈值」放宽到超前 90 毫秒、滞后 185 毫秒。美国 ATSC 的 IS-191 更严,要求进编码器时音频超前不超过 15 毫秒、滞后不超过 45 毫秒。换算成录课的直观参照:30fps 下一帧是 33 毫秒,25fps 下一帧是 40 毫秒。所以实操标准可以定成「全片任意位置偏差不超过一帧」,讲课这种大量近景口型的内容尤其要卡住这条。

OBS 录课音画不同步怎么设置?

四个地方要动:①设置 > 视频,把 FPS 锁成整数(30 或 60),别用「分数 FPS 值」;②设置 > 音频,采样率选 48kHz,然后到 Windows 声音控制面板里,把所有输入设备和输出设备的「默认格式」也统一改成 48000Hz——OBS 只支持 44.1kHz 和 48kHz 两档,系统里任何一个设备对不上都会触发重采样;③音频输入采集源的属性里,「使用设备时间戳」(Use Device Timestamps)默认不勾,这是 OBS 论坛上音频漂移最常见的解法,勾上反而容易漂(少数采集卡是反过来的,两种都试一次);④「高级音频属性」里的「同步偏移」只能修固定延迟,别拿它去救越录越差的漂移——你在片头对齐了,片尾照样错。OBS 的完整设置见 OBS 怎么录屏?从下载到录出声音的完整设置教程。

蓝牙耳机会导致录课音画不同步吗?

会,但它造成的是固定延迟,不是越录越差的漂移。蓝牙编解码器的典型端到端延迟:SBC 约 150–300 毫秒,AAC、LDAC 也在一两百毫秒以上,只有 aptX Low Latency 这类低延迟方案能压到 30–40 毫秒。这个量级远超 ITU 45 毫秒的可察觉阈值。要注意区分两种情况:如果只是用蓝牙耳机监听,那么延迟只影响你听到的,录进文件的音轨其实是准的——很多老师一边听一边觉得「不同步」,导出来一看是好的;如果是用蓝牙耳机的麦克风录音,那问题就真的进文件了,而且蓝牙麦走 HFP 免提协议还会掉到 16kHz 单声道,音质也一起塌。录课一律用有线麦克风或 USB 麦克风。

录完的课已经不同步了,还能不重录救回来吗?

绝大多数能。按顺序做三件事:①先用 ffprobe 或 vfrdet 确认是不是 VFR,是的话先转成 CFR,光这一步就能解决大半「越录越差」的片子,而且转完再进剪辑软件也不会二次跑偏;②转完还剩线性偏差的,量出片尾偏了多少秒,用 atempo 按比例拉伸音轨;③剩下的固定偏移用 -itsoffset 或剪辑软件里整体平移音轨对齐。真正救不回来的只有一种:录制中途音频设备断开重连过(蓝牙耳机掉线、USB 麦松动),偏差会在某个时间点「跳变」,前后两段各自的漂移速率还不一样——这种只能在时间轴上手动切段、逐段对齐,或者重录那一段。

常见问题

录屏音画不同步、越到后面差得越多是什么原因?

这叫「累积漂移」(drift),和「固定延迟」(offset)是两个不同的毛病。差距随时间线性变大,说明音频轨和视频轨走的是两个不同速度的时间基。最常见的三个原因:①录屏文件是可变帧率(VFR),被剪辑软件或播放器当成固定帧率(CFR)解释——手机录屏、部分录屏软件、游戏录制默认都是 VFR,这是头号原因;②音频采样率不统一,比如设备实际按 44.1kHz 采集、容器里写成 48kHz,音频会快 8.84%,一小时能差五分多钟;③声卡晶振和视频时间基不同源,普通设备 ±50ppm 的误差,录 11 分钟就能漂出一帧(33ms)、15 分钟到达人眼可察觉阈值。判断方法:看片头、片中、片尾三处的口型偏差,全程一样大就是固定延迟(一次性平移即可修复),越往后越大就是漂移(必须改时间基)。

怎么判断录屏文件是不是可变帧率(VFR)?

用 ffprobe 比较两个数:ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate,avg_frame_rate,nb_frames,duration -of default=noprint_wrappers=1 输入.mp4。r_frame_rate 是 FFmpeg 推算的基准帧率,avg_frame_rate 是总帧数除以时长。两者对不上(比如 30/1 对 28983/1000)就高度怀疑是 VFR。注意这不是铁证——两个数一样也不能证明就是 CFR。更准的办法是用 FFmpeg 4.0 起提供的 vfrdet 滤镜:ffmpeg -i 输入.mp4 -vf vfrdet -f null -,跑完看输出里 VFR 那一项的帧数占比。另外,把文件拖进 Premiere Pro 时如果弹出「可变帧率」提示,或者剪映/达芬奇里画面卡住但声音继续走,基本就可以确认了。

录屏音画不同步怎么用 ffmpeg 修复?

先看是哪一类。①固定延迟(全程偏差一样):ffmpeg -i in.mp4 -itsoffset 0.3 -i in.mp4 -map 0:v -map 1:a -c copy out.mp4,把音频整体往后推 0.3 秒(要往前推就把 -itsoffset 加在第一个 -i 前面)。②VFR 导致的漂移:先转成固定帧率,ffmpeg -i in.mp4 -fps_mode cfr -r 30 -c:v libx264 -crf 18 -preset medium -c:a copy out.mp4(较老版本的 FFmpeg 用 -vsync cfr)。③时钟漂移导致的线性偏差:用 atempo 微调音频速度,比例=视频总时长 ÷(视频总时长+片尾偏差),比如 60 分钟片子片尾音频快了 3.6 秒,就是 3600÷3603.6≈0.999,命令 ffmpeg -i in.mp4 -filter:a "atempo=0.999" -c:v copy -c:a aac -b:a 192k out.mp4。别用 asetrate 来做这件事,它会连音高一起改。

音画差多少观众能看出来?

有成文标准。国际电联的 ITU-R BT.1359 给出的「可察觉阈值」是音频超前画面 45 毫秒、或滞后画面 125 毫秒——人对「声音比画面早」远比「晚」敏感,这也是为什么口型对不上时总感觉是声音抢跑;「可接受阈值」放宽到超前 90 毫秒、滞后 185 毫秒。美国 ATSC 的 IS-191 更严,要求进编码器时音频超前不超过 15 毫秒、滞后不超过 45 毫秒。换算成录课的直观参照:30fps 下一帧是 33 毫秒,25fps 下一帧是 40 毫秒。所以实操标准可以定成「全片任意位置偏差不超过一帧」,讲课这种大量近景口型的内容尤其要卡住这条。

OBS 录课音画不同步怎么设置?

四个地方要动:①设置 > 视频,把 FPS 锁成整数(30 或 60),别用「分数 FPS 值」;②设置 > 音频,采样率选 48kHz,然后到 Windows 声音控制面板里,把所有输入设备和输出设备的「默认格式」也统一改成 48000Hz——OBS 只支持 44.1kHz 和 48kHz 两档,系统里任何一个设备对不上都会触发重采样;③音频输入采集源的属性里,「使用设备时间戳」(Use Device Timestamps)默认不勾,这是 OBS 论坛上音频漂移最常见的解法,勾上反而容易漂(少数采集卡是反过来的,两种都试一次);④「高级音频属性」里的「同步偏移」只能修固定延迟,别拿它去救越录越差的漂移——你在片头对齐了,片尾照样错。OBS 的完整录制设置见站内的 OBS 教程。

蓝牙耳机会导致录课音画不同步吗?

会,但它造成的是固定延迟,不是越录越差的漂移。蓝牙编解码器的典型端到端延迟:SBC 约 150–300 毫秒,AAC、LDAC 也在一两百毫秒以上,只有 aptX Low Latency 这类低延迟方案能压到 30–40 毫秒。这个量级远超 ITU 45 毫秒的可察觉阈值。要注意区分两种情况:如果只是用蓝牙耳机监听,那么延迟只影响你听到的,录进文件的音轨其实是准的——很多老师一边听一边觉得「不同步」,导出来一看是好的;如果是用蓝牙耳机的麦克风录音,那问题就真的进文件了,而且蓝牙麦走 HFP 免提协议还会掉到 16kHz 单声道,音质也一起塌。录课一律用有线麦克风或 USB 麦克风。

录完的课已经不同步了,还能不重录救回来吗?

绝大多数能。按顺序做三件事:①先用 ffprobe 或 vfrdet 确认是不是 VFR,是的话先转成 CFR,光这一步就能解决大半「越录越差」的片子,而且转完再进剪辑软件也不会二次跑偏;②转完还剩线性偏差的,量出片尾偏了多少秒,用 atempo 按比例拉伸音轨;③剩下的固定偏移用 -itsoffset 或剪辑软件里整体平移音轨对齐。真正救不回来的只有一种:录制中途音频设备断开重连过(蓝牙耳机掉线、USB 麦松动),偏差会在某个时间点「跳变」,前后两段各自的漂移速率还不一样——这种只能在时间轴上手动切段、逐段对齐,或者重录那一段。

用讲笔录下一节课

免费下载,macOS 与 Windows 均可用。边讲边标注,录完自动出字幕。