现在各种支持HTML5的浏览器都能够播放html5视频了,但是对于字幕的支持却很少,我们期待像DVD那样强大的字幕。

往往我们还不得不通过js来做,着实是一件痛苦的事情。

现在IE10率先对HTML5 Video 字幕给与内置的支持,而且还支持多语言,可任意切换,真是太给力了。

示例代码如下:

  1. <video id="mainvideo" controls autoplay loop>
  2. <track src="en_track.vtt" srclang="en" label="English" kind="caption" default>
  3. <track src="cn_track.vtt" srclang="zh-cn" label="简体中文" kind="caption">
  4. </video>

通过两个<track>标签分别指定了一个英文字幕文件、一个中文字幕文件,默认为中文字幕,用户可以切换,也可以由程序脚本切换。
IE10支持2种字幕文件格式:

  • WebVTT : Web Video Text Track  (Web视频文本轨道)
  • TTML : Timed Text Markup Language (时序文本标记语言)

WebVTT

WebVTT是UTF-8编码格式的文本文件,内容示例如下:

  1. WEBVTT
  2. 00:00:01.878 --> 00:00:05.334
  3. 曾经有一份真诚的爱情放在我面前,
  4. 00:00:08.608 --> 00:00:15.296
  5. 我没有珍惜,等我失去的时候我才后悔莫及,
  6. 人世间最痛苦的事莫过于此。

第一行必需是WEBVTT,接着空行,接下来是一行时间范围+一行或多行字幕内容+空行,一行时间范围+一行或多行字幕内容+空行,……

时间格式是HH:MM:SS.sss,时:分:秒.毫秒, 开始时间 --> 结束时间,-->的两边各有一个空格,这两个时间必需写在同一行。

时间都是相对于视频开始的时间间隔。

时间之后是字幕文本,时间和字幕文本之间不能有空行,字幕文本可以是一行或多行,字幕文本中不能有空行。WebVTT字幕文件的MIME类型约定是"text/vtt",需要在IIS或者Apache等Web服务器中配置.

TTML

TTML是xml格式的文件,内容示例如下:

  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <tt xmlns='http://www.w3.org/ns/ttml' xml:lang='en' >
  3. <body>
  4. <div>
  5. <p begin="00:00:01.878" end="00:00:05.334" >曾经有一份真诚的爱情放在我面前,</p>
  6. <p begin="00:00:08.608" end="00:00:15.296" >我没有珍惜,等我失去的时候我才后悔莫及,<br/>人世间最痛苦的事莫过于此。</p>
  7. </div>
  8. </body>
  9. </tt>

结构很明确了,分别是tt标签,body标签,div标签,p标签,br标签,和HTML很像啊!p元素的begin/end属性指定了字幕的起止时间。
TTML文件的MIME类型约定为application/ttml+xml

通过在video标签内使用1个或多个track标签来指定1个或多个语言的字幕文件,每个track元素对应一个字幕文件。

track标签的属性主要有4个,如下表:

属性 描述

kind

定义字幕内容类型,只能是这五种之一: subtitles, captions, descriptions, chapters, metadata.

src

字幕文件的URL地址

srclang

字幕文件的语言类型,标识信息的作用,播放器不使用这个属性。

label

字幕标签,每个字幕元素必需设置一个唯一不重复的标签,切换字幕时显示的名称。

default

指定是否是默认字幕。如果每个都不指定,将不会自动显示字幕.

可以通过javascript方式访问每一个字幕元素,甚至其中的每一句台词。这一部分代码比较多,我就不展开了,有兴趣的可以自己看原文。

参考链接: http://msdn.microsoft.com/en-us/library/ie/hh673566(v=vs.85).aspx

