WEBVTT每个 WebVTT 文件必须以 WEBVTT 作为文件的第一行,且必须单独占一行。这是文件格式的标识符,用于告知解析器这是一个 WebVTT 格式的字幕文件。
WebVTT 文件必须使用 UTF-8 编码。
00:00:01.000 --> 00:00:03.000
Hello, world!或带标识符:
subtitle-001
00:00:01.000 --> 00:00:03.000
Hello, world!每个字幕条目由以下部分组成:
--> 或换行符开始时间 --> 结束时间cue 与 cue 之间用空行隔开
时间格式为:
HH:MM:SS.mmm(小时:分钟:秒.毫秒)MM:SS.mmm(分钟:秒.毫秒)其中分钟和秒部分为必需。
WEBVTT
NOTE
这是一段注释。
注释可以是一行,也可以是多行。
NOTE
并且可以有多个注释。
注释还可以和cue交替出现NOTE:注释,用于添加作者说明,不会显示到屏幕上。
注释的内容可以是一行,也可以是多行。 一个字幕文件可以有多处注释。
Example:
WEBVTT
00:00:32.500 --> 00:00:34.500
To grow up on these shores. To witness this water, every day
图 1:字幕未增加任何修饰
WEBVTT
00:00:32.500 --> 00:00:34.500 size:30%
To grow up on these shores. To witness this water, every day
图 2:size:30% (默认position:50%, align:center)
WEBVTT
00:00:32.500 --> 00:00:34.500 size:30% position:20%
To grow up on these shores. To witness this water, every day
图 3:size:30% position:20% (默认align:center)
WEBVTT
00:00:32.500 --> 00:00:34.500 size:30% position:20% align:left
To grow up on these shores. To witness this water, every day
图 4:size:30% position:20% align:left
WEBVTT
00:00:32.500 --> 00:00:34.500 size:30% position:20% align:right
To grow up on these shores. To witness this water, every day
图 5:size:30% position:20% align:right
在时间轴后面可以添加可选的设置参数,用空格分隔:
size意味着这个盒子占据屏幕宽度的百分比align相关。align属性的值表示字幕盒子的哪个边和position对齐。start、center(默认)、end、left、rightstart、end选项尊重语言的左右顺序,如果是右到左的语言,比如阿拉伯语,希伯来语,start意味着右侧,end意味着左侧WEBVTT
STYLE
::cue {
color: white;
background-color: rgba(0, 0, 0, 0.8);
}
::cue(v[voice="John"]) {
color: #FFD700;
font-weight: bold;
}
::cue(.cn) {
color: #00FF88;
}STYLE 区域用于定义字幕的 CSS 样式,必须位于 头部区域之后、首个字幕条目之前。
常用的 CSS 选择器:
::cue:选择所有字幕文本::cue(.class):选择特定类的文本::cue(v[voice]):选择特定声音标签::cue([lang="en-US"]):选择指定的语言::cue-region:选择所有region字幕文本::cue-region(#id):选择指定id的region字幕文本支持的 CSS 属性包括颜色、字体、背景、文本对齐等,但功能有限制。
00:00:10.000 --> 00:00:12.000
<b>粗体文本</b>
00:00:10.000 --> 00:00:12.000
<i>斜体文本</i>
00:00:10.000 --> 00:00:12.000
<u>下划线文本</u>Example:
WEBVTT
00:00:32.500 --> 00:00:34.500
To <b>grow up</b> on these <u>shores</u>. To witness this water, <i>every day</i>
文本格式标签
WebVTT 支持以下文本格式标签:
<b>:粗体<i>:斜体<u>:下划线<v>:声音标签,用于标识说话者<c>:自定义类名标签,可同时包含多个类名(如 <c.red.bg_yellow>)<v>和<c>下面章节单独讨论
Example:
WEBVTT
STYLE
::cue(v[voice="Alice"]) {
color: cyan;
}
::cue(v[voice="Bob"]) {
color: yellow
}
00:00:32.500 --> 00:00:34.500
<v Alice>To grow up on these shores.</v>
<v Bob>To witness this water, every day</v>
声音标签
<v> 标签用于标识说话者: 示例中说话者名为 Alice 和 Bob。 这样指定的说话人,并不会在字幕中显示出来,而是通过样式、位置等其他方式来区分。 通过 CSS 可以使用 ::cue(v[voice="Alice"]) 为特定说话者设置样式。
注意:
STYLE样式中不能出现空行。
00:00:20.000 --> 00:00:22.000
<c.highlight>重要信息</c>
00:00:22.500 --> 00:00:24.000
<c.cn>中文翻译</c>
00:00:24.500 --> 00:00:26.000
普通文本 <c.sound>[音效]</c>Example:
WEBVTT
STYLE
::cue(c) {
color:#4E71FF;
background-color:#DDF4AA;
}
::cue(c.highlight) {
font-size:30px;
font-weight:800;
color:yellow;
background-color:green;
}
00:00:32.500 --> 00:00:34.500
<c>To grow up on these shores.</c>
<c.highlight>To witness this water, every day</c>
文本格式标签
<c> 标签允许为文本片段添加自定义类名,用于 CSS 样式控制。
语法:<c.类名>文本</c>
常见的应用场景:
协议中还规定了类似 <c.red.bg_yellow> 的样式,播放器需支持一组颜色样式,包括字幕颜色(https://w3c.github.io/webvtt/#default-text-color)、背景颜色(https://w3c.github.io/webvtt/#default-text-background),当使用这些内置样式时,无需字幕创作者指定STYLE。
注意:内置的字幕颜色、背景颜色:VLC等播放器支持得很好,浏览器HTML
video标签几乎不支持。
WEBVTT
REGION
id:top
width:100%
lines:2
regionanchor:0%,0%
viewportanchor:0%,0%
scroll:up
REGION
id:bottom
width:100%
lines:3
regionanchor:0%,100%
viewportanchor:0%,100%Example:
WEBVTT
STYLE
::cue-region(#top) {
color: yellow;
}
REGION
id:top
viewportanchor:0%,20%
00:00:32.500 --> 00:00:34.500 region:top
To grow up on these shores. To witness this water, every day
区域锚点(VLC播放器中截图)
REGION 用于定义字幕显示区域,允许在屏幕的不同位置显示字幕。 通过在时间轴设置中使用 region:区域ID 来指定字幕显示在哪个区域。
主要属性:
region:id 引用0%,0%)0%,100%)up 表示向上滚动)注意:播放器应用支持部分属性,浏览器几乎不支持
regions中viewportanchor和regionanchor的含义。图片引用