video.js学习笔记

  在开发的项目中,有视频播放这个功能,找了好多前端的插件,最后决定时用video.js 。

  什么是video.js?

  video.js是一个开源的HTML5  jquery 视频插件,这个插件可以用来处理Flash 视频,也可以很好的支持H5,它还是一个多平台支持的产品。

  video.js的优点

  • 它是开源免费的,可以在github很容易的获取到最新的源码。
  • 使用起来非常容易,只要花几秒中就可以夹起一个视频播放页面。
  • 它几乎兼容所有的浏览器,并且优先使用HTML5,在不支持的浏览器中,会自动生成Falsh进行播放。
  • 纯js和css打造,使用最广泛的前端视频播放插件,说明文档详细,学习起来比较容易。

  话不多说,代码里面的注释都很全,video.js中的api我也是了解的不是很多,在以后的具体项目中再学习记录。

  

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>video.js 学习2017-7-28</title>
    <!-- <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> -->
    <link href="css/video-js.css" rel="stylesheet">
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    <script src="http://vjs.zencdn.net/5.18.4/video.min.js"></script>
    <!-- 如果要支持 IE8 -->
    <!-- <script src="http://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script> -->
    <style media="screen">
    .video-div{
      width: 400px;
      height: 200px;
      margin: 80px auto;
    }
    .video-js .vjs-tech {
      /*这行代码最为关键,这样视频播放器的外层容器都由视频内容本身撑大*/
      position: relative;
    }
    /* 设置暂停时中间的显示的播放按钮! */
      vjs-paused .vjs-big-play-button,
      .vjs-paused.vjs-has-started .vjs-big-play-button {
      display: block;
      }
      /* 设置video 圆角 */
      #myVideo1{
        border-radius: 10px;
      }
      /* 设置播放按钮,矩形变 圆形 */
      .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;
      }
       /**/
      .vjs-has-started .vjs-control-bar{
        border-bottom-left-radius: 10px;
        border-bottom-right-radius: 10px;
      }

    </style>
  </head>
  <body>
    <div>
      我是文字
    </div>
    <div class="video-div">
      <!-- controls 设置或返回视频应该显示的控件,比如:暂停、播放 html5的新特性  -->
      <!--
        preload 是否在页面加载后再入视频  html5新特性
        preload="auto" 当页面加载后载入整个视频
        preload="meta" 当页面加载后载入元数据
        preload="none" 当页面加载后不载入视频
      -->
      <!--
       poster 视频加载时显示的图像,或者在用户点击播放之前显示的图片
       如果未设置,使用视频的第一帧来代替  html5新特性
       poster="URL";
       -->
       <!--
       必须项
       data-setup: 是json的数据格式,页面准备完成时自动加载,如果要强制在pc端使用 flash播放,
       则有两种途径:1.通过 html的 data-setup=‘{ "techOrder":["flash", "html5"] }‘
       2.通过js video("myVideo1",{"techOrder":["flash", "html5"]},function(){
       // 第一个参数:video的id  二. 设置当前data-setup属性,也可以为 {}, 三. 执行的方法
         })
      -->
      <!--
      class说明:
      video-js 应用所需的 Video.js 功能,如全屏和字幕样式。 必须项
      vjs-default-skin 为 HMTL 控制条应用默认的皮肤,可以被移除或重写,以创建你自己的控制条样式。
       -->
       <!--
       source 标签为媒介元素(video、audio)定义媒介资源
       标签允许您规定可替换的视频/音频文件供浏览器根据它对媒体类型或者编解码器的支持进行选择。
       属性:
       src :规定媒介文件的URl
       type:规定媒体资源的 MIME 类型。
       preload="meta"
        -->
      <video id="myVideo1" controls preload="auto"  data-setup="{}"  poster="00.jpg"
        class="video-js vjs-default-skin vjs-big-play-centered" width="400" height="200">
        <!-- 没有设置长和高 默认 1920 * 1080 -->
        <!-- source 默认加载 一个文件资源 -->
        <source src="1.mp4" type="video/webm">
        <source src="2.mp4" type="video/mp4">
        <!-- <source src="1.webm" type="video/webm">
        <source src="1.ogv" type=‘video/ogg‘ /> -->
      </video>
    </div>
    <div>
      参看文献
        <a href="http://www.awaimai.com/2053.html"></a>
        <a href="http://blog.csdn.net/ly115176236/article/details/50977127"></a>
        <a href="http://blog.csdn.net/huang100qi/article/details/53405876"></a>
        <a href="http://www.cnblogs.com/ShaYeBlog/p/7068188.html"></a>
        <a href="http://www.cnblogs.com/alicePanZ/articles/5676915.html"></a>
        <a href="http://www.cnblogs.com/xinlinux/p/4365188.html"></a>
        <a href="http://www.awaimai.com/2053.html"></a>
        <a href="http://www.cnblogs.com/afrog/p/6689179.html"></a>

    </div>
    <div>
      <p> 常用api </p>
      //播放与暂停播放
         myPlayer.play();
        myPlayer.pause();
        //设置/获取视频的当前播放时间
        myPlayer.currentTime();
         myPlayer.currentTime(120);
        //视频总的时常
        myPlayer.duration();
        //获取或设置播放器的视频源
        myPlayer.src();
        myPlayer.src(‘www.baidu.mp4‘)
        //获取或者设置视频播放器的poster 图片
        myPlayer.poster();
        myPlayer.poster(‘xxx.jpg‘);
    </div>
  </body>
  <!-- 设置Falsh播放器的路径,如果浏览器不支持H5,将会使用Falsh: -->
    <script type="text/javascript">
        videojs.options.flash.swf = "static/video-js/video-js.swf";
     </script>
  <script>
  // 初始化所有的video 标签
  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(){
            });
        }
    }

  // 获取视频播放器
  var myPlayer = videojs("myVideo1",{
    "controls": true,
    "autoplay": false,
    "preload": "auto",
    "loop": false,
    controlBar: {
    // captionsButton: false,//用于切换和选择字幕的按钮组件
    chaptersButton: false,//导航与其他语言的其他轨道
    playbackRateMenuButton: true, //用于控制播放速率的组件
    LiveDisplay: true, //显示实时指示器
    subtitlesButton: false, //用于切换和选择字幕的按钮组件
    remainingTimeDisplay: true,//显示视频中剩余的时间
    progressControl: false, // 禁止出现进度条
    //竖着的音量条
    // volumeMenuButton: {
    // inline: false,
    // vertical: true
    // },
    fullscreenToggle: true //切换全屏视频
  },
  mydata: {
             username: ‘xiaoming‘
         }
  },function(){
    myPlayer.pause(); // 暂停
  })
  // 用js设置资源文件
  // var myPlayer = videojs(‘my-player‘, {
  //   sources: [{
  //     src: ‘//path/to/video.mp4‘,
  //     type: ‘video/mp4‘
  //   }, {
  //     src: ‘//path/to/video.webm‘,
  //     type: ‘video/webm‘
  //   }]
  // });
  //  videojs("myVideo1").ready(function(){
  //    var myPlayer = this;
  //    //myPlayer.play();  //  播放
  //   myPlayer.pause(); // 暂停
  //   var whereYouAt = myPlayer.currentTime();
  //   console.log(whereYouAt);
  //   });
  // 事件关注
   myPlayer.on("play",function(){
     console.log("a");
     var a = myPlayer.currentTime();
    console.log(a);
     // 我是开始播放时的事件
   });
   myPlayer.on("pause",function(){
     // 我是暂停时的事件
   })
   myPlayer.on("ended",function(){
     // 我是结束播放时的事件
   });
  </script>
