原文

https://docs.videojs.com/tutorial-tracks.html

VideoJS当前有三种类型的轨道(tracks):

音频轨道(Audio Tracks)

视频轨道(Video Tracks)

文本轨道(Text Tracks)

下面我们依次来进行介绍这三种轨道

文本轨道

文本轨道用于显示字幕和标题,并添加用于在视频中的章节之间进行导航的菜单。

文本轨道是HTML5的一项功能,用于向终端用户(end-user)展示定时(time-triggered)文本。video.js提供了文本轨道的跨浏览器实现。

关于远程文本轨道的注意事项

video.js所谓的“remote”文本轨道,是一个方便的术语,用于跟踪有关联的元素,而不是那些不是的元素。

可以通过编程方式创建,但是由于远程文本轨道可以从播放器中删除,出于这个原因,我们建议只使用远程文本轨道。

创建文本文件(Text File)

定时文本要求是一个使用WebTT格式的文本文件,这种格式定义了一个“提示”列表,其中包含开始时间(start time)、结束时间(end time)和要显示的文本(text)。Microsoft提供一个可以帮助你开始使用这个文件的构建器。

注意:创建字幕时,还有其他的字幕格式化技术可以使字幕更加有意义,例如围绕音效的括号(e.g.[birds chirping]).

有关字幕的更深入的样式指南,请参阅Captioning Key,但是请记住并不是所有的功能都受WebTT或video.js WebVTT实现的支持。

将文本轨道(Text Tracks)添加到video.js

一旦你创建了你的WebTT文件,你可以使用track标签把他们添加到video元素中,与source元素相似,track元素同样被添加为video的子元素。

video.js会动的从video元素中读取track元素,轨道(远程和非远程)也可以通过编程添加。

track属性

属性一kind

video.js支持以下轨道类型:

"subtitles"(默认) ,当音频可用但有无法理解视频中的对话的时候,subtitles将展示在视频上。

"captions",为聋/弱听者或视频静音时音译对话,音效,音乐暗示和其他音频信息。captions也展示在视频上。

"chapters",用于在视频中创建导航的章节标题。通常,这些是以查看者可以用来浏览视频的章节列表的形式存在。

"descriptions",当视频部分不可用时或者由于观看者失明或未使用屏幕时,内容中的操作的文本描述。描述由屏幕阅读器读取或转换为单独的音轨。

"metadata",具有用于JavaScript解析和执行某些操作的数据的跟踪。这些不会显示给用户。

属性二label

用于在用户界面中使用的跟踪的简短描述文本。例如,在菜单中选择标题语言。

属性三default

布尔类型的default属性可以用来指定一个轨道的模式是否以(“showing”)作为开始。否则,用户需要从字幕或字幕菜单中选择他们的语言。

注意:对于 chapters,如果您想显示章节菜单,default是必需的。

属性四srclang

文本跟踪语言的有效BCP 47代码,例如"en"是英文或"es"是西班牙文。

有关支持的语言翻译,请参阅位于Video.js根目录中的语言文件夹(/ lang)文件夹,并参阅language以获取有关Video.js中语言的更多信息。

另一个域的文本轨道

由于Video.js通过JavaScript加载文本轨道文件,因此适用同源策略。如果您希望从一个域中提供播放器,但从另一个域提供文本路径,则需要在服务于文本轨道的服务器上enable CORS。

除了要允许跨域,您还需要将该crossorigin属性添加到video元素本身。该属性有两个可能的值"anonymous"和"use-credentials"。大多数用户会希望对跨域轨道(tracks)使用"anonymous"。

有一点需要注意的是视频文件本身也需要CORS头。这是因为一些浏览器将该crossorigin属性应用于视频源本身,而不仅仅是轨道。这被认为是该规范的安全问题。

使用文本轨道

用编程方式显示追踪

某些使用案例要求以编程方式打开和关闭字幕,而不是强制用户自己这样做。这可以通过修改文本轨道的mode属性来轻松实现。

该mode可以是三个值"disabled","hidden"和"showing"中的一个。当文本轨道mode是"disabled",当视频正在播放时追踪不显示在屏幕上。

// Get all text tracks for the current player.

var tracks = player.textTracks();

for (var i = 0; i < tracks.length; i++) {

var track = tracks[i];

// Find the English captions track and mark it as "showing".

if (track.kind === 'captions' && track.language === 'en') {

track.mode = 'showing';

}

}

