工作流 约 5 分钟
时间码换算:帧数、秒与 SMPTE 怎么互转
同一个时间点,字幕软件里写 61.5 秒,剪辑软件里显示 00:01:01:12,渲染脚本里填 1537 帧——它们是同一件事,但换算错了就是半帧的错位,肉眼可见。
时间码的三种表达
秒是最通用的:一个十进制数,任何软件都认,字幕文件(SRT/VTT)用的就是它。SMPTE 时间码是 HH:MM:SS:FF 四段式,最后一段 FF 是帧号,剪辑软件和摄像机都用它,因为它精确到帧。帧数是纯粹的整数计数:从片头第 0 帧数起第 N 帧,程序和渲染队列喜欢它,因为不需要解析格式。
三者的换算枢纽是帧率:帧数除以帧率得到秒,秒的小数部分乘以帧率得到帧号。SMPTE 的前两段按 60 进制展开成秒,再处理帧号。
29.97fps 的掉帧历史
彩色电视刚出现时,黑白电视的 30fps 行扫描频率会和彩色信号互相干扰,工程师把帧率微调到 30/1.001≈29.97 来避开。代价是时间码乱了:按 HH:MM:SS:FF 数下去,每分钟会比真实时间慢约 1.8 帧,每小时差约 108 帧。
Drop frame(DF)时间码用"跳号"来补偿——每分钟跳过第 00 和第 01 帧(逢十分钟不跳),让时间码显示值贴近真实时间。跳掉的只是编号不是画面。所以 00:01:00:00 在 NDF(不掉帧)时间码下不等于 60 秒,在 DF 下才基本相等。用错了体系,长片对同步必错。
实际工作里的换算坑
字幕对帧:SRT 的时间是秒,导入以 25fps 运行的剪辑软件再导出,四舍五入的累积误差会让长字幕尾部漂移半帧以上,长片字幕建议全程用秒为中间格式,只在最终对帧时换算。
跨软件粘贴时间码:A 软件 29.97 DF、B 软件 29.97 NDF,同样的字串差着内容。换算前先确认源的真实帧率和 DF/NDF 属性——这两个信息在编码检测工具里都能查到。