基于jPlayer三分屏的制作方法


Posted in Javascript onDecember 21, 2016

三分屏,这里的三分屏只是在一个播放器里同时播放三个视频,但是要求只有一个控制面板同时控制它们,要求它们共享一个时间轨道。这次只是简单的模拟了一下功能,并没有深入的研究。

首先,需要下载jPlayer,jPlayer是一个JavaScript写的完全免费和开源的jQuery多媒体库插件,我觉得他最大的好处就是兼容性,并且页面也简洁大方,个人比较喜欢。jPlayer可到其官网下载最新版本(http://www.jplayer.cn)。并且官网有开发文档和Demo,所以还是比较容易上手的。

关于简单的视频播放器和音频播放器这里不再赘述了,官网的Demo挺好的,这里直奔主题。

首先当然是引入jPlayer相关文件。

首先是css文件夹,这里为了方便,某些文件也放到css文件夹里了:

基于jPlayer三分屏的制作方法

然后是js文件夹:

基于jPlayer三分屏的制作方法

因为jPlayer是在jQuery的插件,所以jquery的包自然也就少不了了。

新建一个test.jsp页面,下面是代码:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8" />
  <title>JPlayer Test</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <!-- 引入相关文件 -->
  <link href="css/jplayer.blue.monday.css" rel="stylesheet" type="text/css" />
  <script type="text/javascript" src="js/jquery.min.js"></script>
  <script type="text/javascript" src="css/jquery.jplayer.min.js"></script>
  <script type="text/javascript" src="js/jplayer.playlist.min.js"></script>
  <script type="text/javascript" src="test.js"></script>
 </head>
<body>
<div class="wrapper">
 <div class="left-wrapper" style="float: left; width: 320px">
  <div id="jp_container_2" class="jp-video jp-video-360p">
   <div class="jp-type-single">
    <!-- 左上的屏幕 -->
    <div ondblclick="fullScreen()" id="jquery_jplayer_2" class="jp-jplayer"></div> 
    <!-- 左下的屏幕 -->
    <div ondblclick="fullScreen()" id="jquery_jplayer_3" class="jp-jplayer"></div>
   </div>
  </div> 
 </div>
 <div class="right-wrapper" style="float: left;">
  <div id="jp_container_1" class="jp-video jp-video-360p" style="border-bottom: none; border-left: none;">
   <div class="jp-type-single">
    <div ondblclick="fullScreen()" id="jquery_jplayer_1" class="jp-jplayer"></div>
    <div class="jp-gui" align="left">
     <div class="jp-video-play" style="margin-left: -160px">
      <button class="jp-video-play-icon">play</button>
     </div>
     
     <!-- 控制面板 -->
     <!-- width: 959px; margin-left: -320px; -->
     <div id="controller" class="jp-interface" style="border: 1px solid #009be3;">
      <div class="jp-progress">
       <div class="jp-seek-bar">
        <div class="jp-play-bar"></div>
       </div>
      </div>
      <div class="jp-current-time"> </div>
      <div class="jp-duration"> </div>
      <div class="jp-controls-holder">
       <div class="jp-controls">
        <button class="jp-play">play</button>
        <button class="jp-stop">stop</button>
       </div>
       <div class="jp-volume-controls">
        <button class="jp-mute">mute</button>
        <button class="jp-volume-max">max volume</button>
        <div class="jp-volume-bar">
         <div class="jp-volume-bar-value"></div>
        </div>
       </div>
       <div class="jp-toggles">
        <button class="jp-full-screen">full screen</button>
       </div>
      </div>
      <div class="jp-details">
       <div class="jp-title" aria-label="title"> </div>
      </div>
     </div>
    </div>
   </div>
  </div>
 </div>
</div>
</body>

</html>

新建一个test.js文件,下面是代码:

var flag = false;
var isFull = false;

$(document).ready(function() {
 // 实例化第一个视频
 $("#jquery_jplayer_1").jPlayer({
  ready: function() {
   $(this).jPlayer("setMedia", {
    title: "This is video Title",
    m4v: "http://www.jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v",
    /* m4v: "video/003.webm", */
    poster: "http://www.jplayer.org/video/poster/Big_Buck_Bunny_Trailer_480x270.png"
   });
  },
  swfPath: "../../dist/jplayer",
  supplied: "m4v",
  size: {
   width: "640px",
   height: "360px",
   cssClass: "jp-video-360p"
  },
  useStateClassSkin: true,
  autoBlur: false,
  smoothPlayBar: true,
  keyEnabled: true,
  remainingDuration: true,
  toggleDuration: true
 });
 
 // 实例化第二个视频
 $("#jquery_jplayer_2").jPlayer({
  ready: function() {
   $(this).jPlayer("setMedia", {
    title: "This is video Title",
    m4v: "http://www.jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v",
    /* m4v: "video/003.webm", */
    poster: "http://www.jplayer.org/video/poster/Big_Buck_Bunny_Trailer_480x270.png"
   });
  },
  swfPath: "../../dist/jplayer",
  supplied: "m4v",
  size: {
   width: "320px",
   height: "180px",
   cssClass: "jp-video-360p"
  },
  useStateClassSkin: true,
  autoBlur: false,
  smoothPlayBar: true,
  keyEnabled: true,
  remainingDuration: true,
  toggleDuration: true
 });
 
 // 实例化第三个视频
 $("#jquery_jplayer_3").jPlayer({
  ready: function() {
   $(this).jPlayer("setMedia", {
    title: "This is video Title",
    m4v: "http://www.jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v",
    /* m4v: "video/003.webm", */
    poster: "http://www.jplayer.org/video/poster/Big_Buck_Bunny_Trailer_480x270.png"
   });
  },
  swfPath: "../../dist/jplayer",
  supplied: "m4v",
  size: {
   width: "320px",
   height: "180px",
   cssClass: "jp-video-360p"
  },
  useStateClassSkin: true,
  autoBlur: false,
  smoothPlayBar: true,
  keyEnabled: true,
  remainingDuration: true,
  toggleDuration: true
 });

 // 绑定初始化事件,用于在页面加载的时候初始化控制条的位置
 $("#jquery_jplayer_1").bind($.jPlayer.event.ready, function(event) {
  $("#controller").css({
   width: "959px", 
   margin: "0px 0px 0px -320px"
  });
 });
 
 // 绑定页面大小变更事件,用于页面大小变化的时候,设置控制条的位置
 $("#jquery_jplayer_1").bind($.jPlayer.event.resize, function(event) {
  if (!isFull) {
   $("#controller").css({
    width: "100%", 
    margin: "0"
   });
   isFull = true;
  } else {
   $("#controller").css({
    width: "959px", 
    margin: "0px 0px 0px -320px"
   });
   isFull = false;
  }
 });
 
 // 绑定单击事件,用于单击屏幕控制视频的播放与暂停
 $('#jquery_jplayer_1, #jquery_jplayer_2, #jquery_jplayer_3').bind("click", function(){
  var $jplayer1 = $('#jquery_jplayer_1');
  var $jplayer2 = $('#jquery_jplayer_2');
  var $jplayer3 = $('#jquery_jplayer_3');
  var status = $jplayer1.data("jPlayer").status;
  if (status.paused) {
   $jplayer1.jPlayer("play");
   $jplayer2.jPlayer("play");
   $jplayer3.jPlayer("play");
  } else {
   $jplayer1.jPlayer("pause");
   $jplayer2.jPlayer("pause");
   $jplayer3.jPlayer("pause");
  }
 });
});

// 双击屏幕时,进入全屏状态
function fullScreen() {
 $("#jquery_jplayer_1").jPlayer("option", "fullScreen", true); 
}

以上就是全部信息,需要注意的是,进入全屏状态的时候,只有主屏幕进入全屏,其它两个小的屏幕并不会进入全屏状态。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
现如今最流行的JavaScript代码规范
Mar 08 Javascript
javascript修改IMG标签的src问题
Mar 28 Javascript
使用focus方法让光标默认停留在INPUT框
Jul 29 Javascript
学习JavaScript设计模式(继承)
Nov 26 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
Mar 27 jQuery
vue + element-ui实现简洁的导入导出功能
Dec 22 Javascript
Node.js爬取豆瓣数据实例分析
Mar 05 Javascript
对angularJs中ng-style动态改变样式的实例讲解
Sep 30 Javascript
在vue中利用v-html按分号将文本换行的例子
Nov 14 Javascript
Vue组件通信中非父子组件传值知识点总结
Dec 05 Javascript
vue绑定数字类型 value为数字的实例
Aug 31 Javascript
Nuxt的路由配置和参数传递方式
Nov 06 Javascript
js实现的简练高效拖拽功能示例
Dec 21 #Javascript
利用Bootstrap实现表格复选框checkbox全选
Dec 21 #Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
Dec 21 #Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
Dec 21 #Javascript
JS定时器用法分析【时钟与菜单中的应用】
Dec 21 #Javascript
vue.js实现仿原生ios时间选择组件实例代码
Dec 21 #Javascript
详解jQuery的表单验证插件--Validation
Dec 21 #Javascript
You might like
php 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
php对图像的各种处理函数代码小结
2013/07/08 PHP
PHP实现数字补零功能的2个函数介绍
2014/05/12 PHP
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
php学习笔记之面向对象
2014/11/08 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
python好玩的项目—色情图片识别代码分享
2017/11/07 Python
python快排算法详解
2019/03/04 Python
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
教师自我评价范文
2013/12/16 职场文书
幼儿园新学期寄语
2014/01/18 职场文书
房产代理公证处委托书
2014/04/04 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
找规律教学反思
2016/02/23 职场文书
python基础详解之if循环语句
2021/04/24 Python
python数字转对应中文的方法总结
2021/08/02 Python