video.js视频播放器使用说明

简介

video.js是一款基于HTML5的网络视频播放器。它支持HTML5和Flash视频,以及YouTube和Vimeo(通过插件)。支持在桌面和移动设备上播放视频。这个项目从2010年中期开始,现已经在40多万个网站上使用。

快速开始

感谢Fastly的杰出人士,任何人都可以使用免费的CDN托管版Video.js。将这些标签添加到您的文档中<head>

1
2
<link href="//vjs.zencdn.net/7.2/video-js.min.css" rel="stylesheet">
<script src="//vjs.zencdn.net/7.2/video.min.js"></script>

有关要使用的最新版本的video.js和URL,请查看我们网站上的入门页面。

Video.js的旧版本(6及更早版本)中,在vjs.zencdn.net CDN托管版本中,我们包含一个剥离的Google Analytics像素,该像素跟踪从CDN加载的播放器的随机采样(当前为1%)。这使得我们可以看到(粗略地)浏览器在野外的使用,以及其他有用的指标,如OS和设备。如果你想禁用Analytics,你可以简单地包括下面的全局,然后通过免费的CDN包括VIDEO.JS

1
<script>window.HELP_IMPROVE_VIDEOJS = false;</script>

或者,可以通过从npm获取Video.js、从GitHub发行版下载或通过unpkg或其他JavaScript CDN(如CDN js)包含Video.js。这些版本根本不包括谷歌分析跟踪。

1
2
3
4
5
6
7
8
9
10
11
<!-- unpkg : use the latest version of Video.js -->
<link href="https://unpkg.com/video.js/dist/video-js.min.css" rel="stylesheet">
<script src="https://unpkg.com/video.js/dist/video.min.js"></script>

<!-- unpkg : use a specific version of Video.js (change the version numbers as necessary) -->
<link href="https://unpkg.com/video.js@6.11.0/dist/video-js.min.css" rel="stylesheet">
<script src="https://unpkg.com/video.js@6.11.0/dist/video.min.js"></script>

<!-- cdnjs : use a specific version of Video.js (change the version numbers as necessary) -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/video.js/6.7.3/video-js.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/video.js/6.7.3/video.min.js"></script>

接下来,使用Video.js和创建一个<video>元素一样简单,但是还有一个附加的data-setup属性。至少,这个属性的值必须为'{}',但是它可以包括任何Video.js options——只要确保它包含有效的JSON!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<video
id="my-player"
class="video-js"
controls
preload="auto"
poster="//vjs.zencdn.net/v/oceans.png"
data-setup='{}'>
<source src="//vjs.zencdn.net/v/oceans.mp4" type="video/mp4"></source>
<source src="//vjs.zencdn.net/v/oceans.webm" type="video/webm"></source>
<source src="//vjs.zencdn.net/v/oceans.ogv" type="video/ogg"></source>
<p class="vjs-no-js">
To view this video please enable JavaScript, and consider upgrading to a
web browser that
<a href="http://videojs.com/html5-video-support/" target="_blank">
supports HTML5 video
</a>
</p>
</video>

当页面加载时,视频.js会找到这个元素并自动设置一个播放器。

如果不想使用自动设置,则可以停止data-setup属性,并使用videojs函数手动初始化videojs元素:

1
var player = videojs('my-player');

videojs函数还接受一个options对象和一个在玩家准备就绪时调用的回调函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
var options = {};

var player = videojs('my-player', options, function onPlayerReady() {
videojs.log('Your player is ready!');

// 在这个上下文中,‘这个’是由 Video.js.
this.play();

// 一个事件侦听器怎么样?
this.on('ended', function() {
videojs.log('Awww...over so soon?!');
});
});

如果你已经准备好潜水了,入门页面和文档是获取更多信息的最佳场所。如果你被卡住了,去我们的(松弛通道)[http://slack.videojs.com/]

设置语言

videojs的有多个翻译在lang目录下,设置支持中文,引入lang/zh-CN.js文件。

1
<script src="http://vjs.zencdn.net/7.2/lang/zh-CN.js"></script>

播放按钮居中

video.js默认的播放按钮在左上角,应该是video.js开发人员认为放中间会遮挡内容,所以没放中间。

不过我们常见的一般都在中间,比较符合习惯。

这是可以通过参数修改的,在<video>标签中加入vjs-big-play-centered类,就可以了。

像这样:

1
class="video-js vjs-default-skin vjs-big-play-centered"

暂停时显示播放按钮

video.js在未播放时,会显示一个大的播放按钮,上面我们提到如何让他居中。

那么,如何在视频暂停时也显示这个播放按钮呢?

有很多用JS的解决办法,感觉都挺麻烦的。

其实用CSS就可以搞定了:

1
2
3
4
.vjs-paused .vjs-big-play-button,
.vjs-paused.vjs-has-started .vjs-big-play-button {
display: block;
}

播放按钮变○圆形

video.js默认的播放按钮是圆角矩形,

我们一般更熟悉播放按钮为圆形的:

那么怎么改呢?还是用CSS来解决。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
.video-js .vjs-big-play-button{
font-size: 2.5em;
line-height: 2.3em;
height: 2.5em;
width: 2.5em;
-webkit-border-radius: 2.5em;
-moz-border-radius: 2.5em;
border-radius: 2.5em;
background-color: #73859f;
background-color: rgba(115,133,159,.5);
border-width: 0.15em;
margin-top: -1.25em;
margin-left: -1.75em;
}
/* 中间的播放箭头 */
.vjs-big-play-button .vjs-icon-placeholder {
font-size: 1.63em;
}
/* 加载圆圈 */
.vjs-loading-spinner {
font-size: 2.5em;
width: 2em;
height: 2em;
border-radius: 1em;
margin-top: -1em;
margin-left: -1.5em;
}

进度显示当前播放时间

video.js默认倒序显示时间,也就是视频播放的剩余时间。

要显示当前的播放时间,以及总共视频时长,加2行CSS解决:

1
2
.video-js .vjs-time-control{display:block;}
.video-js .vjs-remaining-time{display: none;}

重载视频文件

总有那么一些情形,我们需要重新载入视频文件。

比如,马上播放刚上传的文件。

例如这样的标签:

1
2
3
4
<video id="example_video">
<source id="videoMP4" src="1.mp4" />
</video>
<button id="reload">重载</button>

video.js中,用现成的js方法就可以实现:

1
2
3
4
5
6
7
8
var video = document.getElementById('example_video');
var source = document.getElementById('videoMP4');
$("#reload").click(function() {
video.pause()
source.setAttribute('src', '2.mp4');
video.load();
video.play();
});

或者:

1
2
3
4
5
6
7
var video = document.getElementById('example_video');
$("#reload").click(function() {
video.pause()
video.setAttribute('src', '2.mp4');
video.load();
video.play();
});

禁止在iPhone safari中自动全屏

方法如下,在<video>标签中加入playsinline参数,

1
<video playsinline ></video>

注意,在iOS10之前用的是webkit-playsinline


参考地址: