我最终得出结论,google-chrome不支持.srt,因为WEBVTT是HTML5标准。
现在我想知道这个决定背后的原因是什么。
看来 google-chrome 也可能支持 .srt 因为:
WEBVTT 中有什么更好的东西可以让 .srt 过时吗?
可能人们只是喜欢重新发明轮子。
我看到的唯一区别是 vtt 支持屏幕上的字幕定位。
免责声明:我是 https://github.com/mantas-done/subtitles 的作者 我已经实现了多种字幕格式,包括 .srt 和 .vtt。这 5 种格式中的每一种都非常相似:空格与无空格、逗号与句号。
WebVTT 是作为 SRT 的扩展构建的,以添加 SRT 中不可用的有用功能。从最基本的形式来看,WebVTT 看起来与 SRT 几乎相同。然而,WebVTT 添加了许多(可选)方式来格式化输出并提供 SRT 所没有的辅助信息。额外功能的缺点是玩家更难支持它。由于SRT的功能很少,所以大多数玩家都支持。另外,SRT 是由一个相对默默无闻的小组开发的,其中 WebVTT 是一个 W3C 标准。
WebVTT(网络视频文本轨道)最初称为WebSRT。它是 SRT (SubRip) 的扩展。当不使用 WebVTT 提供的任何附加功能时,WebVTT 看起来与 SRT 几乎相同。例如,SRT 中的一个简单案例可能如下所示:
1
00:00:00.000 --> 00:00:02.000
The first cue text.
2
00:00:02.000 --> 00:00:04.000
The second cue text.
等效的 WebVTT 可能如下所示:
WEBVTT
00:00.000 --> 00:02.000
The first cue text.
00:02.000 --> 00:04.000
The second cue text.
WebVTT 的诞生是为了添加许多 SRT 中不存在的功能。例如,在 WebVTT 中,您可以添加显示提示说话者是谁的数据:
00:02.000 --> 00:04.000
<v Mary>Hi, I'm Mary!
SRT 不正式包含任何字体样式。许多玩家在 SRT 中非正式地支持简单字体样式,但由于它不是格式的正式一部分,因此无法保证。 WebVTT 确实包含字体样式作为格式的一部分。对于简单的字体样式,非官方的 SRT 和 WebVTT 看起来又很相似:
<b>This text is bold.</b>
但是,WebVTT 包含许多类型的字体样式以及许多包含 SRT 不包含的字体样式的方法。例如,WebVTT 具有与 HTML 的 CSS 类似的样式表。对于上面标记的扬声器示例,您可以在文件中包含特定扬声器的所有实例的字体样式:
::cue(v[voice="Mary"]) { color: lime }
当多个讲话者互相交谈时,这非常有用,以便可以在字幕中区分他们的讲话。
就像 WebVTT 支持而 SRT 不支持的其他一些东西的快速示例一样,
在视口内定位和调整提示的大小:
00:00:00.000 --> 00:00:04.000 position:10%,line-left align:left size:35%
I'm over here.
高于正常字符的小字符的拼音文本(通常在东亚语言中用于提供语音指南):
00:02.000 --> 00:04.000
<ruby>東京<rt>とうきょう</rt></ruby>
按时间细分的提示:
00:00:00.000 --> 00:00:06.000
This <00:00:01.000>text <00:00:02.000>appears <00:00:03.000>over <00:00:04.000>5 <00:00:05.000>seconds.
SRT的优点就是简单,支持的玩家较多。幸运的是,将 SRT 转换为 WebVTT 相当容易,反之亦然。由于 WebVTT 基本上是 SRT 的超集,因此您只需更改一些小语法即可从 SRT 转换为 WebVTT。要从 WebVTT 转到 SRT,您需要删除所有额外的功能标签,然后执行轻微的语法更改。当然,在这个方向上,您将失去 WebVTT 提供的所有额外功能。
如上所述,SRT 是由一个相对默默无闻的团体开发的,WebVTT 是一个 W3C 标准。正如最初的问题所指出的,它或多或少是 HTML5 的“官方”标题/副标题格式。