ASS 转 SRT
把 ASS/SSA 字幕转成 SRT,让电视、机上盒或较旧的播放器读得出来。全部在浏览器里完成,并明确列出这一趟会失去哪些特效。
在你的浏览器中运行
负值表示字幕提早出现。会被推到零之前的字幕会停在零,不会被丢掉。
没有带过去的东西
解析与输出都在你的浏览器里完成,文件不会上传。
先说你要放弃什么
ASS 不是「加了样式的字幕格式」,它是一套字幕排版格式,而那些样式就是它存在的理由。SRT 只有起始 时间、结束时间、一段文字,整份规格就这样。
所以这个转换天生就是有损的,值得做的唯一理由是:你要拿去播的那个东西读不懂 ASS。下面每一项在 原档里都还在——原档请留着。
| ASS 带得动 | 到了 SRT |
|---|---|
| 字体、字级、颜色、外框、阴影 | 没了 |
位置——{\an8}、{\pos(…)}、{\move(…)} | 没了 |
卡拉 OK 逐字——{\k}、{\kf} | 没了 |
| 旋转、缩放、裁切、向量绘图 | 没了 |
[V4+ Styles] 里的逐行样式 | 没了 |
| 对白文字与时间 | 留着 |
页面上列出的是你这个文件实际上有的东西,而不是这张一般性的警告。
那为什么还是要转
字幕组交出 ASS,是因为招牌、歌词和重叠对白非得要它不可。而电脑以外的东西几乎都播不动:
- 智慧电视与机上盒读 SRT,对 ASS 多半直接无视,或是把覆写标签当成文字一起显示出来。
- Plex、Jellyfin 播得动 ASS,但那会强制转档把字幕烧进画面。SRT 可以直接播。
- 要上传到某个平台。 愿意收字幕档的平台,收的通常是 SRT 和 WebVTT。
如果你要播的地方就是电脑,那就装 mpv 或 VLC 留着 ASS,结果会比这个页面好。
文件里有读进来的部分
只有 [Events] 这一节,而且只有其中的 Dialogue: 行。上面那行 Format: 定义了栏位顺序,这件事
比看起来重要:Text 是最后一栏,也是唯一允许出现逗号的一栏,所以把 Dialogue: 行「见逗号就切」
会把台词从第一个逗号截断。这里是读 Format 行,而不是假设栏位顺序。
文字内部有三件事会处理:
{…}覆写标签会被移除,而不是原样留着。留着的转换器会做出「{\an8}小心!」这种字幕,比 失去位置更糟。\N会变成真正的换行,\n也是。\h会变成一般空格。
Comment: 行不是对白,会跳过。
转完之后要看两件事
时间不会因此变精确。 ASS 的时间戳是百分秒——0:01:02.50——SRT 是毫秒,所以转出来每一个时间
都以 0 结尾。那不是四舍五入的 bug,那个信息本来就不在文件里。十毫秒在任何帧率下都不到一格,
看不出来。
重叠的行还是重叠。 ASS 很习惯同时显示两件事——上面一个招牌、下面一句对白——靠位置把它们分开。 SRT 没有位置,所以两条字幕就只是时间上重叠,而播放器要拿它怎么办全看播放器:叠起来、盖在一起, 或是丢掉一条。特效招牌愈多的集数愈明显。
转完发现招牌看不懂,就是这件事,而且在 SRT 里修不了。
如果字幕还不同步
完整的转换器可以在转档的同时,把整条时间轴平移几秒。固定平移只 能修固定的偏差;如果是愈到后面差愈多,那是帧率不合——通常是 23.976 对 25——平移救不了。
相关
要把结果挂到 HTML <video> 上,见 SRT 转 WebVTT;所有格式组合与时间轴
平移,见完整的字幕转换器。