SBV 转 CSV
或者粘贴字幕文本
这次转换会改变什么
这个方向不会丢失内容 —— 源格式的每一项特性在目标格式里都有地方可去。
这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。
SBV 转 CSV 是本目录里少数几个完全无损的方向之一。SBV 只存 cue——两个时间加一段文本——而 CSV 恰好能把这两样按列摆开。
产物有表头 `start,end,text`,每条 cue 一行,开始与结束时间都在,时间精确到毫秒:SBV 的 `0:00:04.126` 写成 `00:00:04.126`,不取整,也不挪位。两行的字幕放在同一个 `text` 单元格里,按 CSV 的规矩加引号;行与行的归属关系不会丢。
因为 SBV 没有 cue 之外的东西,所以没有头部、没有块、没有 setting 会在这条路上消失——CSV 也存得下 SBV 能表达的全部。反方向同样无损:CSV 转回 SBV 会拿回同一份时间轴与同样的文本。cue 会按开始时间排序,原始文件如果乱序,产物会替你排好。
输出固定 UTF-8、Unix 换行、无 BOM;输入是 UTF-16 或 Windows 单字节编码时会在读入阶段解码,结果面板会提示。整季文件批量转换、可取消、打成一个 ZIP;全程在浏览器里,文件不上传。
示例
一份典型的 SBV 文件转成 CSV
输入
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.
输出
start,end,text
00:00:01.000,00:00:03.500,The quick brown fox.
00:00:04.000,00:00:06.250,Jumps over the lazy dog.
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.输出
start,end,text
00:00:02.000,00:00:04.000,Carriage-return line endings.
00:00:06.000,00:00:08.000,"Indented timecode, no final newline."
真实文件里常见的损坏:混合换行、散落的空白、留空的字段。可以对照上面那份干净样例,看看解析器能容忍到什么程度。
常见问题
SBV 转 CSV 为什么显示无损?
因为 SBV 能表达的东西 CSV 全都装得下:只有时间与文本。SBV 本身没有样式、定位、头部、块或 cue 标识符,所以没有任何构造会在路上消失,产物就是同一批字幕换了个外壳。
SBV 的 0:00:04.126 在 CSV 里是什么?
是 `00:00:04.126`,只是补上了小时的两位前导零。两边都写到毫秒,不取整也不挪位,屏幕上待 2.9 秒的 cue 出来还是 2.9 秒。
SBV 里两行的字幕在 CSV 里怎么放?
放在同一个 `text` 单元格里,两行之间是换行,整体按 CSV 的规矩加引号。归属关系保留,一条 SBV 字幕仍然对应一条记录。
SBV 转 CSV 后 cue 的顺序会变吗?
会按开始时间排序,最早的在前。原始文件如果乱序,产物会替你排好;这改的是文件结构而不是内容,是有意为之。
SBV 转 CSV 再转回去会变成什么样?
两个方向都无损,所以往返之后拿到的是同一份时间轴与同样的文本,只是换回了原来的外壳。这也是这一页的上方有损说明没有东西可列的原因。
SBV 转 CSV 的产物用什么编码?
固定 UTF-8、Unix 换行、不带 BOM。输入若是 UTF-16 或 Windows 单字节编码,会在读入阶段解码,结果面板会提示这次解码;输出永远只有这一种。