跳到主要内容
SubtitleMatrix

TXT 转 TTML

格式转换纯文本稿
或者粘贴字幕文本

选项

当源文件没有结束时间时使用(纯文本、LRC)。输出里的时间轴是在这里生成的,不是转换来的,所以填多少就是多少。

这次转换会改变什么

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

  • 时间

    时间轴本身——源文件不记录任何时间,因此输出的时间轴是生成的,而不是转换来的

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

TXT 转 TTML 会给每行文字补上起止时间,写成 `<p begin=… end=…>`。第一行从 0 开始,之后每行接着上一行的结束,单行长度由“时长”参数决定,默认 2000 毫秒;时间写到毫秒,不再舍入。

产物是带 XML 声明的 TTML 文档,正文在 `<body>` 里逐条排列。TXT 的空白行是段落分隔,不会生成空的 `<p>`;每条非空行对应一条字幕,时间码写成 `00:00:02.000`,正文按行序排列。

有损说明只列一项:时间轴是生成的。TXT 没有样式、定位和卡拉OK,因此 TTML 里不会出现从源文件继承的样式或区域设置。

生成的起点是等间距的,适合先得到一份可加载的字幕再对轴。批量转换与浏览器内处理照旧:文件不上传,多个结果打包下载,每个文件独立成一份 TTML,不会互相混入。

示例

一份典型的 TXT 文件转成 TTML

输入

The quick brown fox jumps over the lazy dog.

Second paragraph, first line.
Second paragraph, second line.

输出

<?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:00.000" end="00:00:02.000">The quick brown fox jumps over the lazy dog.</p>
<p begin="00:00:02.000" end="00:00:04.000">Second paragraph, first line.</p>
<p begin="00:00:04.000" end="00:00:06.000">Second paragraph, second line.</p>  </body>
</tt>

这份产物丢掉了时间轴(它由本站排定);每行文字变成一条带毫秒 begin/end 的 `<p>`。

同一转换遇到带 BOM 与空行的 TXT

输入


Hello world.

Second block.

输出

<?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:00.000" end="00:00:02.000">Hello world.</p>
<p begin="00:00:02.000" end="00:00:04.000">Second block.</p>  </body>
</tt>

真实文件常带 BOM、Windows 换行、前后空白和多层空行。可以对照上面那份干净样例,看看解析器能容忍到什么程度。

常见问题

TXT 转 TTML 的 begin 和 end 是怎么来的?

由这一页生成:第一行从 0 开始,之后每行接着上一行的结束,单行长度取“时长”参数(默认 2000 毫秒)。TXT 里没有可读取的时间码。

TXT 转 TTML 会生成空的 p 元素吗?

不会。空白行只作段落分隔,不生成 `<p>`;每条非空行对应一条字幕,所以时间轴里没有由格式造成的空洞。

TXT 转 TTML 每行默认持续多久?

默认 2000 毫秒。所有行共用这个值,最后一条的结束时间等于行数乘以它;改参数会让整份文档的时间范围一起变化。

TXT 转 TTML 的时间会舍入吗?

不会。TTML 的时间精度是毫秒,生成的时间直接写成 `00:00:02.000` 这样的值,不再经过第二次舍入。

TXT 转 TTML 会带样式或 region 吗?

不会。TXT 没有样式表和定位信息,产物只写时间与正文;`<head>` 里不会凭空出现从源文件继承的样式或区域定义。

TXT 转 TTML 的输出用什么编码?

输出固定是 UTF-8、Unix 换行符、不带 BOM,XML 声明里也写着 UTF-8。输入 TXT 若是别的编码,会先解码。

相关工具