基于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 ...
随机推荐
- hibernate(九)多对多关联
原文链接:http://www.orlion.ml/29/ 一.多对多单向关联 假设一个老师教多个学生,一个学生被多个老师教,这就是典型的多对多关系 配置方式是在Teacher类的getStudent ...
- 《BI那点儿事》数据挖掘初探
什么是数据挖掘? 数据挖掘(Data Mining),又称信息发掘(Knowledge Discovery),是用自动或半自动化的方法在数据中找到潜在的,有价值的信息和规则. 数据挖掘技术来源于数据库 ...
- Cocos2d-x 3.2 学习笔记(十四)保卫萝卜之界面UI
保卫萝卜~上一篇说了使用CocoStudio制作主界面,这里来完善主界面动画及后续界面(主题界面ThemeUI.场景选择界面SelectMapUI),主要涉及的控件PageView. 学习要 ...
- tomcat触发ServletContext初始化监听事件的源码(原创)
tomcat 8.0.36 知识点: 动态监听器的好处可以根据环境条件进行选择性添加. 静态监听器有七类. ServletContextAttributeListener ServletRequest ...
- Linux的学习--系统目录
因为利用Linux来开发产品或distributions的社群/公司与个人实在太多了, 如果每个人都用自己的想法来配置文件放置的目录,那么将可能造成很多管理上的困扰. 你能想象,你进入一个企业之后,所 ...
- 使用webpack打包ThinkPHP的资源文件
使用webpack打包ThinkPHP的资源文件 利用自己的空余时间一直在维护http://www.wx2share.com这个小网站,全是一个人在弄,由于只租得起虚拟空间,所以后台采用了简单方便的T ...
- CentOS 7 关闭防火墙和SELinux
[修改机器名] # vi /etc/hostname [关SELinux] # vi /etc/selinux/config设置SELINUX=disabled [关防火墙] # systemctl ...
- 使用 CSS3 制作一组超时尚的动画按钮效果
通过 CSS3 的新特性,我们创作出好的交互和效果的可能性大大增加.这篇文章中,我想与大家分享一些 CSS3 动画按钮效果.我们的想法是创建一个具有不同风格的一些动画链接元素,鼠标悬停时有动画效果和活 ...
- GDB 和 windbg 命令对照(转载)
From:http://blog.csdn.net/joeleechj/article/details/10020501 命令 ...
- laravel中的错误与日志
日志 laravel中的日志是基于monolog而封装的.laravel在它上面做了几个事情: 把monolog中的addInfo等函数简化成为了info这样的函数 增加了useFiles和useDa ...