跳到主要内容
SubtitleMatrix

SSA 转 TXT

格式转换SubStation Alpha(SSA)
或者粘贴字幕文本

这次转换会改变什么

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

  • 时间

    整条时间轴(输出格式完全不记录时间)

  • 样式

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

  • 定位

    屏幕定位(每条字幕条都会回到默认位置)

  • 卡拉 OK

    卡拉OK计时(逐音节高亮)

  • 换行

    换行(多行字幕条会被合并成一行)

  • 格式专有内容

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

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

这一页把 SSA 里的文字抽成纯文本。产物只有一行行的句子:没有时间码,没有样式,也没有“这几行属于同一条字幕”的结构;转换在浏览器里完成,不上传。

丢得最多的一页。时间轴:TXT 没有任何字段能记第几秒出现,顺序保留,但什么时候上屏已经不在文件里。样式:样式表与 {\i1} 这类覆写标记全部去掉。定位与卡拉OK:\pos、\an、\move 与 \k 系列指令同样没有落点。换行结构:一条两行的字幕两行都会写出来,可读回去会变成两条独立的字幕。

这些代价在后续要交给翻译或重新对轴的工具时才显出全部重量——那些工具读到的是一条条独立的行,而不是原来的字幕条。脚本层的 [Script Info]、Comment: 行与内嵌资源也都不出现。

转换在本机完成,不上传,可以批量。产物是 UTF-8、Unix 换行、无 BOM,按起始时间升序,适合校对稿与纯文本交接。

示例

一份典型的 SSA 文件转成 TXT

输入

[Script Info]
Title: Example SSA
ScriptType: v4.00
Collisions: Normal

[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: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\i1}Italic{\i0} line.
Dialogue: Marked=0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Two\Nlines

输出

Hello there.
Italic line.
Two
lines

这份产物丢掉了时间轴、样式、定位、卡拉OK、换行结构与脚本内容;文字逐行一致。

同一转换遇到一份脏文件

输入

[Script Info]
Title: Dirty SSA
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
Comment: Marked=0,0:00:00.00,0:00:01.00,Default,,0,0,0,,not a subtitle
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,{\b1}Bold{\b0} and {\u1}underlined{\u0}.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,A soft\nbreak and a {\p1}mystery{\p0} code.

输出

Bold and underlined.
A soft
break and a {\p1}mystery{\p0} code.

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

常见问题

SSA 转 TXT 后,时间码去哪了?

TXT 没有时间码可写。产物只有文字,顺序保留,第 40 行对应源文件的第 40 行,但文件里再没有任何字段说明它什么时候上屏。

SSA 转 TXT 后,粗体、斜体和颜色还在吗?

不在。TXT 不存任何样式:样式表里的字体、字号、颜色,以及正文里的 {\i1} 这类覆写标记,全都没有落点;每行按纯文本写出。

SSA 转 TXT 后,屏幕定位和卡拉OK 计时呢?

都丢。\pos、\an、\move 决定画在画面哪里,\k、\kf、\ko 决定每个音节什么时候亮,而 TXT 既没有位置也没有时刻,这些指令都被去掉。

SSA 转 TXT 后,一条两行字幕会怎样?

两行都会写出来,但分组没有了:TXT 不能把两行绑成一条字幕,读回去会变成两条独立的字幕。之后要交给翻译或对轴工具时,这一层结构找不回。

SSA 转 TXT 后,[Script Info] 和 Comment: 行呢?

都不会过去。只有 Dialogue: 行的文字进入产物;[Script Info](包括标题)、样式表、Comment: 行,以及 [Fonts]/[Graphics] 里内嵌的内容全部丢掉。

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

会丢时间轴与精度。TXT 里没有起止时间,回程只能按默认间隔补,补出来的时间与原来不再相同;那份清单和去程这一份不同。

相关工具