SMI 转 SRT
或者粘贴字幕文本
这次转换会改变什么
有 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>
<SYNC Start=3500>
<P Class=ENCC>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P Class=ENCC>
</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 & Jerry
<SYNC Start=12000>
<P Class=ENCC>
</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 & 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 单字节编码,会先解码并在结果面板说明。