toolfree

ASS 转 SRT

把 ASS/SSA 字幕转成 SRT,让电视、机上盒或较旧的播放器读得出来。全部在浏览器里完成,并明确列出这一趟会失去哪些特效。

在你的浏览器中运行

负值表示字幕提早出现。会被推到零之前的字幕会停在零,不会被丢掉。

检测到
0
字幕条数
最后一条结束于

解析与输出都在你的浏览器里完成,文件不会上传。

先说你要放弃什么

ASS 不是「加了样式的字幕格式」,它是一套字幕排版格式,而那些样式就是它存在的理由。SRT 只有起始 时间、结束时间、一段文字,整份规格就这样。

所以这个转换天生就是有损的,值得做的唯一理由是:你要拿去播的那个东西读不懂 ASS。下面每一项在 原档里都还在——原档请留着

ASS 带得动到了 SRT
字体、字级、颜色、外框、阴影没了
位置——{\an8}{\pos(…)}{\move(…)}没了
卡拉 OK 逐字——{\k}{\kf}没了
旋转、缩放、裁切、向量绘图没了
[V4+ Styles] 里的逐行样式没了
对白文字与时间留着

页面上列出的是你这个文件实际上有的东西,而不是这张一般性的警告。

那为什么还是要转

字幕组交出 ASS,是因为招牌、歌词和重叠对白非得要它不可。而电脑以外的东西几乎都播不动:

如果你要播的地方就是电脑,那就装 mpv 或 VLC 留着 ASS,结果会比这个页面好。

文件里有读进来的部分

只有 [Events] 这一节,而且只有其中的 Dialogue: 行。上面那行 Format: 定义了栏位顺序,这件事 比看起来重要:Text 是最后一栏,也是唯一允许出现逗号的一栏,所以把 Dialogue: 行「见逗号就切」 会把台词从第一个逗号截断。这里是 Format 行,而不是假设栏位顺序。

文字内部有三件事会处理:

Comment: 行不是对白,会跳过。

转完之后要看两件事

时间不会因此变精确。 ASS 的时间戳是百分秒——0:01:02.50——SRT 是毫秒,所以转出来每一个时间 都以 0 结尾。那不是四舍五入的 bug,那个信息本来就不在文件里。十毫秒在任何帧率下都不到一格, 看不出来。

重叠的行还是重叠。 ASS 很习惯同时显示两件事——上面一个招牌、下面一句对白——靠位置把它们分开。 SRT 没有位置,所以两条字幕就只是时间上重叠,而播放器要拿它怎么办全看播放器:叠起来、盖在一起, 或是丢掉一条。特效招牌愈多的集数愈明显。

转完发现招牌看不懂,就是这件事,而且在 SRT 里修不了。

如果字幕还不同步

完整的转换器可以在转档的同时,把整条时间轴平移几秒。固定平移只 能修固定的偏差;如果是愈到后面差愈多,那是帧率不合——通常是 23.976 对 25——平移救不了。

相关

要把结果挂到 HTML <video> 上,见 SRT 转 WebVTT;所有格式组合与时间轴 平移,见完整的字幕转换器