跳到主要内容
SubtitleMatrix

SBV 转 SRT

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

这次转换会改变什么

这个方向不会丢失内容 —— 源格式的每一项特性在目标格式里都有地方可去。

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

SBV 转 SRT 是两种最朴素的字幕格式之间的搬家:都是纯文本、都是两个时间码加正文,差别主要在排版。

SRT 在每条时间码上面加一个序号,从 1 开始往上数;SBV 没有序号,所以这些数字是按顺序生成的。时间写成 `00:00:01,000 --> 00:00:03,500`,秒与毫秒之间用逗号。精度不打折:两边都到毫秒,`0:00:04.126` 变成 `00:00:04,126`,一个字符都不差。

这一方向没有损失——SBV 能表达的东西 SRT 都装得下,时间、文本、换行全部原样过去,两行的字幕还是两行。反过来也一样:SRT 转 SBV 同样无损,往返之后拿到的是同一份时间轴和同样的文本,只是换回了原来的外壳。这也是上方有损说明在这一页没有东西可列的原因。

cue 会按开始时间排序,乱序文件会被排好。整季文件一次拖入,串行处理、可取消、打包成 ZIP;输出 UTF-8、Unix 换行、无 BOM;文件不上传。

示例

一份典型的 SBV 文件转成 SRT

输入

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.

输出

1
00:00:01,000 --> 00:00:03,500
The quick brown fox.

2
00:00:04,000 --> 00:00:06,250
Jumps over the lazy dog.

3
00:00:07,000 --> 00:00:09,000
Two lines here.
And 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.

输出

1
00:00:02,000 --> 00:00:04,000
Carriage-return line endings.

2
00:00:06,000 --> 00:00:08,000
Indented timecode, no final newline.

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

常见问题

SBV 转 SRT 会丢东西吗?

不会。SBV 能表达的东西 SRT 都装得下:时间、文本、换行全部原样过去,所以有损说明是空的。这也是两个方向都无损的一对格式。

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

是 `00:00:04,126`:补上小时的两位前导零,秒与毫秒之间的点换成逗号。时刻本身不变,不取整,时长也一点不差。

SBV 没有序号,SRT 里的 1、2、3 从哪来?

按 cue 的顺序生成,从 1 开始往上数。SBV 的每条字幕只有时间行与正文,没有计数器;SRT 的计数器按惯例必须是数字,所以产物里统一重新编号。

SBV 里两行的字幕转成 SRT 后是几行?

两行,一上一下,仍在同一条 cue 里。归属关系保留,播放器会分两行显示;SRT 允许一条字幕里有多行文本。

SBV 转 SRT 和 SRT 转 SBV 都无损吗?

都无损。两个格式能表达的东西相同,往返之后拿到的是同一份时间轴与同样的文本,只是换回原来的外壳;这也是两页的有损说明都没有东西可列的原因。

SBV 转 SRT 的产物用什么编码?

固定 UTF-8、Unix 换行、不带 BOM,与源文件原本的编码无关。输入若是 UTF-16 或 Windows 单字节编码,会在读入阶段解码并提示;整季文件可批量转换。

相关工具