SRT 转 SSA
或者粘贴字幕文本
这次转换会改变什么
有 1 项会被丢弃或需要你决定
- 精度
时间精度——输出的时间刻度更粗,因此每个时间戳都会四舍五入到最接近的 10 毫秒
这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。
这一页把 SRT 改写成 SubStation Alpha(SSA)脚本。SRT 是带时间码的文本清单,SSA 则是有头部、样式表和 [Events] 段的脚本,所以每条字幕会变成一条 Dialogue 行。
时间写成 0:00:04.13,SSA 只到百分秒,SRT 的 00:00:04,126 会四舍五入到 10 毫秒,每条最多移动 5 毫秒。SRT 的编号没有对应字段,位置由事件行的 Marked 列代替;一条 cue 里的硬换行写成 \N,两行仍属于同一个事件。
这个方向只丢精度:文字、顺序与时间轴的整体位置都不变。反方向则不同——SSA 转 SRT 会丢掉样式、位置、卡拉OK与脚本私有构造。
输出统一 UTF-8、Unix 换行、无 BOM。多个文件可以一次拖入,串行处理、可取消,结果打成 ZIP;文件不上传,全部在浏览器里完成。源文件原来的编码不影响产物,文件名保留,只改扩展名。
示例
一份典型的 SRT 文件转成 SSA
输入
1
00:00:01,000 --> 00:00:03,500
Hello there.
2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.
3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.
输出
[Script Info]
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
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,{\i1}Whispering{\i0} now.\NAnd a second line.
Dialogue: 0,0:00:06.00,0:00:09.25,Default,,0,0,0,,{\b1}Bold{\b0} statement.
这份产物只丢精度:毫秒被舍入到百分秒,文字与换行一致。
同一转换遇到一份脏文件
输入
1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.
2
00:00:03,500 --> 00:00:06,000
3
00:00:08,000 --> 00:00:09,000
Last one.
输出
[Script Info]
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
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,{\b1}Bold{\b0} and {\i1}italic{\i0}.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,
Dialogue: 0,0:00:08.00,0:00:09.00,Default,,0,0,0,,Last one.
混合换行与空字段不会打乱 Dialogue 结构;对照干净样例可以看出哪些损坏被修好。
常见问题
SRT 转 SSA 后 00:00:04,126 变成什么?
0:00:04.13。SSA 只到百分秒,时间四舍五入到最近的 10 毫秒,每条最多移动 5 毫秒。
SRT 转 SSA 的精度损失有多大?
最大 5 毫秒。不拉伸、不重排,整体时间轴的位置不变。
SRT 转 SSA 后字幕编号去哪了?
变成 [Events] 段里 Dialogue 行的 Marked 字段;SSA 没有独立的编号行。
SRT 转 SSA 后两行字幕怎么连?
用 SSA 的换行码连在同一个 Dialogue 事件里,两行仍属于一条字幕。
SRT 转 SSA 会让时间轴整体变短吗?
不会。只有不足 10 毫秒的舍入,没有任何平移或缩放。
SSA 转回 SRT 会丢什么?
样式、屏幕定位、卡拉OK计时与脚本私有构造;SRT 没有对应字段,那些内容会在反方向丢失。
SRT 转 SSA 的产物是什么结构?
[Script Info] 头部加 [V4 Styles] 样式段,字幕全在 [Events] 的 Dialogue 行里。