提示(cue)变得活跃时监听

其中mode一个支持的值是"hidden"。这意味着该追踪将在视频播放时更新,但观众无法看到。这对kind="metadata"的追踪最有用。

metadata文本追踪的一个常见用例是使用它们在提示变为活动状态时触发行为。为此,tracks会触发"cuechange"事件。

// Get all text tracks for the current player.

var tracks = player.textTracks();

var metadataTrack;

for (var i = 0; i < tracks.length; i++) {

var track = tracks[i];

// Find the metadata track that's labeled "ads".

if (track.kind === 'metadata' && track.label === 'ads') {

track.mode = 'hidden';

// Store it for usage outside of the loop.

metadataTrack = track;

}

}

// Add a listener for the "cuechange" event and start ad playback.

metadataTrack.addEventListener('cuechange', function() {

player.ads.startLinearAdMode();

});

模拟文本轨道

默认情况下,如果本机功能被破坏、不完整或不存在,Video.js将使用原生文本轨道并返回到模拟文本轨道。Flash技术将始终使用仿真的文本轨道功能。

video.js API和TextTrack对象是根据W3C规范建模的,Video.js使用Mozilla的vtt.js库来解析和显示模拟文本轨道。

为了禁用本机文本轨道功能和强制video.js总是使用模拟文本,nativeTextTracks该选项可以将传递给某项技术:

// Create a player, passing `nativeTextTracks: false` to the HTML5 tech.

var player = videojs('myvideo', {

html5: {

nativeTextTracks: false

}

});

文本轨道设置

当使用模拟文本轨道时,标题将在名为“Caption Settings”的菜单中增加一项。这允许用户改变屏幕上标题的样式。

可以通过关闭TextTrackSettings组件和隐藏菜单项来禁用此功能。

var player = videojs('myvideo', {

// Make the text track settings dialog not initialize.

textTrackSettings: false

});

/* Hide the captions settings item from the captions menu. */

.vjs-texttrack-settings {

display: none;

}

文本轨道优先级

通常来说,descriptions的优先级比captions和subtitles低,这对video.js的开发者意味着什么呢?

如果你使用default属性,video.js将标记为default的选为第一个轨道并将其打开。如果有多个轨道被标记为default,他将在"description"前打开第一个"captions" or "subtitles" 轨道.

这只应用于模拟的文本轨道支持,原生文本轨道行为将根据浏览器的不同而变化。

如果从菜单中选择了一个轨道,video.js将关闭所有其他相同类型的轨道。虽然这显示视频。虽然这表明Video.js支持"subtitles"和"captions"同时开启,但目前情况并非如此; Video.js只支持一次显示一个轨道。

这意味着对于模拟的文本轨道,Video.js将显示第一个启用的"subtitles"或"captions"轨道。

当支持原生文本轨道时,其他同类轨道仍将被禁用,但可能会显示多个文本轨道。

如果"descriptions"轨道被选中,"subtitles"或"captions"轨道也被选择,"descriptions"轨道将被禁用,并且他的菜单按钮也将被禁用。

以编程方式启用轨道时,Video.js会执行最少的强制执行。

对于模拟文本轨道,Video.js选择第一个轨道"showing"- 再次选择"subtitles"或"captions"而不是"descriptions"。

对于原生文本轨道,这种行为取决于浏览器。某些浏览器将允许多个文本轨道,但其他浏览器会在选择新轨道时禁用所有其他轨道。