</html>

时间: 2024-11-03 21:06:57

video.js学习笔记的相关文章

Vue.js学习笔记:在元素 和 template 中使用 v-if 指令

f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <script src="https://cdn.bootcss.com/vue/2.2.

[Pro Angular.JS]学习笔记1.1:设置开发环境

可以使用yeoman.io,很方便.我已经写了一篇随笔,介绍如何使用.这里也有一篇介绍的文章:http://www.cnblogs.com/JoannaQ/p/3756281.html 代码编辑器,在Mac下用了一下WebStorm,太恶心了.另外发现书的作者使用的开发环境是Windows + VS Express 2013,为了方便学习,我也使用VS Express 2013 Update2.VS2013用起来蛮舒服的,把WebStorm比得跟驼屎一样.也许是因为我没用习惯吧. 1.安装Nod

【转】Backbone.js学习笔记(二)细说MVC

文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Backbone源码结构 1: (function() { 2: Backbone.Events // 自定义事件 3: Backbone.Model // 模型构造函数和原型扩展 4: Backbone.Collection // 集合构造函数和原型扩展 5: Backbone.Router // 路由

Angular JS 学习笔记

特定领域语言 编译器:遍历DOM来查找和它相关的属性, 分为编译和链接两个阶段, 指令:当关联的HTML结构进入编译阶段时应该执行的操作,可以写在名称里,属性里,css类名里:本质上是函数 稳定的DOM:绑定了数据模型的DOM元素的实例不会在绑定的生命周期发生改变 作用域:用来检测模型的改变和为表达式提供执行上下文的 AngularJS 和其它模板系统不同,它使用的是DOM而不是字符串 指令: 由某个属性.元素名称.css类名出现而导致的行为,或者说是DOM的变化 Filter过滤器:扮演着数据

Node.js学习笔记(3) - 简单的curd

这个算是不算完结的完结吧,前段时间也是看了好久的Node相关的东西,总想着去整理一下,可是当时也没有时间: 现在看来在整理的话,就有些混乱,自己也懒了,就没在整理,只是简单的记录一下 一.demo的简单介绍 这次demo,只涉及到简单的curd操作,用到的数据库是mongo,所以要安装mongo数据库,数据库连接驱动是mongoose: 当然关于mongo的驱动有很多,比如mongous mongoskin等:(详见http://cnodejs.org/topic/4f4ca8e0940ce2e

JS学习笔记-OO疑问之封装

封装是面向对象的基础,今天所要学习的匿名函数与闭包就是为了实现JS的面向对象封装.封装实现.封装变量,提高数据.系统安全性,封装正是面向对象的基础. 匿名函数 即没有名字的函数,其创建方式为 function(){...} 单独存在的匿名函数,无法运行,可通过赋值给变量调用或通过表达式自我执行来实现运行. 1.赋值给变量为一般的函数使用方式 var run = function(){ return '方法运行中'; }; alert(run()); 2.通过表达式自我执行 (function(a

每日js学习笔记2014.5.4

<script language="javascript">var mystring = "这是第一个正则表达式的例子";var myregex = new RegExp("这是"); //创建正则表达式if (myregex.test(mystring)) //test的功能是查找字符串中是否有匹配项,有则返回true,没有则返回false{ document.write ("找到了指定的模式");}else{

每日js学习笔记2014.5.5

<script language="javascript"><!-- var textstr = prompt("请输入一个字符串:",""); //prompt的用法,包含两个参数 var regex = /[A-Z][a-z]tion/; //[A-Z]有无匹配项 var result = regex.test(textstr); //test的用法 document.write ("<font size='

JS学习笔记-OO疑问之对象创建

问一.引入工厂,解决重复代码 前面已经提到,JS中创建对象的方法,不难发现,基本的创建方法中,创建一个对象还算简单,如果创建多个类似的对象的话就会产生大量重复的代码. 解决:工厂模式方法(添加一个专门创建对象的方法,传入参数避免重复) function createObject(name,age){ var obj =new Object(); //创建对象 obj.name = name; obj.age = age; obj.run = function(){ return this.nam