影视资源

字幕和画面对不上,我用三招治,最后一招是自动的

🐨硬盘收藏家 LV1 · 1 次浏览 · 0 条回复

外挂字幕最烦的不是找不到,是找到了对不上。

常见情况:片子是蓝光压制,字幕是从另一个版本扒的,两边帧率或者片头长度不一样,字幕整体往前或往后偏了十几秒。看着听着声音是这句,字幕是上句。

这事能治,而且不用一集一集手动挪。

第一招:播放器里手动偏移

最土也最快。

绝大多数播放器都有字幕延迟调整:

  • PotPlayer:快捷键 [ 和 ] 微调,或者按 Alt 拖动
  • mpv:z 和 x 调整,Shift+Z 重置
  • VLC:G 和 H,每按一次 50ms
  • Jellyfin / Emby 网页端:播放器右下角字幕菜单里有延迟滑块

适用场景:整体偏移。就是从头到尾都晚三秒,调完三秒就全对。

不适用:中途越来越偏。那种是帧率不一致,光调开头没用。

第二招:改帧率匹配

电影常见两种帧率:23.976 和 25。

从 DVD 转的经常是 25fps,从蓝光来的多是 23.976。同一个片子,用 25 的字幕去配 23.976 的片源,结尾能差几分钟。

处理办法是在播放器里做“帧率同步”,或者在字幕编辑器里按比例拉伸。

后一种更彻底。用 Aegisub 打开字幕,全选,按比例缩放时间轴,系数是 23.976/25 ≈ 0.95904。

我处理过一部老片,两小时四十分钟,原字幕按 25 做的,缩放之后从头到尾都准,误差在一秒以内。

判断是不是帧率问题:看开头差多少、结尾差多少。如果开头对得上、结尾差两分钟,一定是帧率;如果全程差固定的三秒,就是片头长度不同。

第三招:自动对齐,一劳永逸

这是我现在 90% 的情况在用的办法。

原理是把字幕的音轨和片子的音轨做声学比对,找出时间偏移,自动重写时间轴。不用手动调,也不用管是整体偏移还是帧率问题。

常用的工具两个:

alass:命令行,速度极快,一部两小时的片子几秒钟。它对整条音轨做全局对齐,能同时处理偏移和拉伸。用法大概是给它视频文件、字幕文件、输出文件三个参数,跑完就有一个新字幕。

ffsubsync:Python 写的,也是声学对齐,稍微慢一点,但对质量差的字幕容错更好。它对 ASS 格式的支持比 alass 好一些。

两个我都用,一般先用 alass,跑完抽几个时间点检查,不行再换 ffsubsync。

实测下来的效果:偏移在十秒以内的,基本一次成功;偏移太大或者字幕本身是另一部片子的,会失败——这种情况工具也无能为力,得重新找字幕。

注意:图形字幕(PGS、sup)没法这样处理,它是图片,没有可编辑的时间轴。要么找文本字幕,要么用 OCR 转出来,转出来错字很多,不如重找。

乱码是另一个坑

打开字幕一片问号或者方块,是编码问题。

老字幕很多是 GBK 或者 GB18030,新播放器默认按 UTF-8 读,就乱。

处理办法:用文本编辑器另存为 UTF-8。批量处理的话,一条命令能转一个目录。

转完记得检查一遍特殊字符——有些老字幕里的「」『』在转换后会变成乱码,需要手动修。

ASS 字幕的特效别乱转

很多字幕组做的是 ASS,带样式、定位、特效。转成 SRT 会把这些全丢掉,字幕会从屏幕顶部跳到底部,斜体没了,颜色没了。

如果不是必须,别转格式。现在的播放器、Jellyfin、Emby 都直接支持 ASS。

真需要转的时候,用 ffmpeg 保留基础样式,或者干脆接受损失——总比看不了强。

我的流程

拿到片子,先去字幕站按「片名 + 年份 + 分辨率版本」搜,优先选和片源同一版本的。

搜到之后不急着看,先跑一遍 alass。

跑完播开头三分钟、中间一场、结尾三分钟,三个点都对得上就直接用。

对不上再判断是帧率问题还是字幕本身错版,前者改帧率,后者重找。

一集剧大概两分钟处理完,一部剧一季二十集,半小时能全部搞定,比一集一集手动挪快得多。

你们有没有更好的对齐工具?我这两个用久了想换换。

回复

还没有回复,抢个沙发

登录后即可参与讨论

去登录 注册账号

相关帖子