基于jPlayer的三分屏制作
三分屏,这里的三分屏只是在一个播放器里同时播放三个视频,但是要求只有一个控制面板同时控制它们,要求它们共享一个时间轨道。这次只是简单的模拟了一下功能,并没有深入的研究。
首先,需要下载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"> </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);
}
以上就是全部信息,需要注意的是,进入全屏状态的时候,只有主屏幕进入全屏,其它两个小的屏幕并不会进入全屏状态。
基于jPlayer的三分屏制作的更多相关文章
- 基于Ascensor.js全屏切换页面插件
今天给大家分享一款基于Ascensor.js全屏切换页面插件,这款实例 适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览 ...
- 使用Camstudio和KeyCastOW来录屏制作软件Demo视频
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用Camstudio和KeyCastOW来录屏制作软件Demo视频.
- 基于jplayer实现歌词同步的JS音乐播放器效果
分享一款基于jplayer实现歌词同步的JS音乐播放器效果.这是一款基于jQuery实现的音乐播放器功能代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <textare ...
- 基于InstallShield2013LimitedEdition的安装包制作
在VS2012之前,我们做安装包一般都是使用VS自带的安装包制作工具来创建安装包的,VS2012.VS2013以后,微软把这个去掉,集成使用了InstallShield进行安装包的制作了,虽然思路差不 ...
- 基于tiny4412原生uboot修改制作SD启动并烧写到emmc
最近入手tiny4412的标准板,底板SDK型号为1506.但是因为友善之臂提供的superboot不能进入boot菜单,此时我就不能通过tftp下载内核和通过nfs挂载根文件系统,于是想自己做个ub ...
- go五笔——基于Google在线五笔制作
go五笔 v0.0.2 加入新世纪版 86版收录几个不常用汉字,其它无更新 下载 86版64位密码: qe7k 86版32位密码: y25a 06版64位密码: d2ug 06版32位密码: bxxz ...
- 团队软件开发_基于windows下截屏软件关于NABC框架的特点
经过我们小组数次的激烈讨论,就自己的能力和时间而言,我们小组的初步的计划是开发一款基于windows下的截图软件. 关于这个软件的功能,我们初步的想法如下: 1.能在windows下后台运行,有相应的 ...
- 如何录屏制作gif图片
LICEcap简介: LICEcap是一款屏幕录制制作gif图片的工具,支持导出 GIF 动画图片格式,轻量级.使用简单,录制过程中可以随意改变录屏范围. LICEcap 直观易用,功能灵活,支持 W ...
- Dockerfile简介及基于centos7的jdk镜像制作
Dockerfile简介 dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像, 另外,使用Dockerfile去构建镜像好比使用pom去构建m ...
随机推荐
- Html标签之frameset&图片切换
今天为大家分享一下刚刚总结好的html经验,以备不时之需. 首先介绍一下frameset标签,此标签用于同一页面内切换网页,在大多数网页中都可以看到,因为项目的需要,故而研究一二. frameset标 ...
- 基于Metronic的Bootstrap开发框架经验总结(3)--下拉列表Select2插件的使用
在上篇<基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用>介绍了数据的分页处理,使用了Bootstrap Paginator插件,另外 ...
- 硬刚Google ,这家小公司的增长团队长啥样
背景: AdRoll 是一家主打重定向广告(Retargeting)服务的技术公司,基于用户浏览记录等信息,为广告主提供几乎瞬时的广告位购买服务,当前估值15.5亿美元.吊打谷歌, AdRoll 已经 ...
- NIO的一坑一惑小记
前言 不知不觉,已那么长时间没有更新东西了,说来真是汗颜啊.(主要是最近在技术上豁然开朗的感觉越来越少了-_-|||) 最近一直在学习Linux相关的东西.又一次接触到了I/O复用模型(select/ ...
- Azure Automation (4) 按照Azure虚拟机的机器名,设置开关机
<Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China服务. 在有的时候,我们不需要将所有的虚拟机进行开关机. 本文介绍的脚 ...
- Elasticsearch——Search的基本介绍
Elasticsearch最常用的方法莫过于查询了.Es支持以URI请求参数或者请求体的方式进行查询. 查询范例 Elasticsearch支持对多索引以及多类型进行查询. 比如,下面对某个特定索引的 ...
- Elasticsearch聚合 之 Ip Range IP地址范围聚合
相对于range和date range,这个聚合就是能够表示IP的范围. 普通IP模式 DSL命令: { "aggs":{ "ip_ranges":{ &quo ...
- JVM之类加载器下篇
除了自定义的类加载之外,jvm存在三种类加载器,并以一种父委托的加载机制进行加载. --启动类加载器,又称根加载器,是一个native的方法,使用c++实现.在java中我们用null标识,用于加载j ...
- 30天C#基础巩固-----多态,工厂模式
自己要有自信,相信自己可以找到好的工作.面对校招,企业更加看重自己的基础,这30天就把C#的基础好好的复习,学习下.笔记一定要认真的记录,这样自己复习回顾的时候就有了可以参考的东西了. 一: ...
- Android SDK Android NDK Android Studio 官方下载地址
2016.12 Android Studio Windows Includes Android SDK https://dl.google.com/dl/android/studio/install/ ...