MicroDVD 转 TTML
或者粘贴字幕文本
选项
时间按哪个帧率计算。在格式页面里,这是 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 的样式表与区域表同样没有落点。