跳到主要内容
SubtitleMatrix

MicroDVD 转 SMI

格式转换MicroDVD(SUB)
或者粘贴字幕文本

选项

时间按哪个帧率计算。在格式页面里,这是 MicroDVD 需要的值,因为它把时间存成帧号。在帧率页面里,它是文件当初对应的速率 —— 字幕是按这个版本做的 —— 而页面的第二个框填你要拿它配套的视频速率。常见的有 23.976、24、25、29.97、30、50、59.94 和 60。填错会让整条时间轴偏移;在帧率页面里,偏移是按比例发生的,而不是一个固定的量。

这次转换会改变什么

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

  • 帧率

    源文件以帧号存储时间——每个时间戳都取决于你提供的帧率

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

这一页把 MicroDVD 写成分时同播的 SAMI(SMI)。每条字幕是一个 `<SYNC Start=毫秒>` 加一个 `<P>`;因为 SAMI 的一条 SYNC 会替换屏幕上的全部内容,每条 cue 后面还要补一个 `<P>&nbsp;`,把屏幕清空。

时间精确到毫秒:`{100}` 在 25 fps 下写成 `Start=4000`,`{150}` 写成 `Start=6000`。帧率仍按页面框、文件声明、默认 25 的顺序取,页面框优先。帧号本身不保留,SAMI 也没有记录帧率的字段。

`|` 会写成 `<br>`,两行仍在同一个 `<P>` 里。产物是 `<SAMI>`/`<HEAD>`/`<BODY>` 的完整文档,带一个只做居中与字体的最小样式块;MicroDVD 没有样式可带过来,所以这里没有别的可丢。

按开始时间升序,UTF-8、LF、无 BOM;批量串行、可取消、ZIP 打包,全程在浏览器里,不上传。

示例

一份典型的 MicroDVD 文件转成 SMI

输入

{1}{1}25
{100}{150}The quick brown fox jumps over the lazy dog.
{200}{260}Faster than|the last one.

输出

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=4000>
<P>The quick brown fox jumps over the lazy dog.
<SYNC Start=6000>
<P>&nbsp;
<SYNC Start=8000>
<P>Faster than<br>the last one.
<SYNC Start=10400>
<P>&nbsp;
</BODY>
</SAMI>

产物丢掉了帧率;其余逐行一致。

同一转换遇到一份脏文件

输入

{1}{1}23.976
{0100}{0150}Leading zeros in the frame numbers.
[INFORMATION]
{300}{340}An unrecognized line above was kept in place.
{400}{450}Trailing spaces are kept.   

输出

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=4000>
<P>Leading zeros in the frame numbers.
<SYNC Start=6000>
<P>&nbsp;
<SYNC Start=12000>
<P>An unrecognized line above was kept in place.
<SYNC Start=13600>
<P>&nbsp;
<SYNC Start=16000>
<P>Trailing spaces are kept.   
<SYNC Start=18000>
<P>&nbsp;
</BODY>
</SAMI>

真实文件常见的损坏:混合换行、BOM、散布的空白、带前导零的帧号、认不出的行。可以对照上面那份干净样例,看解析器能容忍到什么程度。

常见问题

MicroDVD 转 SMI 时,每条 cue 后面的 `<P>&nbsp;` 是干什么的?

用来清屏。SAMI 的 `<SYNC>` 是“从此刻起显示这些内容”,不写一条空内容,上一条字幕会一直留在屏幕上。`&nbsp;` 让画面在结束时刻回到空白。

MicroDVD 转 SMI 的 `Start=` 是什么单位?

毫秒。第 100 帧在 25 fps 下是 `Start=4000`,第 150 帧是 `Start=6000`;换算结果不四舍五入。

MicroDVD 转 SMI 时两行字幕怎么写?

在同一个 `<P>` 里用 `<br>` 分开。它仍然是一条字幕,结束时刻由下一条 SYNC 决定。

MicroDVD 转 SMI 会保留帧号吗?

不会。SAMI 只认毫秒,帧号与帧率都不会出现在产物里。

MicroDVD 转 SMI 时帧率框留空会怎样?

先读文件第一行的声明,没有声明才用默认 25,并在有损说明里写明。用上默认值时整条时间轴都是按 25 猜的。

SMI 再转回 MicroDVD 会丢掉什么?

丢掉样式、定位、帧率与格式私有构造。SAMI 的 CSS 块与 `<SYNC>` 结构都不在 MicroDVD 的模型里。

相关工具