html5 video 外挂字幕[webVTT]研究

简介: html5 video 外挂字幕英文简称webVTT【video text track 网络视频文本轨道】,是一个以.vtt结尾的纯文本文件。

html5 video 外挂字幕[webVTT]研究

目录

  1. WebVTT是什么

    • WebVTT内容
    • 设置字幕样式
    • 为字幕设置位置
    • 章节chapters解释
  2. webVTT 详解
  3. webVTT实现
  4. 浏览器行为
  5. 浏览器支持情况

WebVTT是什么

html5 video 外挂字幕英文简称webVTT【video text track 网络视频文本轨道】,是一个以.vtt结尾的纯文本文件,里面会包含以下几种视频信息:

  1. 字幕subtitles

关于对话的转译或者翻译

  1. 标题captions

类似于标题,但是还包括音响效果和其他音频信息。

  1. 说明description

预期为一个单独的文本文件,通过屏幕阅读器描述视频

  1. 章节chapters

旨在帮助用户浏览整个视频

  1. 元数据metadata

默认不打算展示给观众的、和视频有关的信息和内容。但是你可以使用Javascript来访问。

webVTT 详解

  1. WebVTT内容

    这里有一个标准的示例:

    WEBVTT
    
    1
    00:00:13.000 --> 00:00:16.100
    I heard about this arduino project, and I saw it online - 
    
    2
    00:00:16.100 --> 00:00:20.100
    - and I said 'Wow! a lot of people are starting to talk about this.
    I should check it out!'

    webvtt文件中的每一项为一个cue,每一个cue以箭头分割的开始时间和结束时间,cue对应的文本在下一行,每一个cue可以有一个id, cue的时间格式为 hours:minutes:seconds:milliseconds,必须严格遵守,时分秒必须为两位数字,不足的以0填补,毫秒必须是三位数字,这个里有个.vtt文件的格式校验器Live WebVTT Validator

  2. 设置字幕样式

    通过内联样式为字幕设置样式

    WEBVTT
    
    1
    00:00:13.000 --> 00:00:016.100
    Ich hörte von dieser <c.red.caps>arduino</c> Projekt, und ich sah es online -
    
    2
    00:00:16.100 --> 00:00:20.100
    - und ich sagte "<b>Wow!</b> eine Menge Leute fangen an, darüber zu reden.
    Ich <i>check it out</i>!"
    
  3. 为字幕设置位置

    位置设置可以写在时间设置的同一行

    - D:vertical / D:vertical-lr
    >   垂直的显示文本而不是水平的。 它也指定文本是增长到左边( vertical)还是右侧( vertical-lr )
    -  L:X / L:X%
    >  一个数字或百分比。 如果是一个百分点,那么它指从框架顶部开始的位置。如果是一个数字,它表示会是在多少行。
    -  T:X%
    >  视频上的水平文字位置。T:100% 表示文本会放在视频的右侧。
    -  A:start / A:middle / A:end
    > 文本在盒子内的对齐方式。start是左对齐, middle是居中对齐, end是右对齐。
    - S:X%
    >  文本盒子的宽度,表示为视频宽度的百分比。
    

    具体示例

    WEBVTT
    
    00:00:05.000 --> 00:00:08.040 A:middle L:10%
    I dabble? Listen to me. What a jerk.
    
    00:00:05.000 --> 00:00:08.040 A:middle L:60%
    Yeah, I sort of dabble around,
    you know.
        
  4. 章节chapters解释

    语法跟字幕类似,如下

    chapter-1
    00:00:00.000 --> 00:00:18.000
    Introductory Titles
    
    chapter-2
    00:00:18.001 --> 00:01:10.000
    The Jack Plugs
    
    chapter-3
    00:01:10.001 --> 00:02:30.000
    Robotic Birds
    

    使用的时候是需要设置kind = 'chapter',目前主流浏览器关于chapter的支持不太完善,最好的办法采用我们自己定义的界面,一般自定义的界面需要提供一些特性:

    • 展示章节列表
    • 允许用户选择章节
    • 播放时高亮当前选择的章节

    采用如下的代码可以达到的我们的目的

    <video src="sintel.mp4">
      <track kind="chapter" 
             label="Chapters" 
             src="sintel_chapters.vtt" srclang="en"
             onload = "displayChapters(this)"></track>
    </video>
    
    function displayChapters(trackElt){
        if((trackElt) && (textTrack = trackElt.track)){
            if(textTrack.kind === "chapters"){
                // Do not show the track
                textTrack.mode = 'hidden';
                var chapterBlock = document.getElementById("chapters");
                // List cues
                for (var i = 0; i < textTrack.cues.length; ++i) {
                    var cue = textTrack.cues[i];
                    var chapterName = cue.text;
                    var start = cue.startTime;
                    // Design an interface here allowing to choose a chapter
                    ....
                }
            }
        }
    }
    

webVTT实现

在html5通过video的子元素track来实现