给HTML5 Video 设置多语言字幕文件的更多相关文章

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

    一.video支持视频格式: 以下是三种最常用的格式 1. ogg格式:带有Theora视频编码(免费)+Vorbis音频编码的Ogg文件(免费) 支持的浏览器:firefox.chrome.oper ...

  2. HTML5 <video> - 使用 DOM 进行控制

    HTML5 <video> 元素同样拥有方法.属性和事件. 其中的方法用于播放.暂停以及加载等.其中的属性(比如时长.音量等)可以被读取或设置.其中的 DOM 事件能够通知您,比方说,&l ...

  3. JWPlayer中字幕文件的配置

    最近应项目要求研究JWPlayer,视研究进度可能会将解决的问题或者一些配置方法写在这里. jwplayer支持vtt和srt格式的字幕文件,在视频中可以选择加载多个字幕文件(常用于多语言字幕),并且 ...

  4. HTML5 Video(视频)

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

  5. Html5 Video 实现方案

    来源:http://ask.dcloud.net.cn/article/569 源码下载 前言: 最近项目中需要用到html5 视频播放功能,于是稍微研究了解了下,遇到了很多坑,特此记录下. 一. H ...

  6. (原)使用ass字幕文件通过ffmpeg给视频添加字幕的一些研究

    使用ass字幕文件通过ffmpeg给视频添加字幕的一些研究 Author:lihaiping1603@aliyun.com Create:2019-09-04 最近对ffmpeg给视频文件添加字幕效果 ...

  7. DCloud-Video:Html5 Video 实现方案

    ylbtech-DCloud-Video:Html5 Video 实现方案 1.返回顶部 1.1. http://ask.dcloud.net.cn/article/569 1.2. 一. Html5 ...

  8. HTML5: HTML5 Video(视频)

    ylbtech-HTML5: HTML5 Video(视频) 1.返回顶部 1. HTML5 Video(视频) 很多站点都会使用到视频. HTML5 提供了展示视频的标准. 检测您的浏览器是否支持 ...

  9. 网页视频不能自动播放?HTML5 video报错Uncaught (in promise) DOMException解决方法

    话说发哥四年前写了一个网页,如上图效果,实际网址http://pano.z01.com ,话说做好时是正常的,突然某一天,客户说你这个网站动画不见了,这是什么原因? 结果检查脚本一切正常. 其实也不是 ...

随机推荐

  1. JAVA网络编程基本功之Servlet与Servlet容器

    Servlet与Servlet容器关系 Servlet 比较这两个的区别, 就得先搞清楚Servlet 的含义, Servlet (/ˈsərvlit/ ) 翻译成中文就是小型应用程序或者小服务程序, ...

  2. Hi3559板载u-boot、kernel及rootfs烧录过程及心得

    这一篇随笔讲叙述下基于Hi3559AV100的BOXER-8410AI板载u-boot.kernel及rootfs烧录具体过程及遇到问题的解决方法与心得. 1.前期板载启动测试和烧录手段 1.1.烧写 ...

  3. MySQL 多表查询与事务的操作

    表连接查询 什么是多表查询 # 数据准备 # 多表查询的作用 * 比如:我们想查询孙悟空的名字和他所在的部门的名字,则需要使用多表查询 # 如果一条 SQL 语句查询多张表,因为查询结果在多张不同的表 ...

  4. 【深入理解Java虚拟机】垃圾回收

    引用计数算法 给对象加一个计数器,引用一次+1,引用时效就-1,当计数器=0时对象就不能再被使用: 实现简单,判定效率高:Java虚拟接没有使用,主要原因是很难解决对象之间循环引用问题: GC算法: ...

  5. 第三方API接口测试问题反馈文档

    大家在给甲方做大型项目的时候,有时候参与的厂商比较多,而公司负责的部分又需要第三方厂商提供接口支持. 例如我们做医疗行业的,给医院提供医保控费系统服务的,就需要HIS厂商提供接口给我们采集数据.有时候 ...

  6. 「视频小课堂」Logstash如何成为镇得住场面的数据管道(文字版)

    视频地址 B站视频地址:Logstash如何成为镇得住场面的数据管道 公众号视频地址:Logstash如何成为镇得住场面的数据管道 知乎视频地址:Logstash如何成为镇得住场面的数据管道 内容 首 ...

  7. apk、dex完整性验证

    对Dex进行完整性的检查,可通过CRC,或者Hash值.可将校验值放到String资源文件里,或者放到服务器中. 1. 在代码中完成校验值对比逻辑,此部分代码后续不能再改变,否则CRC值会发生变化: ...

  8. get和post的区别主要有以下几方面

    1.url可见性: get,参数url可见: post,url参数不可见 2.数据传输上: get,通过拼接url进行传递参数: post,通过body体传输参数 3.缓存性: get请求是可以缓存的 ...

  9. Spring Boot 自动装配原理

    Spring Boot 自动装配原理 Spring Boot 在启动之前还有一系列的准备工作,比如:推断 web 应用类型,设置初始化器,设置监听器,启动各种监听器,准备环境,创建 applicati ...

  10. Centos7 Firewall 使用笔记

    在 Centos 7 中防火墙由 firewalld 来管理,而不是以前的 iptables. 记录一下常用操作备查 firewall-cmd 操作 firewall-cmd --state 查看防火 ...