html5 video 文本轨道,VideoJS-轨道-文本轨道相关推荐

  1. 海格里斯HEGERLS深度解析|重型四向穿梭车的轨道换向组件及轨道系统

    随着自动化仓储物流系统的广泛应用,物流设备也更趋于多样化,比如在货架轨道上可四向行走的穿梭车应运而生,重型四向穿梭车作为一种新型的物流存储设备,通常在轨道平面上有行走方向相互垂直的两个行走系统,通过两 ...

  2. 地球同步轨道、太阳同步轨道知识

    所谓人造地球卫星轨道就是人造地球卫星绕地球运行的轨道.这是一条封闭的曲线.这条封闭曲线形成的平面叫人造地球卫星的轨道平面,轨道平面总是通过地心的. 人造地球卫星轨道按离地面的高度,可分为低轨道.中轨道 ...

  3. MATLAB与STK互联44:生成太阳同步轨道、地球同步轨道、闪电轨道等特殊轨道

    在进行仿真任务时,我们经常会用到太阳同步轨道.地球同步轨道.闪电轨道等一系列特殊的轨道.在设计这些轨道时,参数往往都有内在相关性或一定的约束,所以轨道参数并不是随意设置.在过去博文中,设置卫星参数都很 ...

  4. Kymeta在军事战斗实验室演习中展示低地轨道和地球同步轨道卫星通信互操作性

    Kymeta™ u8终端是目前第一个也是唯一一个能够与低地球轨道和地球同步轨道星座建立移动通信和暂停通信的终端 华盛顿州雷德蒙德--(美国商业资讯)--致力于实现全球移动连接的通信公司Kymeta 今 ...

  5. 转--地球同步轨道、太阳同步轨道知识

    所谓人造地球卫星轨道就是人造地球卫星绕地球运行的轨道.这是一条封闭的曲线.这条封闭曲线形成的平面叫人造地球卫星的轨道平面,轨道平面总是通过地心的. 人造地球卫星轨道按离地面的高度,可分为低轨道.中轨道 ...

  6. HTML5 video视频字幕的使用和制作

    首先先看一下原生HTML5 video对字幕的支持显示情况: 元素 HTML5允许我们使用元素为视频指定字幕.这个元素的各种属性允许我们指定这样的东西,比如我们添加的内容的类型,它所在的语言,当然还有 ...

  7. 平板电脑支持html吗,HTML5视频无法在平板电脑上播放(HTML5 video not playing on tablets)...

    HTML5视频无法在平板电脑上播放(HTML5 video not playing on tablets) 下午好,我早些时候发布了一些内容,但仍然需要帮助. 我有一个Nexus 7和一个IPad2. ...

  8. html video各种控制命令,HTML5 Video(视频)

    HTML5 Video(视频) 很多站点都会使用到视频. HTML5 提供了展示视频的标准. 检测您的浏览器是否支持 HTML5 视频: 检测 Web站点上的视频 直到现在,仍然不存在一项旨在网页上显 ...

  9. jTemplates异步加载实现与HTML5 video视频开发

    最近做有关Web App有关的项目,为了动态加载相应速度更快,采用了以下几个策略: 1.PHP后台提交自动生成静态列表页面. 2.PHP后台提交自动生成列表页资源/文章的json数据文件,javasc ...

最新文章

  1. lxml安装_Beautiful Soup的安装和使用
  2. .NET WinForm中给DataGridView自定义ToolTip并设置ToolTip的样式
  3. 强化学习(十四) Actor-Critic
  4. spring beans源码解读之--BeanFactory的注册
  5. 信息系统项目管理师:第5章:项目范围管理-重点汇总
  6. 关于玻璃体捐献的想法
  7. flink sql udf jar包_Java动态加载Jar实例解析
  8. CUDA学习(三十六)
  9. python 将数据写入csv文件
  10. json 转换 java odl_JSON与JAVA数据的转换
  11. sublime text 2 解决错误 [Decode error - output not utf-8]
  12. 鸿蒙电视是无线么,鸿蒙系统首秀,在自家设备上和普通电视大不相同赵崇带你走世界...
  13. Linux操作系统教学进度计划表
  14. 常用的DOS操作命令使用方法及介绍
  15. Visual FoxPro已经过时了吗 ?我也经常问自己!
  16. 软件项目风险控制-公益讲座视频,供大家学习参考。
  17. 《如何有效阅读一本书》:读再多书,不如先学会如何读书
  18. vue啦啦啦啦啦啦啦啦
  19. st58服务器装系统,联想 Thinksystem ST58服务器介绍
  20. /usr/bin/ld: cannot find -lxxx 问题 解决方法总结

热门文章

  1. 如何提高小程序搜索排名
  2. 常见rewrite规则
  3. 【UE4】后处理制作马赛克效果
  4. Android JNI实现录音和播放
  5. QT网络编程: 使用QNetworkAccessManager上传post请求
  6. python allure报告_Pytest+Allure 定制报告
  7. 浅谈王者荣耀的匹配算法
  8. Tweetable Mathematical Art 太极阴阳图
  9. Rancher 快速构建k8s容器管理平台解决方案
  10. 数据结构课设城市公交查询系统(C语言)