Flamingo 的 TTML 歌词入门:支持程度与四种时间写法
TTML(Timed Text Markup Language)是基于 XML 的计时文本格式,Apple Music 的逐字歌词就用它。Flamingo 是少数完整支持 TTML 的本地播放器,这也是它歌词体验对味的核心原因。
TTML 长什么样
<tt xmlns="http://www.w3.org/ns/ttml">
<body>
<div>
<p begin="00:00:03.730" end="00:00:08.110">第一句歌词</p>
<p begin="00:00:08.500" end="00:00:12.000">第二句歌词</p>
</div>
</body>
</tt>
- 每行歌词是一个
<p>元素,begin/end属性定起止时间。 - 逐字计时用子级
<span>元素,见TTML 逐字歌词。
四种时间格式都支持
begin="7.372" → 纯秒数
begin="1:07.372" → 分:秒
begin="00:01:07.372" → 时:分:秒
begin="7.372s" → 带后缀的秒
同一份文件里混用也可以,解析器都能读。
元数据的取舍
官方文档明确了读取范围:
- 读取:歌词正文、行计时、逐字计时、
ttm:agent(对唱标记)、字幕(translations)、音译(transliterations)。 - 忽略:歌曲分段标签、词曲作者、创作团队分组与配色等其他元数据——当前版本不解析。
与 LRC 的优先级
同一首歌两种格式都存在时:
- TTML 优先显示。
- TTML 解析失败自动退回 LRC(如果有)。
所以给曲库补歌词时,重要的歌可以 TTML + LRC 双保险,见歌词加载方式。
后续细页
- 逐字计时与逐字高亮:TTML 逐字歌词。
- 字幕/翻译/音译的 itunes key 写法:TTML 翻译与音译。
- 重叠行、对唱等效果的呈现:歌词显示效果。