SRT 和 VTT
几乎是同一种文件。区别在于其中一种能在浏览器的视频元素里用,另一种不能。
核对于 2026年8月6日
直接说结论
凡是要上传的场合都用 SRT:YouTube、社交平台、剪辑软件。自己把视频放到网页上时用 VTT,因为浏览器的 track 元素读不了 SRT 文件。如果你的字幕永远只是交给平台,那答案就是 SRT,这一页剩下的都是细节。
真正有区别的地方
| SRT | VTT | |
|---|---|---|
| 扩展名 | .srt | .vtt |
| 第一行 | 数字 1 | WEBVTT 这个词,而且是必须的 |
| 毫秒分隔 | 逗号:00:01:02,500 | 句点:00:01:02.500 |
| 浏览器 track 元素 | 完全读不了 | 唯一读得了的格式 |
| 样式和位置 | 没有 | CSS、对齐,以及屏幕分区 |
| 章节和元数据 | 没有 | 有,作为独立种类的轨道 |
| 注释 | 没有 | 以 NOTE 开头的行 |
| YouTube 接受 | 接受 | 接受 |
除此之外两者是同一个思路:一段段文字,各自带一个起始时间和一个结束时间,装在一个放在视频旁边的文件里。
决定选哪个的只有一条
HTML 有一个 track 元素用来挂字幕,而它只读 WebVTT。喂给它一个 SRT,你得到的是一个没有字幕的视频,外加一条不值得看的错误。所有浏览器都是这个行为,也没有哪家打算改。
决定就到此为止。自己发布视频,用 VTT。把文件交给平台,由平台在内部转成它自己用的东西,那 SRT 没问题,而且是更稳妥的习惯,因为认它的软件更多。
两者互转几乎等于没做什么
VTT 就是在 SRT 的第一行加上 WEBVTT 这个词,下面空一行,再把时间戳里的逗号换成句点。段落序号留着或去掉都行,因为 VTT 把它当成可选的标签而不是结构的一部分。
所以几乎任何能写出其中一种的工具都能写出另一种,去找转换器是白费力气。在导出那一步两种都拿上,需要哪个用哪个。
VTT 能做而 SRT 做不到的
VTT 能把一句字幕放在底部居中以外的地方,用 CSS 给它加样式,还能划出屏幕上的区域。它还能以独立轨道的形式携带章节标记和任意元数据,播放器的章节列表就是这么来的,而不是从简介里抠出来的。
但如果字幕是要交给 YouTube 的,这些一样也帮不上:它会剥掉表现层,换成自己的。只有在播放器由你控制的时候才去动用这些能力,在那之前不必。
两个一起拿
这里的转写工具在同一趟里导出 .srt、.vtt 和纯文本,所以选哪个是按一下下载按钮的事,不是一次转换。视频只发送声音,视频文件本身不离开你的机器。
更多指南
指南FAQ
- YouTube 上该用 SRT 还是 VTT?
- 两个都能传。SRT 是更稳妥的习惯,因为读得懂它的软件更多,而 VTT 能加的那些样式 YouTube 反正也会丢掉。
- 浏览器能播 SRT 吗?
- 通过 track 元素不能,而那是网页上给视频挂字幕的标准做法,它只读 WebVTT。用 JavaScript 写的播放器想读什么都行,但那是播放器在读,不是浏览器在读。
- VTT 是什么的缩写?
- Video Text Tracks,通常写作 WebVTT。文件第一行必须是 WEBVTT 这个词,否则什么都读不了它。
- VTT 比 SRT 更好吗?
- 它能做的更多,但"更多"只有在你用得上的地方才等于"更好",而那意味着播放器由你控制。用于上传时,多出来的能力会被丢掉,SRT 更广的兼容性反而更值钱。
- 把 .srt 改名成 .vtt 行吗?
- 不行。还得在顶部加上 WEBVTT 那一行,并且把毫秒前的逗号换成句点。改动很小,但不是零。