您现在的位置: 365建站网 > 365学习 > HTML5的网络视频播放器video.js的用法

HTML5的网络视频播放器video.js的用法

文章来源:365jz.com     点击数:822    更新时间:2018-07-23 09:55   参与评论

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

vedio.js 是一款视频播放插件,它会自动检测浏览器对 HTML5 的支持情况,如果不支持 HTML5 则自动使用 Flash 播放器。

快速开始

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

<link href="//vjs.zencdn.net/5.19/video-js.min.CSS" rel="stylesheet">
<script src="//vjs.zencdn.net/5.19/video.min.js"></script>

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

vjs.zencdn.netCDN托管版本的Video.js中,我们包含一个精简的Google Analytics(分析)像素,用于跟踪从CDN加载的随机抽样(当前为1%)的玩家。这使我们能够(粗略地)看到哪些浏览器正在使用,以及其他有用的指标,如操作系统和设备。如果您想停用分析功能,则可以在通过免费CDN添加Video.js之前简单包含以下全局内容:

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

或者,您可以通过从npm获取Video.js ,从GitHub发布下载或通过unpkg或CDNjs等其他JavaScript CDN获取Video.js。这些版本不包括Google Analytics跟踪。

<!-- unpkg -->
<link href="https://unpkg.com/video.js/dist/video-js.css" rel="stylesheet">
<script src="https://unpkg.com/video.js/dist/video.js"></script>
<!-- cdnjs -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/video.js/6.3.3/video-js.css" ref="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/video.js/6.3.3/video.js"></script>

接下来,使用video.js与创建<video>元素一样简单,但是有一个附加的data-setup属性,该属性必须有个值{},可以包含任何Video.js 选项 - 只要确保它包含有效的JSON!

<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>

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

如果你不想使用自动设置,你可以忽略data-setup属性,并用videojs函数初始化<video>元素.

该videojs函数还接受一个options对象和一个回调,当播放器准备好时,回调函数将被调用。

var options = {};var player = videojs('my-player', options, function onPlayerReady() {
  videojs.log('Your player is ready!');  // In this context, `this` is the player that was created by Video.js.
  this.play();  // How about an event listener?
  this.on('ended', function() {
    videojs.log('Awww...over so soon?!');
  });
});

language

videojs使用json对象来描述语言,对象的键为英语,对应的值是目标语言。翻译在lang/目录下,文件名称是标准语言代码,例如es.json是西班牙语.
除了video.js提供的独立脚本,API支持通过addLanguage方法手动定义新语言。其需要两个参数 标准语言代码, 语言定义对象

videojs.addLanguage('es', {
  Play: 'Reproducción',
  Pause: 'Pausa',  'Current Time': 'Tiempo reproducido',  'Duration Time': 'Duración total',  'Remaining Time': 'Tiempo restante',
  ...
});

如果对象包含以前翻译过的字符串,addLanguage()将覆盖现有的翻译。然而,已经本地化的文本将不会在生成之后更新。

使用

videojs的有多个翻译在lang目录下,为需要支持的每种语言添加lang脚。

<script src="//example.com/path/to/video.min.js"></script>
<script src="//example.com/path/to/lang/es.js"></script>

除了向Video.js本身提供语言外,Player还可以通过以下languages选项为各个实例提供自定义语言支持:

// Provide a custom definition of Spanish to this player.videojs('my-player', {
  languages: {
    es: {
      Play: 'Reproducir'
    }
  }
});

设置播放器语言

播放器使用的语言可以通过language选项来设置

// Set the language to Spanish for this player.videojs('my-player', {
  language: 'es'});

该播放器的语言方法可用于在实例化后设置语言('es')。但是,这通常是没有用的,因为它不更新已经存在的文本。

确定播放器语言

播放器语言通过以下优先级确定:

  • 选项中指定的语言

  • 在播放器元素上由lang属性指定的

  • 由最近的带lang属性的父元素指定的语言,向上包括<html>元素。

  • 浏览器语言偏好设置;如果配置多个,则使用第一个语言。

  • 英语

内部语言选择

语言代码被认为是不区分大小写的(例如en-US== en-us)。
如果没有与子代码(例如en-us)匹配的语言代码,则使用可用的匹配的主代码(例如en)。

videojs使用技巧


 初始化

Video.js初始化有两种方式。

1.1 标签方式

一种是在<video>标签里面加上class="video-js"data-setup='{}'属性。

注意,两者缺一不可。

刚开始的时候觉得后面的值为空对象{},不放也行,

导致播放器加载不出来,后来加上来就可以了。

1.2 JS方式

另外一种方法是通过JS初始化,格式:

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

这样有个要求,就是不能配置data-setup,并且需要传入<video>的id。

当然,如果不想一个个初始化,可以这样:

(function(){
    var videos = document.getElementsByTagName('video');
    for(i=0; i<videos.length; i++) {
        var video = videos[i];
        if(video.className.indexOf('video-js') > -1) {
            videojs(video.id).ready(function(){
            });
        }
    }
})();

2 播放按钮居中

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

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

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

像这样:

class="video-js vjs-big-play-centered"

3 支持<audio>音乐标签

video.js 4.9开始支持<audio>标签,与video不同的是:播放audio时封面不会消失。

但是上面的播放框还是一直在的,配置方式和<video>标签一样,也必须要配置data-setup参数。

4 禁止在iPhone safari中自动全屏

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

<video playsinline ></video>

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

5 暂停时显示播放按钮

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

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

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

其实用CSS就可以搞定了:

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

是不是很轻便很简单 :)

6 播放按钮变○圆形

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

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

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

.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;
}

因为原来居中的时候宽度和高度改变了,所以margin的值也要相应改变

7 点击屏幕播放/暂停

这个是视频播放的时候用得较多的功能,解决方法如下。

.video-js.vjs-playing .vjs-tech {    pointer-events: auto;}

pointer-events是CSS的一个属性,用来控制鼠标的动作,具体可参考《CSS里的pointer-events属性》。

8 重载视频文件

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

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

例如这样的标签:

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

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

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();
});

或者:

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

9 进度显示当前播放时间

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

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

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


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (822人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------