SMI 转 CSV
或者粘贴字幕文本
这次转换会改变什么
有 3 项会被丢弃或需要你决定
- 样式
全部样式(粗体、斜体、颜色、描边、阴影)
- 定位
屏幕定位(每条字幕条都会回到默认位置)
- 格式专有内容
源格式保留在字幕条之外的内容(非字幕块、文件头文字、单条字幕的设置、被注释掉的事件)——目标格式没有地方存放它们
这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。
SMI 转 CSV 把每条 SYNC 块摊成表格的一行:`start,end,text` 三列,时间写成 `00:00:04.126`,多行字幕放进同一个单元格并按 CSV 规则加引号。表格可以直接用 Excel 打开,也可以交给脚本做批量检查。
丢的是样式、定位与格式私有内容。SMI 用 `<STYLE>` 在 cue 之外声明字体、字号、描边、边距,这些在 CSV 里没有列可以放;`<P Class=ENCC>` 这类段落属性与它指向的 CSS 也一起消失,`<TITLE>` 同样不保留。
行内强调是例外:`<b>`、`<i>`、`<u>`、`<font color="…">` 属于文字本身,会作为标签写进 text 单元格,所以颜色和粗斜体还能看见。时间戳不四舍五入,因为两边都能到毫秒;乱序的 cue 会按开始时间重排。
所有处理在本机浏览器完成,文件不上传、不需要注册;批量拖入后逐条处理,可以中途取消,最后打成一个 ZIP 下载。
示例
一份典型的 SMI 文件转成 CSV
输入
<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>
输出
start,end,text
00:00:01.000,00:00:03.000,Hello there.
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>
输出
start,end,text
00:00:02.500,00:00:09.000,"Line one
Line two"
00:00:09.000,00:00:12.000,Tom & Jerry
真实文件常见的损坏:BOM、混合换行、无效的 Start、散落的文本。解析器不抛异常,读不出的部分记进有损说明。
常见问题
SMI 转 CSV 时,行内粗体和颜色会去哪一列?
会作为标签写进 text 那一列,例如 `<i>`、`<font color="…">`;CSV 没有样式列,这是唯一还能承载行内强调的位置。
SMI 转 CSV 的时间戳会舍入吗?
不会。SMI 和 CSV 都能到毫秒,`Start=4126` 原样写成 `00:00:04.126`,字幕显示 2.9 秒就还是 2.9 秒。
SMI 的 `<STYLE>` CSS 和 `<P Class=ENCC>` 在 CSV 里怎么放?
放不下。CSV 只有 `start,end,text` 三列,段落属性与它指向的 CSS、`<TITLE>` 都没有字段,转换时全部丢弃。
SMI 转 CSV 后,一条两行字幕还是一行吗?
是一条记录,两行文字都放在同一个 text 单元格里,并按 CSV 规则加引号。
SMI 转 CSV 会重排乱序的字幕吗?
会。所有 cue 按开始时间升序写出,原文件顺序只影响读取,不影响产物结构。
CSV 转回 SMI 能把样式补回来吗?
不能。SMI 转 CSV 丢掉的样式、定位与私有内容没有记录在 CSV 里,反向转换只能得到结构相同的纯文本字幕。