跳到主要内容
SubtitleMatrix

CSV 转 SSA

或者粘贴字幕文本

这次转换会改变什么

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

  • 精度

    时间精度——输出的时间刻度更粗,因此每个时间戳都会四舍五入到最接近的 10 毫秒

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

这一页把 CSV 转成 SSA(SubStation Alpha v4)。输入一张表,输出一份带脚本头、样式表与事件段的字幕脚本;转换在浏览器里完成,不上传。

丢的是精度。CSV 写到毫秒,SSA 只写到百分秒:00:00:04.126 转成 0:00:04.13,每条只动 5 毫秒以内,不拉长也不重排。要把这份 SSA 与另一份文件严格对齐时,这是唯一不精确的地方。

其余原样过去:每条字幕是 Events 段里的一行 Dialogue,Marked 字段占着 SRT 里编号的位置;行内换行写成 \N;产物带 ScriptType: v4.00 的脚本头和一份默认的 V4 Styles 样式表,样式里有 TertiaryColour 与 AlphaLevel 这两列。

输出是 UTF-8、Unix 换行、无 BOM;输入编码不一致时会先解码。可以批量拖入整季,串行处理并打包下载。

示例

一份典型的 CSV 文件转成 SSA

输入

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

输出

[Script Info]
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,The quick brown fox.
Dialogue: 0,0:00:04.00,0:00:06.25,Default,,0,0,0,,Jumps over, the lazy dog.
Dialogue: 0,0:00:07.00,0:00:09.00,Default,,0,0,0,,Two lines here.\NAnd 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.

输出

[Script Info]
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there, friend.
Dialogue: 0,0:00:05.00,0:00:07.00,Default,,0,0,0,,Second line.
Dialogue: 0,0:00:10.00,0:00:10.01,Default,,0,0,0,,End before start.
Dialogue: 0,0:00:12.00,0:00:14.00,Default,,0,0,0,,Unquoted comma in text, right here.

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

常见问题

CSV 转 SSA 后,时间码为什么只到百分秒?

SSA 的时间格式本身就是 h:mm:ss.cs,只到百分秒。00:00:04.126 会写成 0:00:04.13,单条移动不超过 5 毫秒,顺序与时长比例都不变。

CSV 转 SSA 的产物里有哪几段?

三段:Script Info 放全局设置,V4 Styles 放样式表,Events 放每条字幕的 Dialogue 行;产物使用 ScriptType: v4.00,事件首字段是 Marked。

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

写成一行 Dialogue,两行之间用 \N。这是 SSA 的硬换行写法,仍然是一条字幕。

CSV 转 SSA 会按起始时间重排吗?

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

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

会丢样式、屏幕定位、卡拉OK 计时与脚本私有内容。那份清单和去程这一份不同,因为两个方向保留的东西不一样。

CSV 转 SSA 的默认样式表里有什么?

一份名为 Default 的样式,字体 Arial、字号 20,颜色与边距取中性值。CSV 没有任何样式可继承,所以所有字幕都落在这一份默认样式上。

相关工具