字幕格式讲明白:SRT vs VTT vs ASS——什么时候用哪个

作者: OnlinePlayer Team
字幕srtvttass无障碍

字幕格式讲明白:SRT vs VTT vs ASS——什么时候用哪个

字幕本该很简单。有文字,在特定时间出现,你读它。完事。

可它从来没那么简单,对吧?你下了个字幕文件,结果不同步。或者播放器读不了。或者格式显示成一堆乱码。或者字幕出现了,但位置不对。或者——你懂的。

这些问题多数归结为一件事:在你的场景里用错了字幕格式。我们来解决它。

你真正会遇到的三种格式

外面有几十种字幕格式。大多已过时、专有,或冷门到你这辈子见不到。实际上,三种格式占主导:

SRT(SubRip)—— 通用标准。简单、广泛支持、几乎到处能用。

VTT(WebVTT)—— 网页原生版本。为 HTML5 视频设计。

ASS(Advanced SubStation Alpha)—— 功能丰富的那个。支持样式、定位和特效。

逐个来看。


SRT:可靠的主力

SRT 自 1998 年就有了。它活下来是因为把一件事做好了:把文字对到时间戳上。不花哨,就是好用。

SRT 文件长什么样

1
00:00:05,000 --> 00:00:08,500
你好,欢迎观看本视频。

2
00:00:10,200 --> 00:00:14,800
今天我们要聊一些
有意思的东西。

3
00:00:16,000 --> 00:00:19,000
开始吧。

就这样。顺序编号、毫秒精度的时间戳、以及文字本身。人类可读,用任何文本编辑器都能改。

为什么 SRT 好用

通用兼容。 每个播放器——VLC、MX Player、Windows Media Player、IINA、Plex,随便哪个——都支持 SRT。每个操作系统都能处理。每个流媒体平台都接受 SRT 上传。

简单。 没有复杂语法可搞砸。如果字幕不工作,你能用记事本打开文件,一眼看出哪里错了。

易于创建和编辑。 不需要专门软件。任何文本编辑器都行。当你凌晨两点修同步问题时,这点很重要。

SRT 的局限

没有样式。 文字就是文字。你没法指定字体、颜色、字号或位置。由播放器决定字幕长什么样。

没有元数据。 没法在文件内指定语言、作者等信息。

只有基础定位。 字幕居中显示在底部。就这样。如果对白和画面上的文字重叠,那你没辙。

什么时候用 SRT

用 SRT,当:

  • 你需要最大兼容性
  • 你要上传到 YouTube、Vimeo 等平台
  • 你在分发内容、且无法控制播放器
  • 简单比美观更重要

别用 SRT,当:

  • 你需要特定样式或定位
  • 你在做卡拉 OK 那种逐字计时
  • 你有多个说话人需要颜色区分

VTT:网页标准

WebVTT(Web Video Text Tracks)由 W3C 专为 HTML5 视频创建。它本质上是加了网页友好特性的 SRT。

VTT 文件长什么样

WEBVTT

00:00:05.000 --> 00:00:08.500
你好,欢迎观看本视频。

00:00:10.200 --> 00:00:14.800
今天我们要聊一些
有意思的东西。

00:00:16.000 --> 00:00:19.000
开始吧。

注意区别:顶部的 WEBVTT 头、时间戳用句点而非逗号、以及可选的提示编号。

VTT 为什么存在

VTT 是为解决网页特有问题设计的:

HTML5 原生支持。 HTML5 视频的 <track> 元素期望 VTT 格式。浏览器无需任何 JavaScript 解析就能理解它。

基础样式。 VTT 支持一些内联格式:<b>粗体</b><i>斜体</i><u>下划线</u>。更重要的是,你可以为提示定义 CSS 样式。

定位。 你可以控制字幕出现的位置:

00:00:05.000 --> 00:00:08.500 line:0 position:90%
[说话人在右上角]

元数据支持。 VTT 可以包含备注、注释和章节标记——不只是字幕。

VTT 的局限

不如 SRT 通用。 一些老播放器不支持 VTT。桌面应用更偏好 SRT。

样式有限。 虽然 VTT 比 SRT 支持更多样式,但远不及 ASS 强大。复杂特效做不了。

浏览器差异。 不同浏览器渲染 VTT 样式略有不同。样式要紧的话,跨浏览器测一下。

什么时候用 VTT

用 VTT,当:

  • 你在网页里嵌入视频
  • 你需要多种轨道类型(字幕、隐藏式字幕、描述)
  • 你想要 CSS 能控制的基础样式
  • 无障碍特性要紧(屏幕阅读器能理解 VTT)

别用 VTT,当:

  • 你的受众主要用桌面播放器
  • 你需要所有播放器上保证一致的样式
  • 需要复杂视觉特效

