在这里插入图片描述

1 简介

MDN-URL

概述:<video> HTML 元素用于在文档中嵌入媒体播放器,用于支持文档内的视频播放。
注意:也可将 video 标签用于音频内容,但是 video 元素可能在用户体验上更合适。

2 快速尝试

快速使用

示例说明:上例中 展示了 video 元素的简单用法。和 img 元素的使用类似,在 src 属性里加入我们需要展示的视频地址,同时也可用其他属性来指定视频的宽度和高度、是否自动或者循环播放、是否展示浏览器默认的视频控件等。

3 特殊

<video> 标签是 HTML 5 的新标签。

不支持 video 元素的浏览器中,标签中间的内容会显示,作为降级处理。

<video>您的浏览器不支持,请更换[谷歌浏览器]()查看</video>

4 属性

全局属性

类似于其他 HTML 元素,支持全局属性;

src

要嵌到页面的视频的 URL。

可选,也可使用 video 块内的 source 元素来指定需要嵌到页面的视频。

d

width

视频区域的宽度,单位是 CSS 像素(仅限绝对值,不支持百分比)

height

视频区域的宽度,单位是 CSS 像素(仅限绝对值,不支持百分比)

d

controls

作用:若存在该属性,浏览器会在视频底部提供一个控制面板,允许用户控制视频的播放,包括音量、拖动进度、暂停或恢复播放。

d

controlslist

当浏览器显示视频底部的播放控制面板(例如,指定了 controls 属性)时,controlslist 属性会帮助浏览器选择在控制面板上显示哪些 video 元素控件。

允许的值:

nodownload 无下载
nofullscreen 禁用全屏
noremoteplayback ?未知

禁用“画中画”模式(和控件)使用 disablepictureinpicture 属性。

问题:第 1 个视频点击后下拉控件出现在最后一个视频上了。

d

disablepictureinpicture

防止浏览器显示画中画上下文菜单 或 在某些情况下自动请求画中画模式。

禁用”画中画“

poster

作用:海报帧图片 URL, 用于在视频处于下载中的状态时提示。如果未指定该属性,则在视频第 1 帧可用之前不会显示任何内容,然后会将视频的第 1 帧作为海报(poster)帧来显示。

注意:先占位的图片会保持其自有大小,而非视频容器大小。

d

loop

一个布尔属性
指定后会在视频播放结束的时候,自动返回视频开始的地方,继续播放。

muted

一个布尔属性
指明在视频中音频的默认设置。
设置后,音频会初始化为静音。
false (默认)意味着视频播放的时候音频也会播放。

preload

枚举属性
指示浏览器,作者认为在播放视频之前,加载那些内容会达到最佳的用户体验。

可能是下列值:

none: 表示不应该加载视频;
metadata: 表示仅预先获取视频的元数据(例如长度);
auto: 表示可以下载整个视频文件,即使用户不希望使用它;
‘’: 空字符串与 auto 值一致;

注意:
autoplay 属性的优先级比 preload 高。如果指定了 autoplay 属性,浏览器显然需要开始下载视频以便回放。
规范中没有强制浏览器去遵循该属性的值,这仅仅只是个提示。


以下为不常用属性

playsinline

一个布尔属性
指明视频将内嵌(inline)播放,即在元素的播放区域内。
注意:没有此属性并不意味着视频始终是全屏播放的。

crossorigin

枚举属性
指明是否使用 CORS 来获取相关视频。

允许 CORS 的资源可在 canvas 元素中被重用,而不会被污染。

允许的值:

anonymouse:
在发送跨源请求时不携带凭据(credential)信息。
也就是说,浏览器在发送 Origin: HTTP 标头时将不会携带 cookie、X.509 证书,也不会执行任何 HTTP 基本身份验证。如果服务器没有给予源站点信任(也就是说没有设置 Access-Control-Allow-Origin: HTTP 标头),资源会被污染,并且它的使用会受到限制。

user-credentials:
在发送跨源请求时携带凭据信息。
也就是说,浏览器在发送 Origin: HTTP 标头时将会携带 cookie、证书、或执行 HTTP 基本身份验证。如果服务器没有给予源站点信任(通过设置 Access-Control-Allow-Credentials: HTTP 标头),图像会被污染,并且它的使用会受到限制。

不加:
不加这个属性时,获取资源不会使用 CORS 请求(即不会发送 Origin: HTTP 请求标头),保证其在 canvas 元素中使用时不会被污染。如果指定无效值,会被当作指定了枚举关键字 anonymous 一样使用。

autoplay

作用:布尔属性,声明该属性后,视频会尽快自动开始播放,不会停下来等待数据全部加载完成。

备注:自动播放音频(或有声视频)可能会破坏用户体验,所以应该尽量避免。如果一定要提供自动播放功能,你应该加入开关(让用户主动打开自动播放)。然而如果需要创建一些媒体元素,其播放源由用户在稍后设置,自动播放就会很有用。

