跳到内容

字幕格式到底该选哪一种?

1 min read 1 views 最后更新: 8 月 2, 2026
A defocused laptop screen showing rows of plain text lines, the keyboard edge in the foreground

核心结论

如果视频是在浏览器里播放的,你需要WebVTT。除此之外几乎所有场合,SubRip(.srt)都是最安全的选择,因为它是最简单、接受度最高的格式。SubViewer(.sbv)是YouTube Studio直接给你的格式,通常只是个中转站,而不是终点。ASS和SSA是为带样式、带位置信息的字幕设计的。把功能更丰富的格式转换成SRT,会保留时间轴和文字内容,但会永久丢掉其他一切。而SRT转WebVTT则完全不会有任何损失。

大多数人遇到这个问题,都是因为遇到了麻烦。你手里有一个字幕文件,想拿去用,结果对方不认。现在你需要弄清楚对方到底要什么格式,而你并不想为了这件小事去专门学一套文件格式知识。

所以下面这篇文章是按“用途”来组织的,而不是按“格式”。找到你要把文件用在哪里,直接看对应的格式就行;如果你还想知道转换格式会失去什么,再往下读。这一点其实很重要,因为格式转换并不是双向对等的:有些方向转换完全没有损失,有些方向则会悄悄删掉一些你再也拿不回来的东西。

先看文件要用在哪里

格式不是你想用哪个就用哪个,而是由读取这个文件的那一方决定的,而对方通常只认一种格式。所以要反过来想:先看目的地,再定格式。

  • 网页上播放的视频。用WebVTT。这是网页原生支持的格式,浏览器播放器一般不认别的格式。
  • 电脑或电视上的播放器,或是和视频文件放在一起的字幕文件。用SubRip。它是最简单的格式,也是最不容易被挑刺的格式。
  • 某个平台的上传表单。没有特别说明的话就用SubRip。不同平台的要求不一样,只有上传页面或它的帮助文档才能告诉你这个平台到底认哪种格式。
  • 想保留带样式、带位置的效果。用ASS或SSA。再简单的格式都装不下这些信息。
  • 手里的文件是YouTube Studio导出的。那这个文件本身就是SubViewer格式,先转成SubRip,通常是让它被其他地方接受的最快办法。

如果你要用的地方不在上面这个列表里,而对方也没给出说明,默认用SubRip就好。这样做确实有代价,但代价不大:SRT没办法表达样式或位置信息,所以字幕会显示在播放器默认的位置,用播放器自带的字体。对于普通的对话字幕来说,这本来就是你想要的效果。

SubRip和WebVTT,真正会用到的两种格式

SubRip已经是文本文件能做到的最简单的程度了。每一条字幕先是单独一行的编号,然后是一行时间信息(开始时间和结束时间),接着是一到两行文字,最后是一个空行,再开始下一条。毫秒和秒之间用逗号隔开。字幕条目之间的那个空行是有实际作用的,这也是为什么手动编辑SRT文件时,有时候明明看不出哪里错了,却还是播不出来。

它的好处就是对读取它的软件几乎没有要求:不用解析样式,不用处理位置信息,也没有文件头需要读。如果你想逐条了解SRT的结构,可以看看这篇关于SRT格式的详细说明

WebVTT是网页专用的格式,看起来很像SubRip的近亲。文件的第一行必须单独写着WEBVTT,这一行不是摆设,播放器就是靠这一行来识别文件类型的。毫秒和秒之间用的是句点而不是逗号。字幕编号是可选的,所以一个合法的VTT文件可以有编号,也可以没有,两种写法都对。除此之外,WebVTT还能承载位置信息和样式,这也是为什么网页上的字幕有时候不是出现在屏幕正下方。

这两种格式之间的差异,一句话就能说清楚,但一旦弄错,播放就会出问题。如果你想在选之前看清楚全貌,可以参考这篇WebVTT和SubRip的详细对比

