效果展示
介绍
H5为<video>标签引入了子元素<track>指定显示时文本轨道(字幕或标题),其引用的字幕格式为WebVTT。
WebVTT格式基本结构
WebVTT 的 MIME 格式是 text/vtt,采用UTF-8编码。 其格式主要用途是将文本叠加到 <video>中。
结构:
- 一个可选的字节顺序标记(BOM)。
- 字符串“
WEBVTT”。- WEBVTT 右侧的可选文本标题。4
WEBVTT之后必须有一个空格。- 你可以通过此方式向文本添加描述。
- 你可以在文本标题中使用除换行符和“
-->”字符外的任何内容。- 空白行,相当于两个连续的换行符。
- 任意数量的 cue 或注释。
- 任意数量的空行。
只包含基本格式和标题的WebVTT
WEBVTT 标题
00:01.000 --> 00:04.000 line:90% position:40%
这是第一句
00:05.000 --> 00:09.000 line:80% position:50%
这是第二句
第二句之后
将字幕添加进<video>视频
基本使用
<video controls src="res\video1.mp4">
<track
default kind="captions"
srclang="zh"
src="res\video1_desc.vtt">
</video>
多语言字幕使用
<video controls src="res\video1.mp4">
<track default kind="captions" srclang="en" src="res\video1_desc.vtt">
<track kind="captions" srclang="zh" src="res\video1_desc.vtt">
<track kind="captions" srclang="jp" src="res\video1_desc.vtt">
</video>
default属性表示该字幕被默认启用,用户可通过语言选项切换字幕。
<track>标签的属性
default: 当<video>标签存在多个<track>字幕轨道时,设置默认启动的字幕;
kind: 定义了 text track 应该如何使用。如果省略了该属性,默认的 kind 值就是subtitles。下面是允许的关键字:
subtitles:
- 字幕给观影者看不懂的内容提供了翻译。比如英文电影里非英文的对话框或者文字。
- 字幕可能包含额外的内容,通常有附加的背景信息。比如在电影星球大战开头的文字,或者某个场景的日期,时间,还有地点。
captions:- 隐藏式字幕提供了音频的转录甚至是翻译。
- 可能包含重要的非言语的信息,比如音乐提示或者音效。可以指定提示音的源文件 (e.g. music, text, character).
- 适用于耳聋的用户或者当调成静音的时候。
descriptions:
- 视频内容的文本描述。
- 适用于失明用户或者当视频不可见的场景。
chapters:
- 章节标题用于用户浏览媒体资源的时候。
metadata- 脚本使用的 track。对用户不可见。
label: 当列出可用的 text tracks 时,给浏览器使用的 text track 的标题,这种标题是用户可读的。src: track 的地址。必须是合法的 URL。该属性必须定义。srclang: track 文本数据的语言。它必须是合法的 语言标签。如果kind属性被设为subtitles, 那么srclang必须定义
设置字幕样式
方式一: 在HTML中使用伪元素::cue定义CSS样式
<style>
video::cue{
/* 去掉字幕底部默认的黑色背景 */
background-color: transparent;
/* 设置字体颜色 */
color: red;
}
</style>
方式二: 在WebVTT文件中设置字幕样式
WEBVTT
STYLE
::cue{
background-color: transparent;
color: green;
}
00:01.000 --> 00:04.000 line:90% position:40%
这是第一句
00:05.000 --> 00:09.000
这是第二句
第二句之后
WebVTT可用的CSS属性
- color
- opacity
- visibility
- text-decoration
- text-shadow
- background
- outline
- font
- line-height
- white-space
设置字幕显示位置
- WebVTT 支持为每句字幕设定位置信息
- 遗憾的是,暂未发现CSS设置字幕位置的方法
- 位置信息写在 cue 时间线的右侧。
- 示例:
00:01.000 --> 00:04.000 line:90% position:40% vertical:rl
属性表:
vertical:文字方向,垂直或水平;rl:书写方向从右向左。lr:书写方向从左向右。
line: 默认情况下,代表属性topposition:默认情况下,代表属性left。
注意:如果 vertical属性设置了垂直,则line和position属性作用相反。
align:指定文本的对齐方式。如果设置了字幕,则在 cue 设置的 size 给出的空间中对齐。startcenterend
WebVTT文件的注释
单行注释
NOTE This is a comment
多行注释
NOTE
One comment that is spanning
more than one line.
NOTE You can also make a comment
across more than one line this way.