跳到主要内容
SubtitleMatrix

SRT 转 SSA

格式转换SubRip(SRT)
或者粘贴字幕文本

这次转换会改变什么

有 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 行里。

相关工具