跳到主要内容
SubtitleMatrix

VTT 转 CSV

格式转换WebVTT(VTT)
或者粘贴字幕文本

这次转换会改变什么

有 2 项会被丢弃或需要你决定

  • 样式

    全部样式(粗体、斜体、颜色、描边、阴影)

  • 格式专有内容

    源格式保留在字幕条之外的内容(非字幕块、文件头文字、单条字幕的设置、被注释掉的事件)——目标格式没有地方存放它们

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

把 WebVTT 转成 CSV,多半是给登记表、审校清单或表格工具用的:字幕从播放器里拿出来,变成一行一条、可以排序筛选的记录。

产物有表头 `start,end,text`,每条 cue 一行,开始与结束时间都在。两行的字幕不会被拆成两条记录,而是放在同一个 `text` 单元格里,按 CSV 的规矩加引号;词本身原样保留,行内标记(`<i>`、`<b>`、`<font color="…">`)也留在文本里,因为这是 cue 级格式唯一还能携带的样式。

真正丢掉的是 WebVTT 的文档级结构:`WEBVTT` 头部与注释、`NOTE`/`STYLE`/`REGION` 块、cue 标识符,以及时间码后面的 `align`、`position` 之类的 setting。CSV 存的是记录,不是文档,这些都没有落点。时间精度不受影响:两边都写到毫秒,`00:00:04.126` 一个字符都不改。cue 会按开始时间排序,原始文件如果顺序是乱的,产物会替你排好。

输出固定为 UTF-8、Unix 换行、不带 BOM,输入是什么编码都在读入时解码。整季文件可以一次拖进来,串行处理、可取消、结果打成一个 ZIP;全程在浏览器里,文件不上传。

示例

一份典型的 VTT 转成 CSV

输入

WEBVTT

intro
00:00:01.000 --> 00:00:04.000
Hello there.

00:00:04.500 --> 00:00:08.000 align:start position:10%
Second line with <i>italics</i>.

输出

start,end,text
00:00:01.000,00:00:04.000,Hello there.
00:00:04.500,00:00:08.000,Second line with <i>italics</i>.

这份产物丢掉了样式与格式私有内容;其余部分逐行一致。

同一转换遇到一份不规范但可读的输入

输入

a stray comment line
cue-id-1
00:00:01.000 --> 00:00:02.000
No header, two lines before the timecode.

输出

start,end,text
00:00:01.000,00:00:02.000,"No header, two lines before the timecode."

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

常见问题

VTT 转 CSV 后,粗体和斜体还在吗?

在,但只以文本标签的形式留在 `text` 列里——`<i>`、`<b>`、`<u>`、`<font color="…">` 原样过去。丢的是 WebVTT 在文件级声明的那些东西:字体、字号、描边、阴影与边距,CSV 没有地方放它们。

VTT 转 CSV 时 NOTE、STYLE、REGION 这三类块去哪了?

被丢掉了。CSV 存的是 cue 的行,不是文档,`WEBVTT` 头部、注释、样式块、区域定义以及每条 cue 的 `align`、`position` setting 都没有对应字段。cue 本身——文本与起止时间——完整保留。

VTT 里两行的字幕,转成 CSV 后是一个单元格还是两行记录?

一个单元格。两行文本留在同一个 `text` 字段里,中间是换行,并按 CSV 的要求整体加引号。这样两行的归属关系不会丢,播放器仍然把它们当成同一条字幕。

VTT 转 CSV 的时间码精度会变吗?

不会。两边都写到毫秒,`00:00:04.126` 原样输出,一个字符都不差。VTT 的时间码本来就是 `00:00:04.126` 这个写法,CSV 的列里也用同一套写法。

VTT 转 CSV 后,cue 的顺序会被重排吗?

会按开始时间排序,最早的在前。如果原始 VTT 的 cue 是乱序的,产物会替你排好;这改的是文件结构而不是内容,是有意为之。

VTT 转 CSV 的产物用什么编码和换行?

固定 UTF-8、Unix 换行、不带 BOM,与源文件原来的编码无关。输入若是 UTF-16 或 Windows 单字节编码,会在读入阶段解码,结果面板会提示这件事。

相关工具