跳到主要内容
SubtitleMatrix

SMI 转 SRT

格式转换SAMI(SMI)
或者粘贴字幕文本

这次转换会改变什么

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

  • 样式

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

  • 定位

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

  • 格式专有内容

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

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

SMI 转 SRT 是最常用的一条路:SAMI 的 `<SYNC Start=…>` 块变成带编号的 SRT cue,时间写成 `00:00:01,000 --> 00:00:03,000`,文字原样保留。SRT 几乎被所有播放器与剪辑软件接受,是这条路的终点。

时间轴无损:两边都到毫秒,SMI 的 `Start=4126` 就是 SRT 的 `00:00:04,126`,不四舍五入也不重排。乱序的 cue 会按开始时间重新排序,这是文件结构的修正,不改变内容。

丢的是样式、定位与格式私有内容。`<STYLE>` 块的字体、字号、描边、边距,`Class=ENCC` 指向的 CSS,`<TITLE>` 都不会进入 SRT;行内粗体、斜体、下划线与颜色则保留为 `<b>`、`<i>`、`<u>`、`<font color>` 标签。

产物固定 UTF-8、LF 换行、无 BOM,进入的 UTF-16 或 Windows 单字节文件会先解码。所有事情在浏览器里做,不上传、不注册;整季文件可批量串行处理、随时取消,最后打成一个 ZIP。

示例

一份典型的 SMI 文件转成 SRT

输入

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial; }
.ENCC { Name: English; lang: en-US; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P Class=ENCC>Hello there.
<SYNC Start=3000>
<P Class=ENCC>&nbsp;
<SYNC Start=3500>
<P Class=ENCC>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

输出

1
00:00:01,000 --> 00:00:03,000
Hello there.

2
00:00:03,500 --> 00:00:06,000
How are you?
Fine, thanks.

产物丢了样式、定位与格式私有内容;毫秒时间与两行分组都保留。

同一转换遇到一份脏文件

输入

<SAMI>
<HEAD>
<TITLE>Episode 1</TITLE>
<STYLE TYPE="text/css">
<!--
.ENCC { Name: English; }
-->
</STYLE>
</HEAD>
<BODY>
<sync start="00:00:02,500">
<P Class=ENCC>Line one<br>Line two
<sync start=9000>
<P Class=ENCC>Tom &amp; Jerry
<SYNC Start=12000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

输出

1
00:00:02,500 --> 00:00:09,000
Line one
Line two

2
00:00:09,000 --> 00:00:12,000
Tom &amp; Jerry

真实文件常见的损坏:BOM、混合换行、无效的 Start、散落的文本。解析器不抛异常,读不出的部分记进有损说明。

常见问题

SMI 转 SRT 会丢哪些样式?

丢文件级的样式:`<STYLE>` 里的字体、字号、描边、边距,以及 `<P Class=ENCC>` 指向的 CSS 规则。行内的粗体、斜体、下划线与颜色会保留成 SRT 标签。

SMI 转 SRT 后屏幕定位还在吗?

不在。SRT 没有字段能把一条字幕放到指定坐标,位置由播放器决定,所以 SMI 的段落定位会整条丢弃。

SMI 的毫秒时间轴在 SRT 里会变吗?

不会。两边都到毫秒,`Start=4126` 写成 `00:00:04,126`,不重排也不舍入。

SMI 转 SRT 时,一条两行字幕怎么输出?

同一个 SRT cue 里写两行,中间是普通换行;播放器会一起显示,不会被拆成两条。

SMI 转 SRT 会改变 cue 的顺序吗?

按开始时间升序输出。原文件若乱序会被纠正,这是结构上的修正,文字内容不变。

SMI 转 SRT 后,`<TITLE>` 和 `Class` 属性去哪了?

被丢弃。SRT 只存 cue,没有文档级标题,也没有段落语言轨的概念。

SMI 转 SRT 的产物是什么编码?

UTF-8、LF 换行、无 BOM;输入若是 UTF-16 或 Windows 单字节编码,会先解码并在结果面板说明。

相关工具