提示

返回博客列表

字幕对不上别再手动算偏移了,ffsubsync 按音轨自动对齐真香

字幕对不上别再手动算偏移了,ffsubsync 按音轨自动对齐真香

前面那篇讲手动算字幕偏移,但说实话,手动对是折磨——尤其外语片,你根本不知道哪句对到哪句。后来发现 ffsubsync,它能拿视频的音轨当参照,自动把字幕时间轴拉伸/平移对齐。这篇记用法和几个坑。

原理一句话

ffsubsync 把字幕文本做语音活动检测(VAD),得到"字幕认为什么时候在说话"的时间分布;再对视频音轨做同样的检测,得到"实际什么时候在说话"。两者对不上?它用动态时间规整(DTW)把字幕轴拉伸对齐到音轨。所以是"按声音对齐",不是按画面。

装和跑

pip install ffsubsync
ffsubsync video.mp4 -i sub.srt -o sub_aligned.srt

-i 是输入字幕,video.mp4 直接当音源。跑完 sub_aligned.srt 就对齐了。简单到离谱。

坑一:它读的是音轨不是画面

所以默片、纯音乐、对白极少的片子里,ffsubsync 会瞎对齐。遇到这种退回手动。另外如果音轨本身就是错位的(比如音画不同步的片源),对齐出来也是错的——先确保片源音画同步。

坑二:拉伸过头

默认它允许时间轴整体缩放(因为不同版本帧率差导致整条轴比例不对)。如果你的字幕只是"整体平移 2 秒",可以限制只平移:

ffsubsync video.mp4 -i sub.srt -o out.srt --no-fix-framerate

或者干脆用 --overwrite-input 直接覆盖原文件(我一般不,留个备份)。

坑三:编码和语言

字幕文件编码乱(GBK 的 SRT)会读崩。先转 UTF-8:

iconv -f gbk -t utf-8 sub_gbk.srt > sub.srt

中文 VAD 模型 ffsubsync 是支持的,但偶尔抽风,多跑一次比对。

配合管线

我现在的工作流:下载 → Whisper 出草稿字幕 → (有现成 SRT 就)ffsubsync 对齐 → 翻译流水线出双语。比纯手动快十倍。前面那篇 OCR+Whisper 可以接这一环。

提醒:对齐只解决"时间轴",不解决"翻译错"。翻译烂还得自己改。

想亲手试试?用 VidDown 一键解析下载

粘贴视频链接即可解析,多平台支持、网页端即用;下载桌面客户端解锁海外平台本地解析,开通会员更享不限次下载。

顶部