跳到主要内容
SubtitleMatrix

CSV 转 VTT

或者粘贴字幕文本

这次转换会改变什么

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

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

这一页把 CSV 转成 WebVTT,也就是网页 <track> 用的字幕格式;转换在浏览器里完成,文件不上传。

这个方向不丢东西。产物以 WEBVTT 开头,每条字幕可以带一个标识行(播放器不显示它),然后是 00:00:04.126 --> 这种时间行与正文。毫秒、硬换行、文字都保留,时间码字符一级不变。

按起始时间升序输出,一条两行的字幕仍然在同一条 cue 里,两行上下排列。CSV 的列按表头识别,没有表头时按 start、end、text 顺序读;时间码里没加引号的逗号把一行拆成两列时,转换器会把两半拼回去。产物按起始时间升序,每条 cue 的标识行可有可无;CSV 没有样式与定位可带,所以产物也就不写 STYLE 或 REGION 段。

输出是 UTF-8、Unix 换行、无 BOM。整季可以一次拖入,串行处理,最后打包成一个 ZIP 下载。

示例

一份典型的 CSV 文件转成 VTT

输入

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

输出

WEBVTT

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.

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

同一转换遇到一份脏文件

输入

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.

输出

WEBVTT

1
00:00:01.000 --> 00:00:04.000
Hello there, friend.

2
00:00:05.000 --> 00:00:07.000
Second line.

4
00:00:10.000 --> 00:00:10.001
End before start.

5
00:00:12.000 --> 00:00:14.000
Unquoted comma in text, right here.

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

常见问题

CSV 转 VTT 的产物长什么样?

以 WEBVTT 开头,之后每条字幕是一个可选的标识行、一行 00:00:01.000 --> 00:00:03.500 与正文,段间空行;没有编号列。

CSV 转 VTT 会改时间码的写法吗?

不会。两边都写成 00:00:04.126,时间串逐字符相同;不四舍五入、不平移,时长原样保留。

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

放进同一条 cue,两行上下排列;播放器会一起显示,不会拆开。

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

会,最早的 cue 在前。网页播放器按文档顺序读;CSV 乱序时产物会被整理成升序。

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

会丢样式与格式私有内容,例如 VTT 的 NOTE、STYLE 段与 cue 设置;CSV 没有地方放它们。去程这一趟本身不丢。

CSV 转 VTT 后能直接放进网页的 track 元素吗?

能。产物就是标准 WebVTT:WEBVTT 头、毫秒时间行与正文,可以直接作为 <track> 的源文件使用。

相关工具