SBV 转 ASS
或者粘贴字幕文本
这次转换会改变什么
有 1 项会被丢弃或需要你决定
- 精度
时间精度——输出的时间刻度更粗,因此每个时间戳都会四舍五入到最接近的 10 毫秒
这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。
SBV 是 YouTube 早期导出的字幕格式,一行两个时间码、逗号分隔,下面是正文。转成 ASS 一般是为了交给本地播放器、压制工具或需要样式表的下游流程。
正文、换行和 cue 顺序原样保留,两行的字幕用 `\N` 连成一条 ASS 事件,每条字幕写成 `[Events]` 段里的一行 `Dialogue:`。ASS 需要一张样式表,而 SBV 没有,所以这里补一份 Default:Arial、字号 20、黑描边,之后可以自己改。
这一方向唯一的损失是精度。ASS 只存到百分秒,`0:00:04.126` 会取整成 `0:00:04.13`,每条最多挪 5 毫秒;有损说明会提前写明,而不是等你去和视频对齐时才发现。SBV 本身只存文本与两个时间,没有样式、没有定位、没有 cue 之外的任何结构,所以除此之外没有可丢的东西——这一点和 VTT 转 ASS 不同,那边还要丢 `NOTE`、`STYLE` 这类块。
脏文件也不挑:CRLF 换行、时间码前带制表符、结尾没有换行,都能读出来。整季文件一次拖入,队列串行处理、可随时取消、结果打包成一个 ZIP;转换在浏览器里完成,文件不上传。
示例
一份典型的 SBV 文件转成 ASS
输入
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, 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,,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, 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: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 转 ASS 只有精度会丢吗?
是。SBV 只存 cue——两个时间加一段文本——没有样式、定位、头部或块,所以除了把毫秒取整到百分秒,没有别的可丢。有损说明里因此只有一项。
SBV 的 0:00:04.126 转成 ASS 后是什么?
是 `0:00:04.13`。ASS 只记到百分之一秒,所以每个时间码取整到最近的 10 毫秒,最多挪 5 毫秒;顺序与时长都不拉伸。
SBV 里两行的字幕转成 ASS 后怎么写?
用 `\N` 连接,写成一条 Dialogue 事件里的两行。归属关系保留,播放器会分两行显示;`\N` 是 ASS 写硬换行的方式。
SBV 转 ASS 后,序号在产物里是什么样子?
SBV 本来就没有序号,ASS 也不用序号:每条字幕是一行 `Dialogue:`,前面是 Layer、Start、End、Style 等字段,顺序由时间码与图层字段决定。
SBV 转 ASS 后的样式表是从哪来的?
是补出来的。没有样式表的 ASS 文件放不了,所以产物里写了一条 Default 样式(Arial、20 号、白字黑描边),每条 Dialogue 都指向它;要换成自己的版式,事后在字幕工具里改。
整季 SBV 能一次转成 ASS 吗?
能。多个文件一次拖入,队列按顺序串行处理,中途可取消,结束后打成一个 ZIP 下载。转换在浏览器里跑,字幕不会离开本机。