今天无意看到了一篇关于在H5 video插入字幕的文章,简单做个总结。

前言

网页中使用H5 video播放视频文件,一般而言不外乎是:

  1. 字幕嵌在影片里
  2. 字幕档另外挂上

第 1 种方法很单纯,字幕就是影片的一部份,所以只要能把影片播起来,字幕也会出现,只是这样的方式,如果影片输出后发现有一段字幕打错了,那影片就要重新再输出,又或者想要放上多语系的字幕,N 种语言就要输出 N 部影片,实在相当而且耗费储存空间(有些影片格式可以嵌入多个字幕轨,再由6186.html">播放器选择使用哪个字幕)。而第 2 种方法也很常见,同一部影片就可以配上不同的字幕档案来播放,就算字幕错了也只需要修改字幕档的内容就可以了。

而在 web 技术上,使用 HTML5 的 <video /> 来播放影片,也可以使用另外挂上字幕文件的方式来显示字幕,这个功能在目前桌上的主流浏览器都已经支持(参考 Can I Use),主要是支持 WebVTT 及 TTML 两种字幕档格式,而WebVTT,它格式简单、可以用简单的 HTML tag 作格式、与流行的 SubRip (.srt) 档案类似、多数浏览器实作还有多个影音平台(包括 YouTube)支持。

WebVTT 字幕档格式

WebVTT 文件(文字编码使用 UTF-8,文件名为 *.vtt 檔,MIME type 为 text/vtt)的格式很简单,它大概会像是这样:
WEBVTT
1
00:00:07.240 --> 00:00:11.130
大家好 最近 Visual Studio 2013 做了一些更新

2
00:00:11.140 --> 00:00:18.110
那我们今天请到 twMVC 的 Dino
来为我们介绍这个更新里面关于 SASS Editor 的部分

3
00:00:18.120 --> 00:00:19.280
那我们现在交给 Dino

....

这个档案的第一行以 WEBVTT 开头,然后接下来都是用空行来区隔每一段字幕,每一段字幕,在字幕的术语里是称作「Cue」由三个部份组成:

1.Cue identifier

也就是上面例子的 1, 2, 3, ....,作为参考用的部份。它可以是任何单行文字,像是「1 - 开始」这个部份可有可无。

2.Cue timing

字幕出现的时间,时间格式可以是 hh:mm:ss.ttt 或是 mm:ss.ttt,而时间的起始就是以「 --> 」来表示,注意这个箭头的前后都要有空白。

3.Subtitles: 字幕文字

这部份就是字幕的文字内容了,它可以是多行文字,不过只要一有空行就会被视为这部份字幕结束。而字幕可以使用一些简单的 HTML tag 来做格式,详细说明请看参考文件。

字幕檔的使用

有了 WebVTT 档之后,如果要为影片加上字幕,就照着这样的方式加在 <video /> 标签之中:

<video src="sample.mp4" controls><track kind="subtitles" src="sub_enUS.vtt" srclang="en-us" label="English (US)" default><track kind="subtitles" src="sub_zhTW.vtt" srclang="zh-tw" label="正体中文">
</video>

所以很清楚地看到,只要使用 <track /> 标签就可以加上字幕文件,而可以使用 srclang 以及 label 属性来设定字幕的语系,以及字幕在播放器中显示的名称。

大家最常使用的 YouTube,也可以在上传影片后,加上字幕文件的功能上传同样的 webvtt 档案来加入字幕喔!

影片上传后,按下下方的 CC 功能加入字幕

直接加入 vtt 档案即可

字幕的样式控制

CSS中有专门的伪元素::cue可以控制字幕的样式。

可以控制的CSS属性包括:

color
opacity
visibility
text-decoration及相关属性
text-shadow
background及相关属性
outline及相关属性
font及相关属性,包括line-height
white-space
text-combine-upright
ruby-position

例如:

::cue {background: none;color: #fff;text-shadow: 0 1px #000, 1px 0 #000, -1px 0 #000, 0 -1px #000;font-size: medium;
}

【前端交流Q群:659522518】

如何为HTML5 Video载入WebVTT字幕相关推荐

  1. HTML5 Video 添加字幕,操作简单,不需要剪辑

    HTML5 Video视频支持外挂字幕,文件后缀名是.vtt,称为WebVTT格式,专门的web字幕格式. 使用很简单,用一个<track>元素即可,例如: 官方文档:https://w3 ...

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

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

  3. [html] html5的video如何附带字幕?

    [html] html5的video如何附带字幕? <video controls width="400" height="300"> <so ...

  4. 给视频加字幕HTML代码,给Html5视频播放器添加字幕

    现在各种支持HTML5的浏览器都能够播放html5视频了,但是对于字幕的支持却很少,我们期待像DVD那样强大的字幕. 往往我们还不得不通过js来做,着实是一件痛苦的事情. 现在IE10率先对HTML5 ...

  5. html5 video 文本轨道,VideoJS-轨道-文本轨道

    原文 https://docs.videojs.com/tutorial-tracks.html VideoJS当前有三种类型的轨道(tracks): 音频轨道(Audio Tracks) 视频轨道( ...

  6. html5播放器 迅雷,搜狗浏览器HTML5视频播放器插件(HTML5.Video.Player)

    一款搜狗浏览器的HTML5视频播放器插件,安装后可以使用HTML5方式播放优酷.土豆.爱奇艺.搜狐视频.迅雷离线.腾讯视频.56视频等网站的视频,避免使用adobe flash player插件,降低 ...

  7. webvtt字幕转srt字幕方法

    webvtt字幕转srt字幕方法 现在有些网上的Mooc课程(coursera等)提供的字幕为vtt格式,下载后某些播放器(迅雷影音.暴风影音)无法载入,需要将vtt转为srt格式字幕才能在下载的教学 ...

  8. HTML5 Video(视频),HTML 音频(Audio)

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

  9. 火狐放不了html5 video MP4格式

    火狐放不了html5 video MP4格式 这里教大家解决火狐播放html5 video时 显示视频或mime类型不支持 这是因为火狐不支持mp4格式视频的播放,所以得把mp4格式的视频转为ogg格 ...

最新文章

  1. XMind安装/注册完整教程
  2. 正则 去除字符串中的特殊字符
  3. Mule的基本配置元素:Endpoint、Transformer、Filter、Flow
  4. js,jquery字符串转换json,兼容各种浏览器
  5. .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  6. 【矩阵乘法】递推(ssl 1532)
  7. python求字符串的所有子集_打印一字符串的所有子集 | 学步园
  8. 蔚来事故启示录:被夸大的和被误导的自动驾驶
  9. Java RandomAccessFile示例
  10. Java【第六篇】面向对象基础
  11. 计算机网络工程师模拟题库,计算机网络工程师模拟题56.doc
  12. eclipse中文语言包在线安装方法
  13. iOS TestFlight 使用详解
  14. linux集群服务器搭建
  15. 80004005错误代码_0x80004005,小编教你解决0x80004005错误代码的方法
  16. C#调用Excel Vba宏
  17. 计算机毕业设计ssm民宿预定管理系统20sxh系统+程序+源码+lw+远程部署
  18. 哈工大CSAPP大作业 2022
  19. Java——打印九宫格的算法思路(任意维奇数行方阵)
  20. c语言日历时钟编程,基于DS1302的日历时钟(1602液晶显示DS1302时钟)C语言程序设计...

热门文章

  1. 拉格朗日多项式插值法 思路详解+详细代码
  2. mulesoft MCIA 常用词汇、知识点汇总
  3. 测绘程序设计——度分秒与弧度制转化(C#)
  4. libjpeg与turbo libjpeg的使用
  5. 怎么把照片精确压缩到固定KB体积大小
  6. arm解锁 j-flash_J-Link固件烧录以及使用J-Flash向arm硬件板下载固件程序(示例代码)...
  7. Python 生成随机的六位数
  8. 1.python网页设计,点击按键显示对话窗口
  9. 爬虫基础(6)网页解析之XPath库
  10. 关于欧几里得距离的一些解释