h5-自定义视屏播放器
1.html代码
<h3 class="playerTitle">视屏播放器</h3>
<div class="player">
<video src="../mp4/chrome.mp4"></video>
<div class="controls">
<!--比如这里的开始和暂停图标就是font-awesome.css文件中的图标-->
<a href="javascript:;" class="switch fa fa-play"></a>
<a href="javascript:;" class="expand fa fa-expand"></a>
<div class="progress">
<div class="bar"></div>
<div class="loaded"></div>
<div class="elapse"></div>
</div>
<div class="time">
<span class="currentTime">00;00:00</span>
\
<span class="totalTime">00;00:00</span>
</div>
</div>
</div>
2.引入两个css文件
<!--可以直接进入:http://www.fontawesome.com.cn/ 进行下载font-awesome.css文件
font-awesome.css文件,该文件是一个字体图标文件,在网站中点击:实际是专用入口就
会显示各种各样的图标,点击图标即可看见时间该图标的代码-->
<link rel="stylesheet" href="../css/font-awesome.css">
<link rel="stylesheet" href="../css/css.css">
css.css是视屏播放器的基本样式
body{
padding:;
margin:;
font-family: 'microsoft yahei','Helvetica',simhei,simsun,sans-serif;
background-color: #f7f7f7;
} a{
text-decoration: none;
} .playerTitle{
width: 100%;
margin: 0 auto;
line-height: 100px;
font-size: 40px;
text-align: center;
}
.player{
width: 720px;
height: 360px;
margin: 0 auto;
background: url("../img/loading.gif") center no-repeat;
background-size: cover;
position: relative;
}
video{
height: 100%;
margin: 0 auto;
display: none;
}
.controls{
width: 720px;
height: 40px;
position: absolute;
left: 0px;
bottom: -40px;
background-color: #000;
}
.controls > .switch{
width: 20px;
height: 20px;
display: block;
font-size: 20px;
color: #fff;
position: absolute;
left: 10px;
top: 10px;
}
.controls > .expand{
width: 20px;
height: 20px;
display: block;
font-size: 20px;
color: #fff;
position: absolute;
right: 10px;
top: 10px;
}
.controls > .progress{
width: 430px;
height: 10px;
position: absolute;
left: 40px;
bottom: 15px;
background-color: #555;
}
.controls > .progress > .bar{
width: 100%;
height: 100%;
border-radius: 3px;
cursor: pointer;
position: absolute;
left:;
top:;
opacity:;
z-index:;
}
.controls > .progress > .loaded{
width: 60%;
height: 100%;
background-color: #999;
order-radius: 3px;
position: absolute;
left:;
top:;
z-index:;
}
.controls > .progress > .elapse{
width: 0%;
height: 100%;
background-color: #fff;
order-radius: 3px;
position: absolute;
left:;
top:;
z-index:;
}
.controls > .time{
height: 20px;
position: absolute;
left: 490px;
top: 10px;
color: #fff;
font-size: 14px;
}
3.最主要的功能实现
<script src="../js/jquery-1.7.min.js"></script>
<script>
/*通过jq来实现功能*/
$(function () {
/*1.获取播放器*/
var video = $("video")[0]; /*2.实现播放与暂停*/
$(".switch").click(function () {
/*实现播放暂停的切换:如若是暂停》播放 如果是播放》暂停*/
if (video.paused) {
video.play();
/*移除暂停样式,添加播放样式*/
}else{
video.pause();
/*移除播放样式,添加暂停样式*/
}
/*设置标签的样式 fa-pause:暂停 fa-play:播放样式*/
$(this).toggleClass("fa-play fa-pause");
}); /*3.实现全屏操作*/
$(".expand").click(function () {
if (video.requestFullscreen){
video.requestFullscreen();
}else if (video.webkitRequestFullScreen){
video.webkitRequestFullScreen();
} else if (video.mozRequestFullScreen){
video.mozRequestFullScreen();
} else if (video.msRequestFullScreen){
video.msRequestFullScreen();
}
}); /*4.实现播放业务逻辑:当视屏文件可以播放时触发下面的事件*/
video.oncanplay=function () {
setTimeout(function () {
/*1.将视屏文件设置为显示*/
video.style.display="block";
/*2.获取当前视屏文件的总时长(以为作为单位,同时获取了小数值),计算出时分秒*/
var total = video.duration;
/*调用计算时间方法*/
var result = getResult(total);
/*4.将计算结果展示在指定的dom元素中*/
$(".totalTime").html(result);
},2000);
}
/*通过总时长计算出时分秒*/
function getResult(time) {
/*3.计算时分秒 60*60=3600
* 时:3700/3600
* 分:3700%3600 >> 100/60
* 秒:3700%60
* */
var hour =Math.floor(time/3600);
/*补0操作*/
hour = hour<10?"0"+hour:hour;
var minute=Math.floor(time%3600/60);
minute=minute<10?"0"+minute:minute;
var second = Math.floor(time%60);
second=second<10?"0"+second:second;
return hour+":"+minute+":"+second;
} /*5.实现播放过程中的业务逻辑,当时瓶播放时触发ontimeupdate事件
* 如果修改了currentTime值也会触发这个事件,说白了,就是是要currenTime值变化,就会触发这个事件
* */
video.ontimeupdate=function () {
/*1.获取当前的播放时间*/
var current=video.currentTime;
/*计算出时分秒*/
var result = getResult(current);
/*将结果展示在指定的dom元素中*/
$(".currentTime").html(result);
/*4.设置当前播放进度条样式*/
var percent=current/video.duration*100+"%";
$(".elapse").css("width",percent); } /*6.实现视屏地挑播*/
$(".bar").click(function (e) {
/*1.获取当前师表相对于父元素的left值--偏移值*/
var offset=e.offsetX;
/*2.计算偏移值相对总父元素总宽度的比例*/
var percent=offset/$(this).width();
/*3.计算这个位置对应的视频进度之*/
var current=percent*video.duration;
/*设置当前视频的currentTime*/
video.currentTime=current;
}) /*7.播放完毕之后,重置播放器的状态*/
video.onended=function () {
video.currentTime=0;
$(".switch").removeClass("fa-pauser").addClass("fa-play");
};
});
</script>
h5-自定义视屏播放器的更多相关文章
- Android中使用SurfaceView+MediaPlayer+自定义的MediaController实现自定义的视屏播放器
效果图如下: (PS本来是要给大家穿gif动态图的,无奈太大了,没法上传) 功能实现:暂停,播放,快进,快退,全屏,退出全屏,等基本功能 实现的思路: 在主布局中放置一个SurfaceView,在Su ...
- Java利用VLC开发简易视屏播放器
1.环境配置 (1)下载VLC VlC官网http://www.videolan.org/ 各个版本的下载地址http://download.videolan.org/pub/videolan ...
- Android视屏播放兼容性问题分享
最近产品提了一个紧急需求:webview加载的URL,需要支持视频播放. 为了快速完成需求,功能实现上直接使用系统自带播放器播放视频.由于是自带播放器,需要进行兼容性测试,过程发现了不少问题,这里分享 ...
- 简单的多屏播放器示例(vlc+qt)
介绍 简单的多屏播放器 最多同时播放16个视频 支持本地文件和rtsp.rtmp等流媒体播放 VS2015工程,依赖Qt+VLC 练手作品 截图 下载 程序:download.csdn.net/d ...
- iOS:简易的音视屏播放框架XYQPlayer
一.前缀 一直都想好好学学音视频这方面的知识,抽了几个周末参考一些资料,尝试着写了一个简易的音视频播放框架,支持音视频播放.视频截图.音乐缓存,其实吧,也就是尽可能的封装罢了,方便以后自己使用.目前只 ...
- H5+Boostrap的音乐播放器
H5+Boostrap做简单的音乐播放器 前言:这个是综合一下我最近在学的东西做的小Demo,到实际使用还有距离,但是用来练手巩固知识点还是不错的,最近在二刷JS书和Boostrap.css的源码,做 ...
- django-网页视屏播放
基本都基于第三方: -cc视频 -播放免费视频 -收费视频 -需要做认证,cc视频会给你发消息,你返回,携带数据 -在前端页面中添加响应的视屏框的代码 -功能实现,有相关接口文档,配置即可
- JS和H5做一个音乐播放器,附带源码
http://mp.weixin.qq.com/s/KpXT9X46AMlUVXQvpHuXGQ 效果图: 实现的功能 1.首页 2.底部播放控件 3.播放页面 4.播放列表 5.排行榜 6.音乐搜索 ...
- opencv视屏流嵌入wxpython框架
前几篇博客分享搭建人脸识别与情绪判断的环境和源码,但是没有UI,界面很难看,一打开就是opencv弹出的一个视屏框.处女座的我看着非常难受,于是决定做一个UI,稍微规矩好看一点,再怎么说,这样的话也算 ...
随机推荐
- UVA - 1423 Guess (拓扑排序)
题意:已知矩阵S,求序列a.已知矩阵Sij = “ + ” if ai + . . . + aj > 0; Sij = “ − ” if ai + . . . + aj < 0; and ...
- Html5 自学笔记
1 html的全称 Hyper Text Markup Language 2 HTML的意义 使用标记标签( Markup Tag)来描述网页 3 HTML标签一定成对吗 是 4 <html ...
- OpenJudge - NOI - 1.1编程基础之输入输出(C语言 全部题解)
01:Hello, World! #include <stdio.h> int main(void) { printf("Hello, World!"); return ...
- JAVA - Intellij IDEA 中去掉mybatis Mapper.xml背景色
JAVA - Intellij IDEA 中去掉mybatis Mapper.xml背景色 1:现在公司中使用mybatis的频率非常高,一般都会用MBG来生成基础的代码文件.在intellij中查看 ...
- 六、React 键盘事件 表单事件 事件对象以及React中的ref获取dom节点 、React实现类似Vue的双向数据绑定
接:https://www.cnblogs.com/chenxi188/p/11782349.html 事件对象 .键盘事件. 表单事件 .ref获取dom节点.React实现类似vue双向数据绑定 ...
- Web基础之Servlet
Servlet Servlet : server applet,直译服务小程序.那Servlet到底是什么呢? Servlet说白了其实就是一个接口,接口的作用是什么?规范呗,这个接口规定了下面三个问 ...
- python_re正则表达
re模块就本质而言,正则表达式(或RE)是一种小型的.高度专业化的编程语言,(在python中)它内嵌在Python中,并通过re模块实现,正则表达式模块被编译成一系列的字节码,然后由用C编写的匹配引 ...
- windows driver 映射大文件
//如果要做到掉电后仍然可以继续向下操作,可以记录文件的位置重新映射 NTSTATUS status; UNICODE_STRING strFileSrc = RTL_CONSTANT_STRING( ...
- Day3-T2
原题目 奶牛Bessie的电脑总是无缘无故地被 FJ 关掉,奶牛 Bessie 非常苦恼,也非常生气.FJ 却发现了 一个很神奇的规律(别问是怎么知道的),发现 Bessie 每吃一次草,她的生气值会 ...
- org.apache.jasper.JasperException: /WEB-INFO/jsp/product/edit.jsp(168,45)
PWC6038:"${empty data.code?'001':fn:substring(data.code,0,8)}" contains invalid expression ...