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 或单字节编码时会先解码,结果面板会提示。