SubViewer和ASS,各有各的用途

SubViewer,文件后缀是.sbv,是YouTube Studio导出字幕时用的格式。你并没有主动选它,只是点了下载,拿到的就是这个。它完全没有字幕编号,时间行里的两个时间点用逗号隔开而不是箭头,小时数也不会补零。这个格式本身没问题,只是除了它的“娘家”之外,几乎没有别的地方愿意读它。

这就决定了SBV更像是个中转站,而不是终点。如果你是从YouTube Studio里把字幕导出来准备用在别处,转成SubRip既快又安全,这里有个专门做SBV转SRT的工具,只做这一件事。

什么时候真的需要ASS或SSA

SubStation Alpha,文件后缀是.ssa或.ass,是给“需要好看”的字幕用的格式。它能承载样式、位置信息和卡拉OK式的逐字效果,这些都放在一个结构化的Events区块里。有一个细节值得知道,即使你从不打开这个文件也一样:Events区块会在文件内部自己声明列的顺序,所以任何读取它的程序都得先读这行声明,不能凭空假设时间信息和文字分别放在哪一列。

当字幕的“样子”本身就是内容的一部分时,你才需要ASS或SSA:比如把画面里的标牌翻译并叠加在原位、两个说话人用不同颜色区分、文字要精确落在画面的某个位置上。如果你的字幕只是屏幕下方的普通对话,就不需要用它,用了反而会让文件在别的地方更难被接受。

决定转换有没有代价的那条规则

不同格式能表达的信息不一样。只有当目标格式能装下源格式里的全部信息时,转换才是零成本的。装不下的时候,多出来的那部分信息不会打折保留,而是直接消失。

从功能更丰富的格式转换成SubRip,注定是有损转换。样式、位置和特效在一个根本没办法描述它们的格式里无处安放,转换工具只能把它们丢掉。留下来的是时间轴和文字内容,对大多数用途来说,这本身就是文件的核心。但这种损失在转换后的文件里是永久的,以后再转回去,也换不回原来的样式,只会得到一个没有样式、换了个后缀名的文件。

反过来,SubRip转WebVTT是零损失的。转换过程只是加上WEBVTT这一行文件头,再把毫秒的分隔符从逗号改成句点。字幕编号会被去掉,因为WebVTT把编号当成可选项,它本身也不携带任何有用信息——字幕的先后顺序本来就已经说明了编号想说明的事。没有任何实质内容会丢失,这也是为什么这个方向的转换你完全不用多想。

由此得出一个习惯:务必保留原始文件。转换的时候转一份副本。如果带样式的ASS文件是你唯一保留位置信息的地方,那么用SRT把它覆盖掉,就是一个只能做一次的决定。

说到具体转换,本站的免费字幕转换工具完全在你的浏览器里运行,不会上传任何文件,也不需要注册账号。不过这类浏览器工具只能转换文本文件,不能把音频转成文字;如果你手里只有一段没有字幕文件的视频,SozAI这款支持iOS、Android和macOS的转录应用,可以把文件、录音和YouTube链接直接转成带说话人标注、摘要和翻译的文字内容,支持99+种语言。

怎么判断一个字幕文件到底是什么格式

后缀名不能证明文件内容。一个从.vtt改名成.srt的文件,本质上依然是WebVTT,你只是换了个标签而已。这一点很关键,因为播放器拒绝识别文件时,大多数人第一反应就是改后缀名,而这恰恰是唯一保证没用的办法。播放器根本不看文件名,它看的是文件开头几行,一旦发现文件头或分隔符和预期的不一样,就直接放弃了。

用任何一个纯文本编辑器打开文件,看开头几行就知道了:

  • 第一行是WEBVTT:不管后缀名写的是什么,它就是WebVTT。
  • 单独一行的编号,后面跟一行时间信息、毫秒前是逗号:SubRip。
  • 没有编号,两个时间点用逗号隔开,小时数没有补零:SubViewer。
  • 有一个Events区块,里面有一行专门声明列顺序:某种形式的SubStation Alpha。

花三十秒看一眼,能省下大量猜测的时间,还能顺便发现下载到的文件其实和按钮上写的不是一回事。

转换格式解决不了的问题

转换改变的是“容器”,不是“内容”。如果时间轴和视频本身就有偏差,转换之后偏差还是一样在,因为转换工具只是照搬给它的数字,根本不知道视频画面长什么样。拼错的名字、漏掉的台词、时长设置得太长的字幕条,全都会原样保留下来。

转换也不能说服播放器接受它本来就不支持的格式。如果一个网页播放器只认WebVTT,你把SBV转成SRT,得到的确实是一个接受度更广的格式,但对这个具体的目的地来说,它依然是错的。转换的方向应该看目的地要什么,而不是看哪个格式更常见。

另外,反向转换永远无法找回有损转换丢掉的东西。样式和位置信息一旦从文件里消失,唯一还留着它们的地方就是原始文件——前提是你留了一份。如果你在处理带样式的字幕,把ASS或SSA文件当成“母版”,从它导出的所有文件都当成用完就可以丢的东西。这样,一次转换失误付出的代价只是一分钟,而不是一整个下午。

答案

Frequently Asked Questions

SRT和VTT有什么区别?

两者其实是近亲,主要有三点不同。WebVTT文件第一行必须是WEBVTT,毫秒用句点分隔,字幕编号是可选的。SubRip则给每条字幕编号,毫秒前用逗号。另外WebVTT还能承载位置信息和样式,这些SubRip完全没法表达。WebVTT是网页专用格式,SubRip则是其他场合接受度最高的格式。

哪种字幕格式最通用?

SubRip,也就是.srt格式。它是常见格式里最简单的一种,这也正是为什么这么多播放器和上传页面都认它:不需要解析样式,也不需要读取文件头,只有编号、时间和文字。代价是它没法承载样式、位置或特效,所以转换成SRT时,字幕里任何视觉效果都会消失。

转换字幕文件会丢失内容吗?

要看转换的方向。从功能更丰富的格式转成SubRip,注定是有损的,因为样式、位置和特效在一个描述不了它们的格式里根本无处安放,只有时间轴和文字能保留下来,其他都会消失。而SubRip转WebVTT是零损失的,因为这个转换只是加了一行文件头,再改了毫秒的分隔符。不管往哪个方向转,都建议留一份原始文件。

YouTube Studio导出的字幕是什么格式?

是SubViewer格式,后缀是.sbv。可以从时间行看出来:两个时间点用逗号隔开,没有任何字幕编号,小时数也不补零。除了它的“娘家”之外,基本没有别的地方能直接读它,所以如果打算把这些字幕用在别处,先转成SubRip通常是最快能让文件被接受的办法。

我能直接把.vtt文件改名成.srt吗?

不能。改名只是换了个标签,内容并没有变,文件本质上还是WebVTT,期待SubRip的播放器照样会拒绝它。播放器读的是文件开头几行,一旦发现WEBVTT文件头,以及本该是逗号的地方却是句点,就会直接停下来。你需要的是真正的格式转换,它会重写时间行,而不只是改文件名。

怎么才能知道一个字幕文件到底是什么格式?

用任意一个纯文本编辑器打开它,看开头几行就够了。第一行是WEBVTT,说明是WebVTT。单独一行的编号后面跟着一行时间信息、毫秒前是逗号,说明是SubRip。两个时间点用逗号隔开且没有编号,说明是SubViewer。有一个Events区块专门声明列的顺序,说明是某种形式的SubStation Alpha。

Merey Tleugazin

SozAI 创始人。正在为全球专业人士打造将语音转为文本的工具。

SozAI
SozAI — 免费下载即时转录音频和视频
获取 App