跳到主要内容
SubtitleMatrix

MicroDVD 转 TTML

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

选项

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

这次转换会改变什么

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

  • 帧率

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

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

这一页把 MicroDVD 写成 TTML:每条字幕是一个 `<p begin="00:00:04.000" end="00:00:06.000">正文</p>`,整份文件是带 XML 声明与命名空间的 `<tt>` 文档。帧号先按帧率换算成毫秒,再写成时钟。

时间不丢:TTML 与这里的换算结果都到毫秒,`{100}` 与 `{150}` 在 25 fps 下原样写成 4.000 与 6.000。丢的是帧率——TTML 的 cue 只有时钟,没有帧号,产物也不会写 `ttp:frameRate`,因为 MicroDVD 的帧率只用于这一次换算。

样式与定位也没有内容可写:MicroDVD 的样式能力是 none,正文里的 `{Y:i}` 这类控制码按文本保留,不会被翻译成 `<span>`。所以产物只有 `<body>` 下的 `<p>`,不会有 `<styling>` 或 `<layout>` 头。

`|` 写成 `<br/>`,两行仍在同一个 `<p>`。产物按开始时间升序,UTF-8、LF、无 BOM;批量串行、可取消、ZIP 打包,不上传。

示例

一份典型的 MicroDVD 文件转成 TTML

输入

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

输出

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <body>
<p begin="00:00:04.000" end="00:00:06.000">The quick brown fox jumps over the lazy dog.</p>
<p begin="00:00:08.000" end="00:00:10.400">Faster than<br/>the last one.</p>  </body>
</tt>

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

同一转换遇到一份脏文件

输入

{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.   

输出

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
  <body>
<p begin="00:00:04.000" end="00:00:06.000">Leading zeros in the frame numbers.</p>
<p begin="00:00:12.000" end="00:00:13.600">An unrecognized line above was kept in place.</p>
<p begin="00:00:16.000" end="00:00:18.000">Trailing spaces are kept.   </p>  </body>
</tt>

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

常见问题

MicroDVD 转 TTML 后,`begin` 与 `end` 写的是什么格式?

时钟写法,精确到毫秒,例如 `00:00:04.000` 与 `00:00:06.000`。帧号已经在转换时换算掉,产物里不会出现 `{100}`。

MicroDVD 转 TTML 会丢帧率吗?

会。TTML 的 cue 没有帧号,产物也不写 `ttp:frameRate`;那个帧率只在换算时用过一次。这一页的损失清单因此只有帧率一项。

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

在同一个 `<p>` 里用 `<br/>` 分开。TTML 的 `<p>` 就是一条 cue,两行不会被拆成两个段落。

MicroDVD 转 TTML 会生成 `<styling>` 或 `<layout>` 头吗?

不会。MicroDVD 没有样式与屏幕位置可带,产物只有 XML 声明、命名空间与 `<body>` 里的 `<p>`;`{Y:i}` 这类控制码作为文本原样保留。

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

先读文件第一行的声明,没有才用默认 25,并在有损说明里写明。两种情况下 `<p>` 的时间都已经固定成毫秒,产物本身不再依赖帧率。

TTML 再转回 MicroDVD 会丢掉什么?

丢掉帧率。TTML 只有时钟,写回 MicroDVD 时要指定帧率并取整到帧;TTML 的样式表与区域表同样没有落点。

相关工具