一、VTT是啥?简单说就是“网页专用的字幕格式”
VTT(WebVTT,全称Web Video Text Tracks),是W3C(万维网联盟)为HTML5视频制定的官方字幕格式。2010年前后开始起草,2016年左右成为正式推荐标准。简单理解:VTT就是SRT的“正规军版本”。
在VTT出现之前,浏览器里放视频加字幕很麻烦。各个浏览器支持的格式不一样,有的只认SRT,有的根本不支持外挂字幕。Google、苹果、Mozilla这些浏览器厂商坐下来一商量,决定搞一个统一标准,这就是VTT的由来。
一个标准的VTT文件长这样:
WEBVTT Kind: captions Language: zh NOTE 这是一条注释,不会显示在画面上 00:00:15.200 --> 00:00:18.600 你吃饭了吗? 00:00:19.000 --> 00:00:22.500 吃过了,你呢?注意看,VTT和SRT最大的区别是:第一行必须是WEBVTT,后面可以跟一些元数据(比如字幕类型、语言)。时间轴用的是点号分隔毫秒(00:00:15.200),而不是SRT的逗号。其他部分和SRT差不多。
二、VTT比SRT多了啥?
很多人第一眼看VTT,觉得“这不就是SRT改了个头吗”。实际上VTT多了不少功能,只是大部分普通用户用不到。
📝 注释(NOTE)
VTT支持注释,以NOTE开头,后面的内容不会显示在画面上。你可以用它来记录翻译备注、时间轴调整记录、或者给后期人员留说明。SRT没有这个功能,注释只能写在文件名里或者另存一个文档。
NOTE 这一段是主角内心独白 NOTE 翻译时要体现犹豫的情绪🎨 样式(CSS样式绑定)
VTT可以给字幕设置CSS样式,比如颜色、字体大小、位置。你用::cue这个伪元素,就能在CSS里控制字幕显示效果。
/* CSS 里写 */ video::cue { color: yellow; font-size: 24px; }📍 定位(cue positioning)
VTT可以指定字幕显示在屏幕的哪个位置,不一定是底部居中。你可以控制字幕的垂直位置(line)、水平位置(position)、对齐方式(align)。
00:00:15.200 --> 00:00:18.600 line:10% position:20% align:left 这是左上角显示的字幕🔊 音频描述(多轨道)
VTT不只是给字幕用的。通过设置Kind属性,可以区分不同的轨道类型:subtitles(翻译)、captions(听障)、descriptions(视频描述)、chapters(章节)、metadata(元数据)。
三、VTT有什么不好用的地方?
VTT虽然是官方标准,但这么多年了,还是没有完全取代SRT。主要原因是下面几个:
📀 播放器支持不够
浏览器是原生支持VTT了,但桌面播放器呢?VLC、PotPlayer、MPC-HC这些主流播放器,打开VTT文件没问题,但高级功能(样式、定位、多轨道)基本不支持。大部分播放器还是把VTT当SRT来解析。
✍️ 编辑工具少
SRT可以用记事本打开直接改,VTT也可以,但VTT的注释、样式、定位这些功能,手写容易出错。专门支持VTT的编辑工具不多,很多字幕组还是习惯先做SRT,最后再转成VTT。
📦 文件体积稍大
VTT因为可以包含注释、样式定义、定位信息,文件体积比同等内容的SRT大10%-30%。对于单个文件来说差别不大,但如果你的网站有几万条字幕,CDN流量成本会高一点。
🎯 一个有意思的现象
YouTube、Netflix、B站这些大平台,后台存储的字幕其实是VTT或更复杂的格式(比如TTML),但提供给用户下载的往往是SRT。原因很简单:用户下载SRT是为了在本地播放器里看,而本地播放器对SRT兼容最好。
四、VTT和SRT互转,很简单
好消息是,VTT和SRT的互转非常容易,因为两者的核心结构几乎一样。转换只需要处理三个地方:
- 第一行:VTT需要"WEBVTT",SRT没有这行,互转时加上或删掉就行。
- 毫秒分隔符:VTT用点号(.),SRT用逗号(,),全局替换一下。
- 注释和样式:VTT的NOTE、样式定义、定位信息,转成SRT时会丢失。反过来SRT转VTT,这些信息也没有,需要手动加。
在线转换:直接搜"VTT to SRT",一堆免费工具。推荐:Subtitle Tools、Happy Scribe、Convertio。
用软件转换:Aegisub、Subtitle Edit都支持VTT导入导出。操作很简单:打开文件 → 另存为 → 选目标格式。
手动转换:如果只是想快速改几个文件,用记事本打开,做下面几步:
1. 删掉第一行的"WEBVTT"(VTT转SRT时) 或者加上"WEBVTT"(SRT转VTT时) 2. 把所有的点号(.)替换成逗号(,)(VTT转SRT时) 或者把逗号(,)替换成点号(.)(SRT转VTT时) 3. 删掉所有NOTE开头的行和样式相关的内容(VTT转SRT时)五、到底什么时候该用VTT?
根据实际需求,我建议这样选择:
✅ 优先用VTT的场景
- 网页里的视频:用VTT最标准,浏览器原生支持。
- 需要多语言/多轨道:VTT一个文件里就能区分不同轨道。
- 需要样式控制:VTT配合CSS最灵活。
- 做Web开发:VTT有完整的API支持。
✅ 优先用SRT的场景
- 本地播放器看电影:桌面播放器对SRT兼容最好。
- 压制进视频:ffmpeg或剪辑软件首选SRT。
- 手工编辑:SRT结构简单,用记事本就能改。
- 给别人分享:给SRT最保险。
总结一句话:网页上用VTT,本地用SRT。如果你不确定对方的使用场景,给SRT是最安全的选择。
六、总结
VTT是字幕格式里的“官方标准”,功能比SRT强,但普及度不如SRT。这不是技术问题,是生态问题——大家已经习惯了SRT,播放器厂商也懒得改。
对于普通用户来说,你不需要纠结用哪个。如果只是看电影加字幕,继续用SRT就行,省事。如果你是做网站开发,或者需要字幕有样式和多轨道,学一下VTT,浏览器里效果很好。
参考资料
- W3C WebVTT规范:https://www.w3.org/TR/webvtt1/
- MDN Web Docs:WebVTT API - 使用WebVTT音轨
- Can I Use:WebVTT浏览器兼容性数据