<video controls>
  <source src="video.mp4"  type="video/mp4">
  <source src="video.webm" type="video/webm">


  <track label="English Captions"     kind="captions"     srclang="en"
                                                          src="video_cc_en.vtt">


  <track label="German Subtitles"     kind="subtitles"    srclang="de"
                                                          src="video_sub_de.vtt">

  <track label="French Subtitles"     kind="subtitles"    srclang="fr"
                                                          src="video_sub_fr.vtt">


  <track label="English Descriptions" kind="descriptions" srclang="en"
                                                          src="video_audesc_en.vtt">


  <track label="Chapters"             kind="chapters"     srclang="en"
                                                          src="video_chapters_en.vtt">
</video>

浏览器行为

  1. 所有text track都存在与媒体元素[media element]的textTrackList属性中
  2. 播放过程中遇到一个cue就会触发cuechange和enter事件
  3. 当一个字幕会触发一个exit事件。

浏览器支持情况

track浏览器支持情况

参考

  1. The track element
  2. Web Video Text Tracks can i use?
  3. mdn track
  4. Subtitles and Chaptering using Timed Text Tracks
  5. W3C WebVTT standard: http://dev.w3.org/html5/webvtt/#webvtt-cue-timings
  6. Timed track use cases: http://wiki.whatwg.org/wiki/Timed_tracks
  7. Timed track formats: http://wiki.whatwg.org/wiki/Timed_track_formats
目录
相关文章
|
Web App开发 移动开发 JavaScript
【前端用法】HTML5 Video标签如何屏蔽右键视频另存为的js代码以及如何禁用浏览器控件,Video 禁止鼠标右键下载
【前端用法】HTML5 Video标签如何屏蔽右键视频另存为的js代码以及如何禁用浏览器控件,Video 禁止鼠标右键下载
331 0
|
2月前
|
移动开发 编解码 监控
HTML5 Video(视频)作为背景的优化方案
使用 HTML5 `&lt;video&gt;` 标签作为网页背景视频可以提升视觉效果,但需优化以确保性能和用户体验。主要方法包括:选择合适的视频格式(MP4、WebM、Ogg)和分辨率(720p 或更低),压缩文件大小,确保视频静音和循环播放,使用 CSS 设置全屏样式,根据设备和网络条件加载视频或静态图像,使用 `playsinline` 属性和延迟加载技术提高性能,确保无障碍性,并监控页面加载时间。合理应用背景视频可增强网站视觉效果而不影响用户体验。
|
2月前
|
移动开发 开发者 UED
HTML5中video标签controlslist属性的使用方法
`controlsList`属性为开发者提供了更多控制HTML5视频播放器行为的能力,让视频内容的集成更加灵活和符合需求。通过精心设计的控制列表,可以提升用户体验,同时保持内容的安全性和专业性。这种细节的控制和定制能力是现代Web开发的一个重要方面,反映了HTML5对开发者和内容创作者需求的响应。
163 1
|
2月前
|
移动开发 JavaScript 前端开发
html5 video
本文介绍了HTML5中的`<video>`标签的用法,包括如何设置视频的属性如自动播放、循环播放、加载模式,以及如何通过JavaScript控制视频播放和暂停,还提到了支持的视频格式和`<video>`标签中`<source>`元素的作用。
36 0
html5 video
uniapp使用weiview引入本地Html5+ video 基于mui 5+的 视频播放器
uniapp使用weiview引入本地Html5+ video 基于mui 5+的 视频播放器
|
移动开发 前端开发 JavaScript
前端祖传三件套HTML的HTML5之新多媒体元素 audio/video
HTML5 是 Web 技术的重要更新,它引入了许多新特性,其中包括一些新的多媒体元素。这些新元素包括音频和视频,让 Web 开发者可以更方便地在网站上添加多媒体内容。
161 0
|
移动开发 HTML5 内存技术
零基础HTML入门教程(13)——插入视频video标签
我们前几小结学习了,插入图片插入音频等,我们这一小结学习一下,插入视频标签video并熟练使用。(1)直到现在,仍然不存在一项旨在网页上显示视频的标准。 今天,大多数视频是通过插件(比如 Flash)来显示的。然而,并非所有浏览器都拥有同样的插件。 HTML5 规定了一种通过 video 元素来包含视频的标准方法。 (2)controls 属性供添加播放、暂停和音量控件。 包含宽度和高度属性也是不错的主意。 代码如下 效果如下 我们可以看到,页面上面会出现一个可以播放的视频,我们再一些网站上看到视频,都是用
零基础HTML入门教程(13)——插入视频video标签
|
移动开发 HTML5
《图解HTML练习》- video标签实现视频背景
《图解HTML练习》- video标签实现视频背景
177 0
《图解HTML练习》- video标签实现视频背景
|
Web App开发
HTML - Video 在使用非 localhost/127.0.0.1 地址访问时打开摄像头失败
HTML - Video 在使用非 localhost/127.0.0.1 地址访问时打开摄像头失败
508 0
|
移动开发 前端开发 程序员
好程序员web前端分享HTML5 video事件应用示例
  好程序员web前端分享HTML5 video事件应用示例,使用 onloadedmetadata 事件获取视频的时间长度,使用 ontimeupdate 事件获取视频当前播放的进度,示例代码如下:   1、获取视频时间长度   当视频载入video后,使用 onloadedmetadata 事件获取视频的时间长度。
1261 0