跳到主要内容
SubtitleMatrix

SBV 转 SSA

格式转换YouTube SBV
或者粘贴字幕文本

这次转换会改变什么

有 1 项会被丢弃或需要你决定

  • 精度

    时间精度——输出的时间刻度更粗,因此每个时间戳都会四舍五入到最接近的 10 毫秒

这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。

SSA 是 ASS 的前身,结构上是 `[Script Info]`、样式表加 `[Events]` 里的 `Dialogue:` 行。SBV 转 SSA,一般是为了喂给只认 SSA v4.00 的旧工具链。

正文、换行和 cue 顺序都保留,每条字幕写成一行 `Dialogue:`,两行的内容用 `\N` 连接。`[Events]` 用 `Marked` 字段站在 SRT 序号的位置,这里写 0,因为排序和图层由时间码与图层字段决定。SBV 没有样式表,所以补一份 Default,之后可以自己改。

唯一的损失是精度:SSA 只存到百分秒,`0:00:04.126` 取整成 `0:00:04.13`,每条最多挪 5 毫秒。SBV 只存 cue,没有样式、定位或 cue 之外的结构,所以除此之外没有可丢的东西——这一点与 VTT 转 SSA 不同,那边还要丢掉 `NOTE`、`STYLE`、`REGION` 这些块。

脏文件也能读:CRLF、行首带制表符的时间码、缺结尾换行,都不报错。整季文件批量转换、可取消、打成一个 ZIP;转换在浏览器里完成,文件不上传。

示例

一份典型的 SBV 文件转成 SSA

输入

0:00:01.000,0:00:03.500
The quick brown fox.

0:00:04.000,0:00:06.250
Jumps over the lazy dog.

0:00:07.000,0:00:09.000
Two lines here.
And a second 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,,The quick brown fox.
Dialogue: 0,0:00:04.00,0:00:06.25,Default,,0,0,0,,Jumps over the lazy dog.
Dialogue: 0,0:00:07.00,0:00:09.00,Default,,0,0,0,,Two lines here.\NAnd a second one.

这份产物丢掉了精度;其余部分逐行一致。

同一转换遇到一份不规范但可读的输入

输入

0:00:02.000,0:00:04.000
Carriage-return line endings.

	0:00:06.000,0:00:08.000
Indented timecode, no final newline.

输出

[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:02.00,0:00:04.00,Default,,0,0,0,,Carriage-return line endings.
Dialogue: 0,0:00:06.00,0:00:08.00,Default,,0,0,0,,Indented timecode, no final newline.

真实文件里常见的损坏:混合换行、散落的空白、留空的字段。可以对照上面那份干净样例,看看解析器能容忍到什么程度。

常见问题

SBV 转 SSA 为什么只有精度会丢?

因为 SBV 只存 cue——两个时间加一段文本——没有样式、定位、头部或块。SSA 能接住这三样,唯一对不上的是时间精度:SSA 只写到百分秒。

SBV 的 0:00:04.126 转成 SSA 后是什么?

是 `0:00:04.13`。百分秒的取整让每个时间码最多挪 5 毫秒,顺序与时长都不变;要拿它和另一份文件逐帧对齐时,这是唯一会显出差别的地方。

SBV 里两行的字幕在 SSA 产物里怎么写?

用 `\N` 连接,写成一条 Dialogue 事件里的两行。归属关系保留,播放器会分两行显示;`\N` 是 SSA 写硬换行的方式。

SBV 转 SSA 后 Dialogue 行里的 Marked 字段是什么?

那是 SSA 里站 SRT 序号位置的一个字段,这个转换写 0。SSA 的播放顺序由时间码与图层字段决定,不靠序号,所以它不像 SRT 那样必须递增。

SBV 转 SSA 后的样式表是从哪来的?

是补出来的。SSA 文件需要样式表才放得了,所以产物里写了一条 Default 样式,每条 Dialogue 都引用它;SBV 本身不带任何样式信息,所以这里没有可翻译的源。

整季 SBV 一次转成 SSA 可以吗?

可以。多个文件一次拖入,队列串行处理,中途可取消,结束后打成一个 ZIP 下载。每份产物都带同样的 Default 样式表,便于事后统一改版式。

相关工具