跳到主要内容
SubtitleMatrix

SRT 转 TTML

格式转换SubRip(SRT)
或者粘贴字幕文本

这次转换会改变什么

这个方向不会丢失内容 —— 源格式的每一项特性在目标格式里都有地方可去。

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

这一页把 SRT 转成 TTML。TTML 是 XML 系的字幕格式,广播、流媒体与系统间交换字幕时常用;对 SRT 来说,它是一层新的外壳。

产物是一份 XML:XML 声明加 <tt> 根元素,里面是 <body>、<div>,每条字幕是一个带 begin 与 end 的 <p>。时间写成 00:00:04.126,毫秒原样保留;一条两行字幕在一个 <p> 里用 <br/> 分行。

这个方向不丢东西:时间轴、换行、文字与行内格式都能在 TTML 里表达,产物只是同一份字幕的另一种写法。有损的是反方向——TTML 转 SRT 会丢掉样式、定位与格式私有内容。

多个文件可以一次处理,队列串行执行、随时可取消,结果打包成一个 ZIP;转换在浏览器里完成,字幕不上传。输出是 UTF-8、Unix 换行、无 BOM;源文件若是 UTF-16 或 Windows 单字节编码,读入时会先解码。文件名保留,只改扩展名。

示例

一份典型的 SRT 文件转成 TTML

输入

1
00:00:01,000 --> 00:00:03,500
Hello there.

2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.

3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.

输出

<?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:01.000" end="00:00:03.500">Hello there.</p>
<p begin="00:00:03.500" end="00:00:06.000"><span tts:fontStyle="italic">Whispering</span> now.<br/>And a second line.</p>
<p begin="00:00:06.000" end="00:00:09.250"><span tts:fontWeight="bold">Bold</span> statement.</p>  </body>
</tt>

这个方向没有丢东西:时间、换行与文字都能在 TTML 里还原。

同一转换遇到一份脏文件

输入

1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.


2
00:00:03,500 --> 00:00:06,000


3
00:00:08,000 --> 00:00:09,000
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:01.000" end="00:00:03.500"><span tts:fontWeight="bold">Bold</span> and <span tts:fontStyle="italic">italic</span>.</p>
<p begin="00:00:03.500" end="00:00:06.000"></p>
<p begin="00:00:08.000" end="00:00:09.000">Last one.</p>  </body>
</tt>

空条目与坏时间码不会让 XML 无法生成;读得的条目照常写成 p 元素,读不了的记进有损说明。

常见问题

SRT 转 TTML 后时间码怎么写?

写成 <p begin="00:00:04.126" end="…">;毫秒原样保留,不四舍五入。

SRT 转 TTML 是无损的吗?

是。时间轴、换行、文字与行内格式都能在 TTML 里表达,产物只是同一份字幕的另一种写法。

SRT 转 TTML 后一条两行字幕怎么表示?

一个 <p> 里用 <br/> 分成两行,仍是一条字幕。

SRT 转 TTML 的输出结构是什么?

XML 声明加 <tt> 根元素,里面是 <body> 和 <div>,每条字幕是一个 <p>。

TTML 转回 SRT 会丢什么?

TTML 的样式、定位与文档级构造在 SRT 里没有落点,这些内容会在反方向丢失。

SRT 转 TTML 适合什么平台?

广播、流媒体以及需要 XML 交换字幕的系统;TTML 的标签结构比 SRT 更适合被程序处理。

SRT 转 TTML 后字幕顺序会变吗?

不会。产物按起始时间升序,时间轴本身不平移。

相关工具