跳到主要内容
SubtitleMatrix

CSV 字幕格式

这种格式能表达什么

文本样式
仅纯文本
屏幕定位
否
卡拉 OK 计时
否
字幕条内换行
是
时间轴
每条字幕都有开始与结束时间
时间精度
1 毫秒
时间以帧号存储
否
从右到左的文字
是

示例

一份典型的 CSV 文件,以及从里面读出了什么

文件

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

从中读出了什么

3 cues, 4 lines of 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.

Outside the cues:
  header     start,end,text
  delimiter  ","

右栏不是转换后的文件,而是本站从左栏读出来的内容,也是这份文件进行任何转换时的起点。

一份别扭的 CSV 文件,仍然读出了什么

文件

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.

从中读出了什么

4 cues, 4 lines of text

  00:00:01.000 → 00:00:04.000
    Hello there, friend.
  00:00:05.000 → 00:00:07.000
    Second line.
  00:00:10.000 → 00:00:10.001
    End before start.
  00:00:12.000 → 00:00:14.000
    Unquoted comma in text, right here.

Outside the cues:
  header     id,start,end,note,text
  delimiter  ","

Reported while reading — repaired or skipped, never silently:
  1 × rows whose start time could not be read (they were skipped)
  1 × cues whose end time was not after their start time (they were given a 1ms duration)

真实文件里常见 BOM、Windows 换行、时间码前多一行、时间码根本读不出来。这些都不会抛异常:读不懂的部分会被报告,而不是悄悄丢掉。

把 CSV Spreadsheet 转成其他格式

每一个都完全在你的浏览器里运行。标签标明了那个方向要付出什么代价,打开之前就能看到。

CSV 转 JSON:文本与时间轴完整保留,这一方向没有损失;文件在浏览器里处理,不上传,可批量转换。

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

CSV 转 SBV:文本与时间轴完整保留,这一方向没有损失;文件在浏览器里处理,不上传,可批量转换。

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

CSV 转 SMI:这一方向无损,文字、时间轴与换行原样保留;全程在本机完成,不上传,也能批量处理。

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

CSV 转 SRT:文字和时间轴都不会丢,可以直接下载结果;文件不上传,支持一次拖入多个。

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

CSV 转 TTML:这一方向无损,文字、时间轴与换行原样保留;全程在本机完成,不上传,也能批量处理。

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

CSV 转 VTT:文本与时间轴完整保留,这一方向没有损失;文件在浏览器里处理,不上传,可批量转换。

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

转换为此格式

这一页是 CSV 字幕格式的说明页:它能存什么、不能存什么,以及本站能从它转出的 11 种格式。CSV 不是播放器直接打开的字幕文件,而是把字幕摊成一张表:第一行是表头,之后每行一条字幕,字段是起始时间、结束时间和正文。

它存的只有时间与文字。起始和结束都写到毫秒,形如 00:00:04.126;正文里可以带硬换行,整个单元格用双引号包起来,逗号也只在引号里才不会被当成列分隔。除此之外没有样式、没有定位、没有卡拉OK 计时——一张表格装不下“怎么画”,只能装“第几秒到第几秒说什么”。

表格正是它存在的理由:字幕要交给别人校对、批量改时间,或者在 Excel 或 Google Sheets 里过一遍时,CSV 是人和软件都能读的形状。代价是这一趟往返会改掉一些东西,时间码的小数位、丢失的引号、被拆成两格的逗号,所以转换前后的核对不能省。

站内的转换全部在浏览器里跑,文件不上传、不用注册,一份保密协议下的素材或未播出的节目单也一样。可以一次拖入整季,串行处理,最后打包成一个 ZIP 下载。

常见问题

CSV 字幕文件里,一行代表什么?

一行是一条字幕,第一列是起始时间,第二列是结束时间,最后一列是正文;表头行可以写成 start,end,text,也可以带一个 id 列给每条编号。时间写到毫秒,例如 00:00:04.126。

CSV 字幕能存样式或屏幕位置吗?

不能。它存的是一条字幕的两个时间和文字,一个单元格里放不下“用什么字体、画在画面哪里”。留在单元格里的标签只会被当成普通字符读出来,不会被当成格式。

CSV 里的时间码精度到哪一位?

到毫秒,写成 00:00:04.126 这样。这个数是精确的,一条字幕可以很短、很长,也可以和下一条重叠,CSV 本身不会替你做任何取舍。

CSV 转成哪些字幕格式不会丢东西?

SRT、VTT、SBV、SMI、TTML 与 JSON:CSV 能表达的每一件事,这六种格式都能装下。上方的能力表就是判据,两侧都写“是”的那一项才会无损地过去;其余方向都会丢东西,每一页自己列清单。

CSV 单元格里的逗号和换行要怎么转义?

用双引号把整个单元格包起来:引号里的逗号不会被当成列分隔,引号里的换行会留在同一格里,也就是同一条字幕的第二行。读的时候按同一套规则拆回来。

在 Excel 里改完再存成 CSV,会弄坏什么?

表格软件会按自己的习惯重写时间码:末尾的零可能被去掉,小数位可能变少,原本靠引号保护的逗号可能被重新拆格。读回来时本站会尽量把被拆开的时间码拼回去,但改动过的时间仍然值得抽查一遍。