winget install Nikse.SubtitleEdit # Windows
brew install --cask subtitle-edit # macOS
先分清症状,再动手:整条一起偏(第一句晚 2 秒,最后一句也晚 2 秒)只需要平移;越到后面偏得越多(开头准、结尾差好几秒)是时间轴被按比例拉伸了,平移救不回来。
第一步:用两个点定位症状
打开字幕与对应视频,跳到第一句和最后一句分别看偏差。两个数字一比对,性质就清楚了:
- 差值基本相同 → 固定偏移,通常是音频提前量、或字幕文件是从另一个版本(带片头/不带片头)扒下来的;
- 差值随时间线性变大 → 帧率不匹配。最常见的是 23.976 与 25、29.97 与 30 混用,源文件与视频帧率制式不同。
顺手确认视频本身是不是可变帧率(VFR)——手机录制、OBS 录屏、剪辑软件导出的文件经常是 VFR,这类视频对字幕工具不友好:
ffprobe -v error -select_streams v:0 \
-show_entries stream=r_frame_rate,avg_frame_rate -of default=nw=1 片源.mp4
r_frame_rate 与 avg_frame_rate 两个值明显不同,就是 VFR。此时先把视频转成固定帧率再对字幕,比在字幕上反复微调省事得多。
第二步:固定偏移直接整体平移
在 Synchronization(同步)菜单里选调整全部显示时间那一项,填入延迟毫秒数(负值表示提前),确认每句的时长不被压缩。改完直接播放到中段与结尾各抽查一次,偏移归零即可保存。
第三步:帧率问题要按比例重算
同一菜单里做帧率转换:填源字幕假设的帧率与视频真实帧率,软件会把每条时间码按比例重算。若不想依赖帧率数字,用「以两条已知正确的字幕为锚点重算中间部分」的方式(不同版本菜单名略有差异,一般写作 Choose two lines / 通过两点同步):手动把第一句和最后一句拖到正确位置,中间全部由软件线性分配——这是最不容易出错的兜底做法。
调完后逐句核对时,波形比时间码好用:主界面下方的音频波形上,说话起止处会有明显的能量凸起,把入出点拖到凸起边缘即可;配合视频预览拖动,一句一句过比对着数字猜快很多。
顺手能做的两件事
- 发布前查规范:字幕组投稿给平台时,用内置的风格检查(Netflix 等规则)一次列出字数超限、单行时长过短、破折号与说话人标记问题,勾选后批量修复,比人工逐条改快得多。
- 硬字幕抠字:字幕已经烧进画面的老片,走 OCR 逐帧识别成可编辑文本,支持词典与未知词修正;识别结果仍需人工校对,但比从零听写省掉九成时间。
装不上的先看这条
Subtitle Edit v5 起是跨平台的 .NET 版本,Windows 最低要求 Windows 10 22H2(build 19045),更老的构建会以 .NET 运行时错误 0x80131506 直接起不来;macOS 建议 14 及以上。官方安装包是 self-contained 构建,不需要另外安装 .NET 运行时,遇到运行时报错基本都是系统版本而非缺组件。