SRT 转 ASS
或者粘贴字幕文本
这次转换会改变什么
有 1 项会被丢弃或需要你决定
- 精度
时间精度——输出的时间刻度更粗,因此每个时间戳都会四舍五入到最接近的 10 毫秒
这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。
这一页把 SRT 改写成 Advanced SubStation Alpha 脚本。两种格式对“一条字幕”的理解不同:SRT 是带时间码的文本清单,ASS 则是一份有头部、样式表和 Dialogue 行的脚本。
转换时每条 cue 变成一条 Dialogue 行,并指向一个样式;时间改写为 ASS 写法——0:00:01.00 而不是 00:00:01,000,因为 ASS 数到百分秒。行内格式会被翻译而不是原样粘贴:一段斜体在区间两端写成开启与关闭的覆写码,粗体同理;一条 cue 里的硬换行写成 ASS 的换行码,两行仍留在同一个事件里。
SRT 没有能力表达的东西——字体、位置、边框——不会被凭空补出来;产物是一份干净的脚本,带一个可用样式,之后可以在任何 ASS 编辑器里重新设计。这个方向只丢精度:毫秒会舍入到百分秒。
不需要设置帧率,因为两边都存时钟时间,时间轴不会平移或缩放。批量、可取消、ZIP 下载,转换在浏览器里完成,文件不上传。
示例
一份典型的 SRT 文件转成 ASS
输入
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, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, 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, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, 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.
混合换行、散落空白与留空字段都会被容忍;对照干净样例,可以看出哪些损坏被修好、哪些只是被跳过。
常见问题
SRT 转 ASS 后为什么多出一张样式表?
因为 ASS 没有“无样式”的字幕:每条 Dialogue 必须指向一个样式。转换器会建一个 Default 样式(Arial、20、白字深色描边),改这一行就能改整份文件。
SRT 转 ASS 时 00:00:01,250 写成什么?
0:00:01.25。ASS 只到百分秒,毫秒里不足 10 毫秒的部分会舍入,这个方向丢的就是这层精度。
SRT 转 ASS 后斜体和粗体去哪了?
变成 ASS 的覆写码:斜体区间用开启与关闭的斜体码包住,粗体同理。ASS 编辑器会把它们显示为样式,而不是残留标记。
SRT 转 ASS 会把一条两行字幕拆开吗?
不会。两行用 ASS 的换行码连在同一个 Dialogue 事件里,第二行的时间就是这条字幕的时间。
SRT 转 ASS 需要设置帧率吗?
不需要。两种格式都存时钟时间,没有帧号,也没有帧率字段。
SRT 转 ASS 后时间轴会整体移动吗?
不会平移或缩放。第一条的起点、最后一条的终点都相同,只有不足 10 毫秒的精度被舍入。