字幕格式完全指南:SRT、VTT、ASS、LRC、SBV、SSA、TTML | AllSubConverter
字幕格式为何存在
字幕在屏幕上看起来很简单 — 一两行与对话同步的文字 — 但在底层,它们以多种不同的文件格式存储。每种格式都是为不同的时代、平台或用途而设计的:SRT 用于 DVD 时代的电影抓取,VTT 用于现代网络,ASS 和 SSA 用于带有精美样式的字幕组动漫,LRC 用于音乐播放器,SBV 用于早期 YouTube,TTML 则服务于广播和流媒体标准机构。
知道该用哪种格式 — 以及如何在它们之间转换 — 正是"直接能用"的字幕与加载失败、显示乱码或逐渐失同步的文件之间的分水岭。本指南是所有主要格式的参考手册,前面有一张对比总表,后面是每种格式的详细解析。一旦你理解了整体格局,格式之间的转换就会变得简单明了。
格式对比总表
以下是各主要格式在关键维度上的对比:文件扩展名、时间戳写法、功能特性、最适场景,以及浏览器是否原生支持。
| 格式 | 扩展名 | 时间戳格式 | 关键特性 | 最适用于 | 浏览器支持 |
|---|---|---|---|---|---|
| SRT | .srt | hh:mm:ss,ms | 简单、通用、纯文本 | 电影、离线播放器 | 不支持(需转 VTT) |
| VTT | .vtt | hh:mm:ss.ms | 样式、定位、章节 | 网络视频、HTML5 | 原生支持 |
| ASS | .ass | h:mm:ss.cs | 完整样式、动画、定位 | 动漫、卡拉 OK、样式字幕 | 不支持 |
| SSA | .ssa | h:mm:ss.cs | ASS 的前身,支持样式 | 旧版样式字幕 | 不支持 |
| LRC | .lrc | [mm:ss.xx] | 极简起始时间标签 | 音乐歌词、卡拉 OK | 通过音乐播放器 |
| SBV | .sbv | h:mm:ss.s | 旧版 YouTube 字幕格式 | 旧版 YouTube | 不支持 |
| TTML | .ttml / .dfxp | hh:mm:ss.ms | 广播级、丰富样式 | 流媒体、广播 | 有限(通过 IMSC) |
有一个时间戳细节经常让人踩坑:SRT 在毫秒前使用逗号(00:00:01,000),而 VTT 使用句号(00:00:01.000)。这单个字符的差别,就是一个 VTT 文件能正常播放和静默失败之间的全部区别。
SRT — 通用主力
SubRip(SRT)是字幕中最接近"通用语"的存在。它诞生于 DVD 抓取时代,采用了刻意精简的结构:一个序号、一行起止时间戳,以及一行或多行文本。没有样式,没有元数据,也没有定位 — 只有时间码和文字。
这种简单正是它的优势。几乎所有媒体播放器都能读取 SRT,使其成为你不确定文件最终会在哪里播放时的最安全选择。它的弱点在于网络:浏览器不原生播放 SRT,因此在 HTML5 视频中需要先转换。如果这正是你的需求,我们的 SRT 转 VTT 指南 会逐步引导你完成整个过程。
VTT — 网络标准
WebVTT(VTT)是 W3C 为网络文本轨道制定的标准。它看起来与 SRT 相似 — 时间戳行和文本块的格式会让你感到熟悉 — 但它增加了一个必需的 WEBVTT 头部,将时间戳分隔符改为句号,并加入了真正的功能:类 CSS 样式提示、说话者标签、定位和章节元数据。
由于所有现代浏览器都通过 HTML5 <track> 元素支持 VTT,它是在网页中播放的任何内容的首选目标格式,包括 YouTube、Vimeo 和自定义播放器。大多数时候,"让它在网页上跑起来"就等于"把它转换成 VTT"。
ASS 和 SSA — 样式强大
SubStation Alpha(SSA)及其后继者 Advanced SubStation Alpha(ASS)的存在只有一个原因:样式。SRT 和 VTT 将文本视为带有轻量格式的纯文字,而 ASS/SSA 将每条字幕事件视为一个完整的样式对象,拥有字体、颜色、描边、阴影、旋转、移动和屏幕定位。正是这种格式驱动了精美样式的动漫字幕、卡拉 OK 效果和直接排版到画面上的招牌翻译。
代价是浏览器和大多数简易播放器完全不理解 ASS。要在网络或基础播放器中使用样式字幕,通常需要将其向下转换为 SRT 或 VTT — 同时接受丰富样式会在此过程中丢失的现实。要深入了解这些格式的工作方式,请参阅我们的 ASS 字幕样式指南。
LRC — 极简歌词
LRC 是一个完全不同的类别。它存储的不是视频字幕,而是音乐歌词。每一行以一个 [mm:ss.xx] 格式的时间戳开头,紧接着是歌词文本。没有结束时间戳,没有样式,除了可选的标题或艺术家头部外也没有其他元数据。下一个时间戳隐式地标志着上一行的结束。
这种极简是有意为之的:像 Winamp、foobar2000 和 AIMP 这样的音乐播放器只需要每行的起始时间就能同步滚动歌词。如果你要将字幕从视频格式迁移到音乐库中,转换为 LRC 是正确的做法,我们的 SRT 转 LRC 详细教程 展示了如何干净利落地完成它。
SBV — YouTube 的旧版字幕格式
SBV 是 YouTube 早期使用的字幕格式,带有一种略为特殊的时间戳风格(0:00:00.0)。YouTube 后来转向了 VTT — 其字幕现在以 VTT 提供 — 但你仍会在旧存档和第三方工具中遇到 SBV 文件。将 SBV 转为 SRT 或 VTT 通常是使其在任何现代平台上可用的第一步。
TTML — 广播级标准
定时文本标记语言(TTML)及其面向流媒体的配置文件 IMSC(以及旧版 DFXP / .dfxp 扩展名)是一种基于 XML 的格式,被广播公司和主要流媒体服务使用。它在设计上就冗长且复杂,因为它必须满足严格的无障碍和法律字幕要求,支持多种语言和地区,并为从新闻滚动条到歌剧字幕的一切内容携带精确布局。
大多数个人创作者永远不会手写 TTML,但当你需要向要求广播级格式的平台交付字幕时,可能需要将更简单的文件转换为 TTML;或者当你收到一个 TTML 文件时,可能需要将其转换为更通用的 SRT。
如何选择正确的格式
一条简单的决策路径可以覆盖绝大多数场景:
- 在浏览器中播放或上传到 YouTube/Vimeo? → VTT。
- 在桌面或移动媒体播放器中播放(VLC、MPV、手机)? → SRT。
- 需要丰富样式、字体或屏幕效果? → ASS(然后在网络端向下转换)。
- 在音乐播放器中显示歌词? → LRC。
- 向广播公司或标准平台交付? → TTML/IMSC。
- 继承了一个旧的 YouTube SBV 文件? → 转为 SRT 或 VTT。
如果拿不定主意,SRT 是最安全的交换格式,因为所有工具都能读取它;VTT 是最安全的网络交付格式,因为浏览器原生播放它。大多数实际工作流只需要一次转换:把文件变成目标端所期望的那两种之一。
格式之间的转换
转换很少在两个方向上都无损。向上转换到更丰富的格式(SRT → VTT,或 VTT → ASS)会增加能力但不丢失信息。向下转换(ASS → VTT,或 VTT → LRC)会丢弃目标格式无法表达的功能 — 样式、定位或结束时间戳。这是正常的,不是缺陷:目标是落在你的播放器实际能理解的格式上。
一个好的转换器会保留目标格式能容纳的一切,对剩余部分优雅降级,因此即使样式丢失,时间码和文本始终都能保留下来。
动手实践
了解这些格式差异最清晰的方式是拿一个文件,观察它的转换过程。将 SRT 转为 VTT 是最常见的起点,它能干净利落地展示从逗号到句号的切换、必需的头部以及被去掉的序号 — 这些正是格式边界的定义特征。
准备好在字幕格式之间转换了吗?
立即转换 SRT 为 VTT →