基于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 对象的定义方法
Jan 10 Javascript
vs2003 js文件编码问题的解决方法
Mar 20 Javascript
jQuery当鼠标悬停时放大图片的效果实例
Jul 03 Javascript
js 表单提交后按钮变灰的实例代码
Aug 16 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
Nov 28 Javascript
jQuery实现新消息在网页标题闪烁提示
Jun 23 Javascript
Vue 项目部署到服务器的问题解决方法
Dec 05 Javascript
基于jquery的on和click的区别详解
Jan 15 jQuery
微信小程序如何获取手机验证码
Nov 04 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
May 03 Javascript
微信小程序通过js实现瀑布流布局详解
Aug 28 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
Jul 22 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写的带缓存数据功能的mysqli类
2012/09/06 PHP
php堆排序实现原理与应用方法
2015/01/03 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
微信开发 消息推送实现代码
2016/10/21 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python实现的Excel文件读写类
2015/07/30 Python
21行Python代码实现拼写检查器
2016/01/25 Python
Python实现常见的回文字符串算法
2018/11/14 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
python清空命令行方式
2020/01/13 Python
使用Python将图片转正方形的两种方法实例代码详解
2020/04/29 Python
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
俄罗斯外国汽车和国产汽车配件网上商店:Движком
2020/04/19 全球购物
传媒专业推荐信范文
2013/11/23 职场文书
关于建议书的格式范文
2014/05/20 职场文书