点击下载教程相关资源
Video.js 旨在增强 HTML5 中的视频元素,多年来,其嵌入代码一直只是一个 <video> 元素。然后,Video.js 将视频元素封装在一个 div 中,用于放置控件和播放器所需的其他内容。
在很长一段时间里,这已经足够了。在 2016 年,Video.js 添加了“div ingest”,它允许开发者为 Video.js 提供一个播放器 div 供其使用,而不用自己制作。这一方面是为了帮助内容回流,另一方面也是为了帮助 iOS,因为在 iOS 中有时需要对视频元素进行预处理,而我们在创建播放器 div 时会重新创建视频元素。然而,将 <video> 元素与包装在其周围 <div> 一起嵌入会有些奇怪。因此,我们构建了一个新的嵌入,<video-js> 嵌入。
下面详细介绍了三种嵌入方式:
经典的 Video.js 嵌入。您可以通过 data-setup 或 videojs 方法对其进行初始化。
data-setup 方式:
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Video.js</title> <!-- 引入 Video.js 样式 --> <link href="https://vjs.zencdn.net/8.10.0/video-js.css" rel="stylesheet" /> <!-- 如果您想支持 IE8(适用于 v7 之前的 Video.js 版本) --> <!-- <script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script> --> </head> <body> <!-- 通过 data-setup --> <video id="vid1" data-setup='{"preload":"auto","controls":true,"width":"640","height":"264px","poster":"../resources/oceans.jpg"}'> <source src="../resources/oceans.mp4" type="video/mp4" /> <source src="../resources/oceans.webm" type="video/webm" /> </video> <!-- 引入 Video.js 库 --> <script src="https://vjs.zencdn.net/8.10.0/video.min.js"></script> </body> </html>
videojs 方式:
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Video.js</title> <!-- 引入 Video.js 样式 --> <link href="https://vjs.zencdn.net/8.10.0/video-js.css" rel="stylesheet" /> <!-- 如果您想支持 IE8(适用于 v7 之前的 Video.js 版本) --> <!-- <script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script> --> </head> <body> <!-- 通过 videojs --> <video id="vid1"> <source src="../resources/oceans.mp4" type="video/mp4" /> <source src="../resources/oceans.webm" type="video/webm" /> </video> <!-- 引入 Video.js 库 --> <script src="https://vjs.zencdn.net/8.10.0/video.min.js"></script> <script> const player = videojs('vid1', { preload: "auto", controls: true, width: "640", height: "264px", poster: "../resources/oceans.jpg" }); </script> </body> </html>
增强型经典嵌入。您也可以通过 data-setup 或 videojs 方法对其进行初始化。例如:
data-setup 方式:
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Video.js</title> <!-- 引入 Video.js 样式 --> <link href="https://vjs.zencdn.net/8.10.0/video-js.css" rel="stylesheet" /> <!-- 如果您想支持 IE8(适用于 v7 之前的 Video.js 版本) --> <!-- <script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script> --> </head> <body> <!-- 通过 data-setup --> <div data-vjs-player> <video id="vid1" data-setup='{"preload":"auto","controls":true,"width":"640","height":"264px","poster":"../resources/oceans.jpg"}'> <source src="../resources/oceans.mp4" type="video/mp4" /> <source src="../resources/oceans.webm" type="video/webm" /> </video> </div> <!-- 引入 Video.js 库 --> <script src="https://vjs.zencdn.net/8.10.0/video.min.js"></script> </body> </html>
videojs 方式:
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Video.js</title> <!-- 引入 Video.js 样式 --> <link href="https://vjs.zencdn.net/8.10.0/video-js.css" rel="stylesheet" /> <!-- 如果您想支持 IE8(适用于 v7 之前的 Video.js 版本) --> <!-- <script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script> --> </head> <body> <!-- 通过 videojs --> <div data-vjs-player> <video id="vid1"> <source src="../resources/oceans.mp4" type="video/mp4" /> <source src="../resources/oceans.webm" type="video/webm" /> </video> </div> <!-- 引入 Video.js 库 --> <script src="https://vjs.zencdn.net/8.10.0/video.min.js"></script> <script> const player = videojs('vid1', { preload: "auto", controls: true, width: "640", height: "264px", poster: "../resources/oceans.jpg" }); </script> </body> </html>
如您所见,它与经典的 <video> 嵌入并无太大区别,它还能让您更轻松地使用 React。
它看起来非常像 <video> 嵌入,但不是 video,而是 video-js 嵌入。这对播放器 div 摄录的所有功能都很有用,而且与我们的库名相匹配。例如:
data-setup 方式:
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Video.js</title> <!-- 引入 Video.js 样式 --> <link href="https://vjs.zencdn.net/8.10.0/video-js.css" rel="stylesheet" /> <!-- 如果您想支持 IE8(适用于 v7 之前的 Video.js 版本) --> <!-- <script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script> --> </head> <body> <!-- 通过 data-setup --> <video-js id="vid1" data-setup='{"preload":"auto","controls":true,"width":"640","height":"264px","poster":"../resources/oceans.jpg"}'> <source src="../resources/oceans.mp4" type="video/mp4" /> <source src="../resources/oceans.webm" type="video/webm" /> </video-js> <!-- 引入 Video.js 库 --> <script src="https://vjs.zencdn.net/8.10.0/video.min.js"></script> </body> </html>
videojs 方式:
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Video.js</title> <!-- 引入 Video.js 样式 --> <link href="https://vjs.zencdn.net/8.10.0/video-js.css" rel="stylesheet" /> <!-- 如果您想支持 IE8(适用于 v7 之前的 Video.js 版本) --> <!-- <script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script> --> </head> <body> <!-- 通过 videojs --> <video-js id="vid1"> <source src="../resources/oceans.mp4" type="video/mp4" /> <source src="../resources/oceans.webm" type="video/webm" /> </video-js> <!-- 引入 Video.js 库 --> <script src="https://vjs.zencdn.net/8.10.0/video.min.js"></script> <script> const player = videojs('vid1', { preload: "auto", controls: true, width: "640", height: "264px", poster: "../resources/oceans.jpg" }); </script> </body> </html>
此嵌入无需再添加“video-js”class ,因为它会自动添加缺失的 class“video-js”。
根据 "Can I Use (https://caniuse.com/#feat=custom-elementsv1)",本地自定义元素的支持相对较少,而且由于我们不想包含多层填充,所以我们只使用了一个名为 video-js 的元素,而不是一个完整的自定义元素。
这是一种易于使用的方法,可让 Video.js 自动设置播放器。它是一个 HTML 属性,以播放器选项的 JSON 字符串表示值,使用编程方法可能更好。例如:
<!-- 通过 data-setup --> <video-js id="vid1" data-setup='{"preload":"auto","controls":true,"width":"640","height":"264px","poster":"../resources/oceans.jpg"}'> <source src="../resources/oceans.mp4" type="video/mp4" /> <source src="../resources/oceans.webm" type="video/webm" /> </video-js>