注意 1:无法用 autoplay=“false” 来关闭视频的自动播放功能,只要 video 标签中有这个属性,视频就会自动播放。要移除自动播放,需要完全删除该属性。

在某些浏览器中(例如 Chrome 70.0)中,如果没有设置 muted 属性,autoplay 将不会生效。

disableremoteplayback

一个布尔属性
用于在使用有线(HDMI, DIV 等)和无线技术(Miracast、Chromecast、DLNA、AirPlay 等)连接设备时,禁用远程播放功能。

在 Safari 中,可使用 x-webkit-airplay="deny" 作为兜底方案。

5 事件

loadstart

浏览器开始加载资源时触发

play

播放已开始

d

playing

已经在暂停或因数据不足而延迟后准备好进行播放。

pause

播放已暂停

canplay

浏览器可以播放媒体,但估计尚未缓冲足够的数据,无法流畅播放至视频结束,期间可能出现停顿以缓冲更多内容。

canplaythrough

浏览器估计它可以不间断地播放到媒体末尾,无需暂停以进行内容缓冲。

ended

视频停止播放,因为媒体已经达到结束点。

error

获取媒体数据时出现错误,或者资源的格式不受支持。

loadeddata

媒体的首帧已加载完成。

loadedmetadata

元数据已加载完毕

progress

在浏览器加载资源期间周期性触发。

emptied

媒体内容已清空;
例如:如果媒体已加载(或部分加载)完成,并调用 load() 方法重新加载。


以下为不常用

ratechange

播放速率发生变化;

seeked

拖动进度(seek)操作完成;

seeking

拖动进度操作开始;

stalled

用户代理尝试获取媒体数据,但意外地无法获取数据;

suspend

媒体数据加载已暂停;

timeupdate

由 currentTime 属性指示的播放时间已更新;

volumechange

音量发生变化;

waiting

由于暂时缺少数据而停止播放;

audioprocess

ScriptProcessorNode 的输入缓冲区已准备好进行处理。
(音频缓冲相关)

complete

已终止 OfflineAudioContext 的渲染

durationchange

duration 属性已更新

6 使用说明

提供多个视频源

浏览器并不全部支持相同的视频格式,可在嵌套的 source 元素中提供多个媒体源,浏览器会使用它能识别的第一个源。

<video controls>
  <source src="myVideo.mp4" type="video/mp4" />
  <source src="myVideo.webm" type="video/webm" />
  <p>
    你的浏览器不支持 HTML5 视频。这里有一个
    <a href="myVideo.mp4" download="myVideo.mp4">视频</a>
    链接。
  </p>
</video>

视频类型 & 视频编码

(较复杂,暂时先了解)

我们提供了一份关于媒体文件类型指南视频支持的编解码器指南。此外,还有一份可与之配合使用的音频编解码器指南。

自定义视频控件

如果你不指定 controls 属性,视频将不会包含浏览器的默认控件;你可以使用 JavaScript 和 HTMLMediaElement API 来创建你自己的控件。详细信息请参阅 创建跨浏览器视频播放器

为了实现对视频(和音频)内容的精确控制,HTMLMediaElement 会触发多种不同的事件,除了提供可控性之外,这些事件还允许你监控媒体的下载进度和播放进度,以及播放状态和位置。

视频添加字幕

如果想在视频里展示字幕或者标题,你可以在 <track> 元素和 WebVTT 格式的基础上使用 JavaScript 来实现。详细信息请参阅向 HTML 视频中添加字幕。

视频元素播放音频

你可以使用 <video> 元素播放音频文件。如果你需要结合 WebVTT 字幕进行音频播放,这会非常有用,因为 元素不支持使用 WebVTT 提供字幕。

未知?

要在支持该元素的浏览器上测试回退内容,你可以将 替换为不存在的元素,如

设置样式

video 元素是一个替换元素 —— display: inline

默认宽高:但在视口中的默认宽度和高度由所嵌入的视频定义;

object-position 属性调整视频在元素框内的位置;
object-fit 属性控制视频如何调整大小以适应框架。

常见处理:将其 display 值 赋 block, 以方便定位、调整大小等操作,然后根据需要提供样式和布局信息。

<video> 元素进行样式化并无特殊考虑;一种常见策略是为其 display 值赋为 block,以方便定位、调整大小等操作,然后根据需要提供样式和布局信息。视频播放器样式基础提供了一些有用的样式化技巧。
(链接地址为英文内容,使用到再看)

检测轨道添加或移除

(不懂)

addtrack, removetrack 事件,HTMLMediaElement 接口提供的一些属性&方法。

7 视频服务器支持

(服务端相关,了解)

8 示例

单个 sourcce, 控件, 自动播放,封面,默认占位

多个 source, 兼容多浏览器

9 无障碍

(了解)

10 技术概要

不允许标签省略,开始标签和结束标签都不能省略。

可放入任何接受嵌入内容的元素。

DOM 接口 HTMLVideoElement

11 浏览器兼容性

url

Logo

一站式 AI 云服务平台

更多推荐