ASS:高阶用户之选

ASS(Advanced SubStation Alpha)是动漫字幕组钟爱的格式。对多数用途它是杀鸡用牛刀——但当你需要它的能力时,没有别的能比。

ASS 文件长什么样

[Script Info]
Title: Example Subtitle
ScriptType: v4.00+
Collisions: Normal
PlayDepth: 0

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, ...
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,...

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:05.00,0:00:08.50,Default,,0,0,0,,你好,欢迎观看本视频。

是的,它很复杂。这就是灵活性的代价。

ASS 为什么存在

ASS 是为"呈现和内容同样重要"的场景设计的:

完整样式控制。 字体、颜色、字号、描边、阴影、透明度——你控制一切。

精确定位。 把文字放到屏幕任何位置。播放中移动它。叠多个图层。

动画和特效。 淡入淡出、横移、旋转、缩放、颜色渐变。有些 ASS 字幕本质上就是动态图形。

单文件多样式。 不同角色可以有不同颜色的字幕。标牌可以用和对白不同的字体。

ASS 的局限

播放器支持有限。 很多播放器渲染 ASS 时会降级或忽略样式。有些完全不支持。

复杂。 这个格式很难手工编辑。你需要 Aegisub 这类专门软件。

文件体积。 ASS 文件比同等的 SRT/VTT 大,带样式的内容有时大很多。

浏览器支持差。 网页播放器通常无法正确渲染 ASS。样式会被剥掉或弄乱。

什么时候用 ASS

用 ASS,当:

  • 样式对观看体验至关重要(比如外语文字叠加)
  • 你专门为桌面播放分发文件
  • 你需要按角色做视觉区分
  • 内容会在 VLC、mpv 等支持 ASS 的播放器里播放

别用 ASS,当:

  • 你需要网页兼容
  • 通用播放是优先项
  • 简单文字显示就够了

常见问题与解决

"字幕不显示"

检查文件名。 多数播放器在字幕文件名和视频文件名完全一致(除扩展名外)时会自动识别。movie.mp4 应配 movie.srt

检查编码。 SRT 文件通常应为 UTF-8。一些播放器对其他编码吃力,尤其非拉丁字符(中文很常踩这个坑)。

检查格式。 如果你在浏览器里播、而播放器只支持 VTT,那 SRT 文件就不工作。转换它。

"字幕不同步"

这几乎总是字幕文件本身的时间问题。字幕是为另一个版本的视频做的——帧率不同、起点不同,或剪辑有出入。

快速修法:

  • 多数播放器允许你实时调整字幕时间(VLC:J/H 键)
  • 用 Subtitle Edit 这类工具永久调整时间戳
  • 找和你具体视频版本匹配的字幕

预防: 下字幕时,匹配你确切的视频来源/版本。

"文字变成乱码"

字符编码问题。文件大概是老编码(如 Windows-1252、GBK 或 ISO-8859-1),而播放器期望 UTF-8。

修法: 用文本编辑器打开文件,另存为 UTF-8。或用 VLC 的字幕编码选项。

"样式不生效"

如果用 SRT: SRT 不支持样式。所见即所得。

如果用 VTT: 检查你的播放器/浏览器是否真的渲染 VTT 样式。很多没完整实现规范。

如果用 ASS: 确保你的播放器支持 ASS 样式。VLC 支持。很多别的不支持或只部分支持。


格式之间转换

格式转换通常很直接:

SRT ↔ VTT: 这两种格式几乎相同。主要区别是头部和时间戳写法。很多在线工具能即时转换。

SRT/VTT → ASS: 转换容易,而且你什么都没丢,因为原文本来就没样式。

ASS → SRT/VTT: 文字会转过去,但你会丢掉所有样式、定位和特效。只有在你确实需要更简单的格式时才这么做。

工具:

  • Subtitle Edit(桌面、免费、什么都能干)
  • 在线转换器适合基础的 SRT ↔ VTT
  • FFmpeg 能提取和转换内嵌字幕

实用结论

对多数人: 用 SRT。到处能用、易于编辑,样式通常没那么重要。

对网页开发者: 用 VTT。它是 <track> 元素期望的,并启用无障碍特性。

对带样式的外语内容: 用 ASS,但要清楚你的受众需要兼容的播放器。

最好的字幕格式,是在你的目标平台上能正确显示的那个。除非有具体理由,否则从 SRT 开始——你大概率不需要更花哨的东西。

在 OnlinePlayer 里:拖入视频时一并拖入同名字幕文件即可。它在浏览器本地配字幕、不上传;想直接在浏览器里播 MKV 这类带内嵌字幕的容器,见在浏览器里播放 MKV