videojs

转自:https://www.awaimai.com/2053.html

 

 

1 初始化

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

1.1 标签方式

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

注意,两者缺一不可。

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

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

1.2 JS方式

另外一种初始化 video.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.js 重新载入视频文件。

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

例如这样的标签:

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

参考地址:

    1. http://codepen.io/davatron5000/pen/LskGD
    2. Video.js 4.9 - Now <audio> can join the party!
    3. 在网站中嵌入VideoJs视频播放器
    4. 如何禁止 iPhone Safari 视频自动全屏?
    5. New <video> Policies for iOS
    6. Video.js Show play button only when paused
    7. Reloading video.js player after changing source using jquery
    8. Show the current time of the video, instead of the remaining time on videojs

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

快速开始

感谢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发布下载或通过unpkgCDNjs等其他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使用技巧
https://www.awaimai.com/2053.html




转自:https://www.jianshu.com/p/16fa00a1ca8e
 

发布了69 篇原创文章 · 获赞 53 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/sinat_38992528/article/details/95347696