发布:
更新:
审核人:
Jonathan

字幕不同步怎么办:固定偏移、逐渐漂移和版本差异

如果字幕在整段视频中总是提前或延后相近的时间,可以整体平移字幕时间。如果偏差逐渐变大,需要漂移诊断与经测量的变换;如果某个剪辑点之后突然错位,先核对视频与字幕是否属于同一版本。

本指南说明字幕偏差的测量、校正与保存后检查方法。

先确认输入文件和字幕轨

保留原始SRT,只操作副本。先打开视频,再加载对应字幕文件,选中你要检查的字幕轨。完全没有文字时,先确认字幕确实载入、轨道已启用,并播放到一个字幕时间段;此时不能直接认定是时间偏移。

SRT保存文字和起止时间,不包含视频。美国国会图书馆的格式说明说明了这个区别。播放时还需要对应媒体文件。

在开头、中段、结尾测量同一句台词

分别找到三个明确的对应句,记录字幕文件的开始时间和视频中说出同一句话的时间。听不清或不能确认对应关系时,先换一个位置,不用不同句子估算。

这里把文件校正量定义为视频台词时间 − 当前字幕时间。下表是自拟算例,不是工具或产品实测。

位置当前SRT开始时间视频对应台词文件校正量
开头00:00:12,00000:00:10,000−2秒
中段00:10:02,00000:10:00,000−2秒
结尾00:20:02,00000:20:00,000−2秒

三处相近,适合先检查固定平移;逐渐增大,考虑是否适用线性校正;某处突然变化,检查剪辑或分段差异。三点观测是判断线索,不能单独证明帧率或其他原因。

固定偏移:同时修改开始和结束时间

上例所有受影响字幕的开始、结束时间都减2秒。例如原区间00:00:12,000 --> 00:00:14,000改为:

1
00:00:10,000 --> 00:00:12,000
列车马上出发。

反过来,字幕在8秒出现而台词在10秒,文件时间需要加2秒。文字、顺序和正的持续时间要保留。校正后出现负时间时,检查最早字幕与对应句;文字与真实时刻应保留并明确处理边界。先明确处理该条边界再保存。

SubtitleTools说明使用毫秒整体平移,并限定为整段同一偏差;2秒等于2000毫秒。使用外部工具前确认文件处理方式,私人字幕应选择适合的本地处理方式。

只想观看:使用播放器临时偏移

播放器的字幕延迟设置可用于临时观看,它不等于已修正的SRT交付文件。每次校正只在文件或播放器一处实施,避免重复。

VLC桌面3.0官方说明列出同步控制。界面、菜单和快捷键会随平台或版本不同;排名工具页与官方资料对快捷键方向的表述也有冲突。因此先用一句已知台词作小幅调整,观察文字实际提前还是延后,再继续调整。播放器方向经实际检查后再与文件公式对应。

均匀漂移:两点计算,第三点独立检查

两句台词都能明确对应、偏差平滑增大时,可以考虑线性映射。用秒表示当前字幕时间s1、s2和对应视频时间v1、v2:

a = (v2 − v1) / (s2 − s1)
b = v1 − a × s1
校正时间 = a × 原时间 + b

自拟例:s1=10、v1=10、s2=610、v2=616,得到a=1.01、b=−0.1;原310秒映射到313秒。开始和结束时间都应用映射,最后按毫秒取整。两个字幕锚点应不同、同序且与台词准确对应,满足条件后再计算。

再选中间一句独立检查。如果对不上,或者插入、删去场景后偏差跳变,改用匹配剪辑版本的字幕,或逐段重新对齐。帧率原因需要独立证据确认。SubShifter介绍了线性校正选项。

剪辑点之后突然错位:分段重新对齐

能找到匹配剪辑版本的字幕时,优先使用该版本。否则先找跳变前最后一句能准确对应的台词,以及跳变后第一句能准确对应的台词。按实际台词把字幕划为不同范围,保留原编号清单。每段测一句对应台词,将该段校正量同时应用于开始和结束,再用段内另一句独立检查。之后再有跳变,就重复分段;已对齐前段保持原时间,后段校正仅施加到确认范围。

下面是自拟例:边界前校正量0秒,边界后−5秒。

范围原字幕区间视频对应台词区间处理
边界前00:04:55,000 —> 00:04:57,00000:04:55,000 —> 00:04:57,000起止均保留
跨边界00:04:59,000 —> 00:05:02,00000:04:59,000 —> 00:05:01,000单独测量两端
边界后00:05:10,000 —> 00:05:12,00000:05:05,000 —> 00:05:07,000起止都减5秒

中间一条以完整台词仍存在于目标视频为前提。若开始套0秒、结束套−5秒,就会得到299→297秒,结束早于开始。因此改用独立测得的299→301秒。如果目标剪辑删去了部分台词,保留实际对白,并明确记录与原文字的差异:记下差异,在副本中明确修改或移除该条,并保留原件。对应关系尚未确定时,暂停该段,不编造时刻。

三句仍能对应的台词,校后的示例副本为:

1
00:04:55,000 --> 00:04:57,000
列车到了。

2
00:04:59,000 --> 00:05:01,000
等等我。

3
00:05:05,000 --> 00:05:07,000
现在可以上车了。

另取边界前原260秒的一句,视频中仍应在260秒;边界后原600秒的一句,视频中应在595秒。跨边界那一句单独复查。以上测量是教学假设,不是真实视频修复,也不证明跳变的原因。

校正后出现负时间怎么办

原1→3秒字幕若减2秒,会得到−1→1秒。先重新核对台词与校正量。如果独立观察确认目标视频的完整台词实际在0→1秒,才将这一条手动改为0→1秒,保留文字并记录持续时间已改变。每个负值按实际台词单独测量和处理。如果台词已不存在,或实际结束时间尚未确定,保留原件并标记这一条未解决,不默默丢字或把时间绕到另一小时。这是自拟边界例,不是播放实测。

需要编辑器操作路径时,Subtitle Edit 5整体时间调整说明列出了只调整所选行的选项,先选中已核对范围;参考点同步说明介绍了把字幕行设到视频对应位置的操作。用File → Open和File → Save as打开、另存SRT副本。用独立中间点及起止时间核对工具的插值结果。

在编辑器中执行已经测得的校正

官方控件截图显示了范围单选项和执行按钮。先设置范围,再执行校正:

  1. 用File → Open打开SRT工作副本,再进Synchronization → Adjust all times…。
  2. 将时间量设置为2秒(00:00:02,000)。整份同偏差已确认才选Adjust all;有限片段先选中已核对字幕,再选Adjust selected lines。Adjust selected lines and forward还影响后续全部字幕,仅用于整个后续都已测得同一偏差的情况。
  3. 核对范围和时间量后,−2秒点击一次Show earlier,+2秒点击一次Show later。它们执行调整,继续操作之前先看实际时间变化。
  4. −2秒算例应由12–14变为10–12,文字保持;检查选中行和范围外行。方向或范围出错时重开未修改副本并再测量,核对后通过File → Save as…另存新SRT。

参考点路线是Synchronization → Point sync…:加载对应视频,选字幕行,打开Set sync point,定位到同句台词并记录参考点;对下一条已确认台词重复,最后用OK应用。之后独立检查第三句与起止时间。用第三句和起止时间核对插值与测量值是否一致。

保存副本,重新加载后验收

保存新的.srt副本,保留编号、HH:MM:SS,mmm --> HH:MM:SS,mmm时间行、文字和段间空行。重新打开保存的文件,重置播放器临时偏移,明确加载校后的副本,避免继续播放缓存的原文件。

开头、中段、结尾都应出现对应文字,时间顺序正确、结束晚于开始、字符可读。载入错误文件时检查文件名和字幕轨;乱码时先确认实际编码,在副本上处理后再保存。只看一处对齐,不代表最终文件完成验收。

按问题选择校正方法

固定偏差用整体平移,均匀漂移用测得的线性映射,剪辑跳变按区间重新对齐。保存新SRT后,用对应视频检查开头、中段和结尾。

进入产品页: 字幕 Caption