UltKit

SRT转VTT

浏览器通过 <track> 元素播放字幕时只支持WebVTT,所以在VLC里能正常显示的SRT文件,放到网页上却什么也不显示。在这里把它转换为VTT,同样的字幕就能在任何HTML5播放器中显示。

字幕格式转换器

或将SRT, VTT, ASS … 文件拖放到此处 ·

单个文件最大 95 MB· 最多 20 个文件· 30 分钟后删除

输出

文件在我们的服务器上处理,并在 30 分钟后删除。

使用方法

  1. 1

    拖入.srt文件

    添加一个字幕文件,或每种语言各添加一个,最多 20 个文件,每个不超过 95 MB。旧版编码会被自动识别并重写为 UTF-8,这是 WebVTT 所要求的。

  2. 2

    按需调整时间轴

    直接转换的话,保持默认设置即可。如果字幕相对视频偏早或偏晚,请在高级设置中的平移时间轴里填入秒数。

  3. 3

    转换为WebVTT

    点击转换为 WebVTT (VTT),然后下载 .vtt 文件。把它们和视频上传到同一位置即可;我们这边的副本会在 30 分钟后删除。

上传 SRT 并点击转换为 WebVTT (VTT)。你会得到一个带有必需的 WEBVTT 文件头、毫秒以句点分隔、文字为 UTF-8 的文件,可直接用于 <track> 元素、Video.js、Plyr 或课程平台。

为什么网页播放器需要VTT而不是SRT

SRT 诞生于 2000 年前后的 DVD 抓取圈,后来成为桌面播放器、剪辑软件和字幕下载的默认格式。WebVTT 于 2010 年为网页设计,以 SRT 的语法为起点,HTML 标准将它定为 <track> 元素使用的格式。Chrome、Firefox、Safari 和 Edge 都原生支持它,而且都不能通过 track 读取 SRT。

两者在文本编辑器里看起来几乎一样,所以很多人会在这里栽跟头。VTT 文件必须以 WEBVTT 开头,必须是 UTF-8,时间写作 00:01:05.300,而 SRT 写作 00:01:05,300。此外,VTT 还能携带位置、样式和注释,这些是 SRT 没有的。因此从 SRT 转 VTT 不会丢失任何内容;反过来通过 VTT转SRT 转换则会丢掉这些额外信息。

拿到 .vtt 后,按下面的示例在页面中引用即可。如果视频是浏览器无法播放的格式,比如 iPhone 拍的 .mov,可以看看MOV转MP4的指南,它解决的是另一半问题。

带有已转换英文字幕的视频 HTML 代码
<video controls src="lecture.mp4">
  <track kind="subtitles" src="lecture.en.vtt"
         srclang="en" label="英文" default>
</video>

SRT与VTT对比:所有关键区别

同一条字幕在两种格式中的写法
项目SRTWebVTT
文件第一行字幕序号 `1``WEBVTT`
时间戳`00:01:05,300``00:01:05.300`(小时可省略)
字幕序号必需可选标识符
文本编码不限,常为旧版代码页仅限 UTF-8
位置与对齐无标准`line`、`align` 等字幕设置
样式`<i>`、`<b>`、`<u>`、`<font>``<i>`、`<b>`、`<u>`,以及用 CSS 设置样式的类
服务器上的 MIME 类型`application/x-subrip``text/vtt`

SRT

SubRip 字幕

SRT 是 SubRip 的字幕格式。SubRip 是一款免费的 Windows 程序,约在 2000 年用于从视频中提取字幕。每条字幕是一段纯文本,包含序号、开始和结束时间以及字幕文本。它是支持最广泛的字幕格式,VLC、YouTube、Facebook、视频编辑器和智能电视都能识别。SRT 只有基本格式,没有位置和样式方面的标准。

压缩方式
–
透明度
–
动画
–
发布年份
SubRip
SRT 转换器

VTT

WebVTT 字幕

VTT 即 Web Video Text Tracks 格式,由 WHATWG 和 W3C 于 2010 年前后为 HTML5 视频开发。它与 SRT 相似,但增加了 WEBVTT 文件头,并支持位置、样式、说话人标签和元数据。浏览器通过 <track> 元素使用它显示字幕,流媒体平台和 YouTube 也接受它。一些桌面播放器和编辑器则要求 SRT。

压缩方式
–
透明度
–
动画
–
发布年份
2010 · W3C / WHATWG
VTT 转换器

HTML5 视频只能通过 track 元素加载 WebVTT,所以为桌面播放器制作的 SRT 字幕必须先转成 VTT,才能显示在网页上。

VTT字幕在浏览器中不显示

  • 字幕在线上正常,但从本地磁盘打开 HTML 文件时不显示

    浏览器会阻止从 file:// 页面加载字幕轨道。请通过本地网络服务器或在真实网站上测试。

  • 字幕轨道来自其他域名,加载后内容为空

    给 <video> 元素添加 crossorigin,并在存放 .vtt 的服务器的 CORS 头中允许你的网站。

  • 服务器把文件作为 text/plain 发送

    将服务器配置为以 text/vtt 提供 .vtt;有些播放器不接受其他类型。

  • 每条字幕都早出现一秒

    用正数的平移时间轴(比如 1)重新转换,并替换原文件。

SRT转VTT常见问题

转换器会修改文件中的哪些内容?

它会在文件顶部加上 WEBVTT 行,把毫秒前的逗号换成句点,并将文件保存为 UTF-8。WebVTT 允许把字幕序号作为可选标识符保留,字幕文字本身不会改动。

直接把.srt改名为.vtt可以吗?

不能。没有 WEBVTT 文件头、时间戳又用逗号的话,浏览器会拒绝加载字幕轨道或跳过所有字幕。文件需要重写,在这里只要一秒钟。

斜体和粗体会保留吗?

可以,<i>、<b> 和 <u> 在两种格式中都有。SRT 的 <font color> 标签在 WebVTT 中没有直接对应的写法,因为 WebVTT 通过 CSS 类给字幕着色,所以如果文件大量使用该标签,请开启删除格式标签。

我的课程平台需要哪种字幕文件?

大多数学习平台和网页播放器支持 WebVTT,许多也同时支持 SRT。如果上传表单只列出 .vtt,就在这里转换;如果只列出 .srt,请用 VTT转SRT 反向转换。

能把字幕放在画面顶部吗?

WebVTT 支持,可以用 line:0 这类字幕设置,转换后用文本编辑器添加即可。SRT 没有存储位置的标准方式,所以转换后的字幕从底部的默认位置开始显示。

如何给一个视频添加多种语言的字幕?

先转换每种语言的 SRT,再为每个文件添加一个 <track>,并分别设置 srclang 和 label。观众可以在播放器的字幕菜单中选择语言。