基于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 相关文章推荐
JQuery中对Select的option项的添加、删除、取值
Aug 25 Javascript
node.js中的fs.lstatSync方法使用说明
Dec 16 Javascript
javascript实现checkBox的全选,反选与赋值
Mar 12 Javascript
如何使用HTML5地理位置定位功能
Apr 27 Javascript
jquery实现表单验证简单实例演示
Nov 23 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
Jun 10 Javascript
JS获取地址栏参数的两种方法(简单实用)
Jun 14 Javascript
JavaScript中Form表单技术汇总(推荐)
Jun 26 Javascript
jQuery实现html双向绑定功能示例
Oct 09 jQuery
使用typescript开发angular模块并发布npm包
Apr 19 Javascript
layui radio点击事件实现input显示和隐藏的例子
Sep 02 Javascript
React中使用UMEditor的方法示例
Dec 27 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 目录遍历、删除 函数的使用介绍
2013/04/28 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
JS 操作符整理[推荐收藏]
2011/11/15 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
react native带索引的城市列表组件的实例代码
2017/08/08 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
Python入门篇之对象类型
2014/10/17 Python
python使用socket进行简单网络连接的方法
2015/04/29 Python
wxPython之解决闪烁的问题
2018/01/15 Python
Python enumerate索引迭代代码解析
2018/01/19 Python
对python中dict和json的区别详解
2018/12/18 Python
Python简易版停车管理系统
2019/08/12 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
python3中数组逆序输出方法
2020/12/01 Python
html5录音功能实战示例
2019/03/25 HTML / CSS
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
如何将整数int转换成字串String
2014/03/21 面试题
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
2016/02/10 面试题
会计自荐信范文
2014/03/09 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书