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

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

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

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

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

然后是js文件夹:

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

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

 <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>

 <!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">&nbsp;</div>
                         <div class="jp-duration">&nbsp;</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">&nbsp;</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);
 }

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

基于jPlayer的三分屏制作的更多相关文章

  1. 基于Ascensor.js全屏切换页面插件

    今天给大家分享一款基于Ascensor.js全屏切换页面插件,这款实例 适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览 ...

  2. 使用Camstudio和KeyCastOW来录屏制作软件Demo视频

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用Camstudio和KeyCastOW来录屏制作软件Demo视频.

  3. 基于jplayer实现歌词同步的JS音乐播放器效果

    分享一款基于jplayer实现歌词同步的JS音乐播放器效果.这是一款基于jQuery实现的音乐播放器功能代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <textare ...

  4. 基于InstallShield2013LimitedEdition的安装包制作

    在VS2012之前,我们做安装包一般都是使用VS自带的安装包制作工具来创建安装包的,VS2012.VS2013以后,微软把这个去掉,集成使用了InstallShield进行安装包的制作了,虽然思路差不 ...

  5. 基于tiny4412原生uboot修改制作SD启动并烧写到emmc

    最近入手tiny4412的标准板,底板SDK型号为1506.但是因为友善之臂提供的superboot不能进入boot菜单,此时我就不能通过tftp下载内核和通过nfs挂载根文件系统,于是想自己做个ub ...

  6. go五笔——基于Google在线五笔制作

    go五笔 v0.0.2 加入新世纪版 86版收录几个不常用汉字,其它无更新 下载 86版64位密码: qe7k 86版32位密码: y25a 06版64位密码: d2ug 06版32位密码: bxxz ...

  7. 团队软件开发_基于windows下截屏软件关于NABC框架的特点

    经过我们小组数次的激烈讨论,就自己的能力和时间而言,我们小组的初步的计划是开发一款基于windows下的截图软件. 关于这个软件的功能,我们初步的想法如下: 1.能在windows下后台运行,有相应的 ...

  8. 如何录屏制作gif图片

    LICEcap简介: LICEcap是一款屏幕录制制作gif图片的工具,支持导出 GIF 动画图片格式,轻量级.使用简单,录制过程中可以随意改变录屏范围. LICEcap 直观易用,功能灵活,支持 W ...

  9. Dockerfile简介及基于centos7的jdk镜像制作

    Dockerfile简介 dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像, 另外,使用Dockerfile去构建镜像好比使用pom去构建m ...

随机推荐

  1. Ubuntu-安装-theano+caffe-超详细教程

    一.说明 本文是继<Ubuntu-安装-cuda7.0-单显卡-超详细教程> 之后的续篇.theano和caffe是深度学习库,对运算能力需求很大,最好使用cuda进行加速.所以,请先阅读 ...

  2. [c++] Associative Containers

    关联容器 和 顺序容器 的本质差别在于: 关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素. Reference: http://www.cnblogs.c ...

  3. Foundation 6 – 先进的响应式的前端开发框架

    Foundation 6 让您的项目从原型到成平比以往任何时候都更有效!它包括了广泛的模块和灵活的组件.这些多功能就像轻便的积木,可以很容易地把你的想法实现.所有的代码片段支持ARIA属性和作用以及如 ...

  4. Furatto – 轻量,友好的响应式前端开发框架

    Furatto 是一个基于 Bootstrap & Foundation 的前端开发框架,用于快速开发网站.这个框架采用流行的扁平化设计和响应式设计.除了布局和网格之外,所有的主要元素都有预定 ...

  5. 【GIT】使用Git命令窗口将本地工程提交至远程GitHub

    目标: 1.解决的问题是如何通过Git命令窗口将本地工程提交至GitHub. 2.方便园友的同时也方便自己以后解决此类问题. 步骤: 1.首先登陆GitHub网站https://github.com/ ...

  6. Windows Azure Virtual Machine (27) 使用psping工具,测试Azure VM网络连通性

    <Windows Azure Platform 系列文章目录> 微软Azure在设计架构的时候,从安全角度考虑,是禁用ICMP协议的.所以对于Azure VM,是无法使用ping命令的. ...

  7. String.split()用法以及特殊分隔符注意,ps:|

    转载:http://www.cnblogs.com/mingforyou/archive/2013/09/03/3299569.html 在java.lang包中有String.split()方法,返 ...

  8. JAVA 设计模式 迭代器模式

    用途 迭代器模式 (Iterator) 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示. 迭代器模式是一种行为型模式. 结构

  9. iframe的内容增高或缩减时设置其iframe的高度的处理方案

    WEB管理软件往往是如下结构的 用户点击子页tab切换中部的显示内容,在切换过程中需要保证前面的子页保持先前的状态.这种情况一般都使用iframe来来作为切换的子页显示内容. 但是这里有一个问题,if ...

  10. 索引深入浅出(4/10):非聚集索引的B树结构在聚集表

    一个表只能有一个聚集索引,数据行以此聚集索引的顺序进行存储,一个表却能有多个非聚集索引.我们已经讨论了聚集索引的结构,这篇我们会看下非聚集索引结构. 非聚集索引的逻辑呈现 简单来说,非聚集索引是表的子 ...