跳到主要内容
SubtitleMatrix

CSV 转 SBV

或者粘贴字幕文本

这次转换会改变什么

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

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

这一页把 CSV 转成 SBV,YouTube 早期导入用的那种字幕。产物没有编号,也没有文件头:一行起止时间,紧跟正文,然后一个空行;转换在浏览器里完成,不上传。

这个方向不丢东西。CSV 的毫秒精度、硬换行、文字,SBV 都能装:00:00:04.126 在 SBV 里写成 0:00:04.126,一位不差,字幕在屏幕上的 2.9 秒仍然是 2.9 秒。

每条 CSV 字幕对应一组时间行与正文,输出按起始时间升序;原来两行的字幕仍然是一条,两行上下排列。

CSV 按表头认列,没有表头时按前三列顺序读;时间码里没加引号的逗号把一行拆成两列时,转换器会把两半拼回去。两行的字幕在 SBV 里仍然是两行,不会拆成两条。产物按起始时间升序,段与段之间空一行。

产物是 UTF-8、Unix 换行、无 BOM。整季拖入会按顺序处理,可取消,最后打包成一个 ZIP。

示例

一份典型的 CSV 文件转成 SBV

输入

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: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.

这一方向不丢东西:左右两栏可以逐行对照。

同一转换遇到一份脏文件

输入

id,start,end,note,text
1,00:00:01,000,00:00:04,000,cue one,"Hello there, friend."
2,00:00:05.000,00:00:07.000,cue two,Second line.
bad,notatime,00:00:09.000,cue three,Unreadable start.
4,00:00:10.000,00:00:09.000,cue four,End before start.
5,00:00:12.000,00:00:14.000,cue five,Unquoted comma in text, right here.

输出

0:00:01.000,0:00:04.000
Hello there, friend.

0:00:05.000,0:00:07.000
Second line.

0:00:10.000,0:00:10.001
End before start.

0:00:12.000,0:00:14.000
Unquoted comma in text, right here.

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

常见问题

CSV 转 SBV 的产物长什么样?

像 SBV:没有编号也没有文件头,每段是一行 0:00:01.000,0:00:03.500 形式的起止时间,下一行开始就是正文,段与段之间空一行。

CSV 转 SBV 会丢毫秒吗?

不会。CSV 与 SBV 都写到毫秒,00:00:04.126 输出成 0:00:04.126;不四舍五入也不平移,时长原样保留。

CSV 转 SBV 后,一条两行字幕怎么放?

写成两行,上下排列,仍然属于同一条字幕;播放器会一起显示,不会拆成两条。

CSV 转 SBV 会按起始时间排序吗?

会,最早的在前。播放器按顺序读;CSV 原本乱序时,产物会被整理成升序,这是有意的结构整理。

CSV 转 SBV 之后,再转回 CSV 会丢什么?

两边都能表达对方的一切,所以回程也不丢东西:时间轴与正文都会原样回来,这一页的有损清单因此是空的。

CSV 转 SBV 后编码是什么?

固定是 UTF-8、Unix 换行、无 BOM,无论输入使用什么编码;输入是 UTF-16 或单字节编码时会先解码,结果面板会提示。

相关工具