SSA 转 SRT
或者粘贴字幕文本
这次转换会改变什么
有 4 项会被丢弃或需要你决定
- 样式
全部样式(粗体、斜体、颜色、描边、阴影)
- 定位
屏幕定位(每条字幕条都会回到默认位置)
- 卡拉 OK
卡拉OK计时(逐音节高亮)
- 格式专有内容
源格式保留在字幕条之外的内容(非字幕块、文件头文字、单条字幕的设置、被注释掉的事件)——目标格式没有地方存放它们
这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。
这一页把 SSA 脚本压平成普通的 SRT。SSA 把字幕当成由样式引擎绘制的文字,SRT 只把它当成两个时间码之间显示的一行文本;转换在浏览器里完成,不上传。
能过去的和过不去的一目了然。片段级的强调会写成 SRT 标签:粗体 <b>、斜体 <i>、下划线 <u>、颜色 <font color="…">。样式表里那些全局设置没有落点——字体、字号、描边、阴影、边距都不会进入产物,播放器按自己的默认值显示。
屏幕定位与卡拉OK 同样丢掉:\pos、\an、\move 与 \k 系列指令都是给 SSA 渲染器的,SRT 没有渲染器可以指令。这些每一项都会在文件框下方列出,转换之前就能看到代价。
时间轴不丢。SSA 只写到百分秒,0:00:04.13 写成 00:00:04,130,是补零而不是舍入;一条 2.9 秒的字幕仍然是 2.9 秒。产物编号从 1 开始,按起始时间升序;可以批量拖入整季,串行处理并打包下载。
示例
一份典型的 SSA 文件转成 SRT
输入
[Script Info]
Title: Example SSA
ScriptType: v4.00
Collisions: Normal
[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1
[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\i1}Italic{\i0} line.
Dialogue: Marked=0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Two\Nlines
输出
1
00:00:01,000 --> 00:00:04,000
Hello there.
2
00:00:05,000 --> 00:00:08,000
<i>Italic</i> line.
3
00:00:09,000 --> 00:00:12,000
Two
lines
这份产物丢掉了样式表、定位、卡拉OK 与脚本内容;其余部分逐行一致。
同一转换遇到一份脏文件
输入
[Script Info]
Title: Dirty SSA
ScriptType: v4.00
[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1
[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: Marked=0,0:00:00.00,0:00:01.00,Default,,0,0,0,,not a subtitle
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,{\b1}Bold{\b0} and {\u1}underlined{\u0}.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,A soft\nbreak and a {\p1}mystery{\p0} code.输出
1
00:00:01,000 --> 00:00:04,000
<b>Bold</b> and <u>underlined</u>.
2
00:00:05,000 --> 00:00:08,000
A soft
break and a {\p1}mystery{\p0} code.
真实文件里常见的损坏:混合换行、散落的空白、留空的字段。可以对照上面那份干净样例,看看解析器能容忍到什么程度。
常见问题
SSA 转 SRT 后,粗体和斜体怎么保留?
写成 SRT 正文里的标签:<b>、<i>、<u>,颜色写成 <font color="…">。这些是片段级的格式,SRT 装得下;样式表里的字体、字号、描边、阴影和边距则没有落点。
SSA 转 SRT 后,屏幕定位去哪了?
SRT 没有位置字段,\pos、\an、\move 在离开 SSA 时就被丢掉,每条字幕回到播放器的默认位置;对多数播放器来说就是画面底部居中。这是有损清单里的一项。
SSA 转 SRT 后,卡拉OK 计时还能保留吗?
不能。\k、\kf、\ko 标记的是每个音节什么时候亮,SRT 记不了一行内部的时刻;标记被去掉,音节作为普通文字留下并一次性显示。
SSA 转 SRT 后,时间码是怎么改写的?
数值不变,写法换掉:SSA 的 0:00:04.13 写成 00:00:04,130,分隔符从点改成逗号,百分秒补零成三位毫秒。不四舍五入,也不平移。
SSA 转 SRT 后,[Script Info] 和 Comment: 行呢?
都不会过去。只有 Dialogue: 行变成字幕;[Script Info](包括标题)、样式表、Comment: 行,以及 [Fonts]/[Graphics] 里内嵌的内容全部丢掉。
SSA 转 SRT 后,一条两行字幕怎么放?
写成两行,上下排列,仍然属于同一条字幕;播放器会一起显示,不会拆成两条。