MicroDVD 转 SMI
或者粘贴字幕文本
选项
时间按哪个帧率计算。在格式页面里,这是 MicroDVD 需要的值,因为它把时间存成帧号。在帧率页面里,它是文件当初对应的速率 —— 字幕是按这个版本做的 —— 而页面的第二个框填你要拿它配套的视频速率。常见的有 23.976、24、25、29.97、30、50、59.94 和 60。填错会让整条时间轴偏移;在帧率页面里,偏移是按比例发生的,而不是一个固定的量。
这次转换会改变什么
有 1 项会被丢弃或需要你决定
- 帧率
源文件以帧号存储时间——每个时间戳都取决于你提供的帧率
这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。
这一页把 MicroDVD 写成分时同播的 SAMI(SMI)。每条字幕是一个 `<SYNC Start=毫秒>` 加一个 `<P>`;因为 SAMI 的一条 SYNC 会替换屏幕上的全部内容,每条 cue 后面还要补一个 `<P> `,把屏幕清空。
时间精确到毫秒:`{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>
<SYNC Start=8000>
<P>Faster than<br>the last one.
<SYNC Start=10400>
<P>
</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>
<SYNC Start=12000>
<P>An unrecognized line above was kept in place.
<SYNC Start=13600>
<P>
<SYNC Start=16000>
<P>Trailing spaces are kept.
<SYNC Start=18000>
<P>
</BODY>
</SAMI>
真实文件常见的损坏:混合换行、BOM、散布的空白、带前导零的帧号、认不出的行。可以对照上面那份干净样例,看解析器能容忍到什么程度。
常见问题
MicroDVD 转 SMI 时,每条 cue 后面的 `<P> ` 是干什么的?
用来清屏。SAMI 的 `<SYNC>` 是“从此刻起显示这些内容”,不写一条空内容,上一条字幕会一直留在屏幕上。` ` 让画面在结束时刻回到空白。
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 的模型里。