SRT、VTT 和 ASS 的区别

想要几乎处处可用的文件,请用 SRT;网页上的视频用 WebVTT;需要字体、颜色和精确位置时,例如动漫字幕组和卡拉 OK,请用 ASS。

同一条字幕的三种格式

下面是一条 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 文件已准备好保存为 WebVTT

三种格式对比

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 等多种字幕文件。

文件始终保留在你的浏览器中。