同一条字幕的三种格式
下面是一条 SRT 字幕,以及转换为 WebVTT 后的同一条字幕:
1
00:00:01,000 --> 00:00:03,500
然后锁上大门。
WEBVTT
00:00:01.000 --> 00:00:03.500
然后锁上大门。
在 ASS 中,同一行字幕是一张表里的一行,其中还会写明样式名。用字幕格式转换转换后如下(文件上方还有文件头和样式列表):
1
00:00:01,000 --> 00:00:03,500
然后锁上大门。
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,然后锁上大门。

三种格式对比
| SRT(.srt) | WebVTT(.vtt) | ASS(.ass) | |
|---|---|---|---|
| 时间格式 | 00:00:01,000 |
00:00:01.000 |
0:00:01.00 |
| 精度 | 毫秒 | 毫秒 | 百分之一秒 |
| 文件头 | 无 | WEBVTT 行 |
[Script Info] 和样式列表 |
| 样式 | 基本的 <i>、<b>、<u>、<font>(并非所有播放器都支持) |
CSS 类和 ::cue 样式 |
每种样式、每一行都可设置字体、字号、颜色、描边 |
| 位置 | 部分播放器支持 {\an8} 代码 |
行、位置和对齐设置 | 精确的 x/y 位置、旋转和特效 |
| 最适合 | 播放器、编辑器、电视、上传 | 网页上的 HTML5 视频 | 带样式的字幕、动漫、卡拉 OK |
WebVTT 的规则来自 W3C 的 WebVTT 规范:文件必须以 WEBVTT 开头,时间的毫秒前使用句点。
该用哪一种
- 用 VLC、mpv、Plex、Kodi 或电视观看下载的视频: SRT 最稳妥。能读取 ASS 的播放器会显示其样式,而 SRT 几乎所有播放器都能使用。
- 上传到 YouTube: SRT、SBV 和 WebVTT 都在 YouTube 的支持列表中。
- 把视频放在自己的网页上: 用 WebVTT。HTML 的
<track>元素可以播放 WebVTT。可用 SRT 转 VTT 转换。 - 在编辑器中打开从网页播放器或会议录制中得到的字幕: 许多编辑器需要 SRT。可用 VTT 转 SRT 转换。
- 带字体和颜色的字幕样式: 用 ASS。先用 SRT 转 ASS 从 SRT 开始,再在 Aegisub 这类字幕编辑器中继续编辑。
常见错误
- 只改名字,不转换。 给 SRT 文件起一个
.vtt名字,它仍然是 SRT 文件,严格的网页播放器会拒绝它。 - 以为 SRT 能保留 ASS 的样式。 转换为 SRT 只保留文字和时间。如果以后可能需要样式,请保留原始的 ASS 文件。
- 忘了字符编码。 更换格式并不能修复乱码。如果你看到 é 或 �,请修复字符编码;转换工具也会把每个文件保存为 UTF-8。
来源:W3C,WebVTT: The Web Video Text Tracks Format(英文,Candidate Recommendation Draft);YouTube 帮助,Supported subtitle and closed caption files(英文)。
常见问题
VTT 和 SRT 有什么区别?
两者存储的都是带时间的字幕。WebVTT 以 WEBVTT 文件头开始,毫秒前使用句点而不是逗号,并且可以设置行的位置和样式。SRT 更简单,更多播放器和编辑器都能读取。
直接把 .srt 文件改名为 .vtt 可以吗?
不一定可靠。网页播放器要求有 WEBVTT 文件头,时间里也要用句点,有些播放器缺少这些就会拒绝文件。请转换格式,只需一秒钟。
把 ASS 转换为 SRT 会丢失内容吗?
会。SRT 没有字体、颜色、位置和特效,这些内容会被删除,但文字和时间会保留。
YouTube 接受哪些格式?
YouTube 的支持列表包括 SubRip(.srt)、SubViewer(.sbv)、WebVTT(.vtt)、TTML 等多种字幕文件。