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,稍微规矩好看一点,再怎么说,这样的话也算 ...
随机推荐
- Python基础笔记:高级特性:切片、迭代、列表生成式、生成器、迭代器
题记: 在python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好. 1行代码能实现的功能,绝不写5行代码. 请始终牢记:代码越少,开发效率越高. 切片 >>&g ...
- Bulma CSS - 模块化
Bulma CSS框架教程 Bulma CSS – 简介 Bulma CSS – 开始 Bulma CSS – CSS类 Bulma CSS – 模块化 Bulma CSS – 响应式 Bulma框架 ...
- 本地登录ftp的时候报530错误
root@instance-iyi104bj:~# ftp localhost Connected to localhost. (vsFTPd ) Name (localhost:root): roo ...
- 6 ~ express ~ 搭建用户注册前端页面
一,前端页面 /views/login.html <!DOCTYPE html> <html lang="en"> <head> <met ...
- Sublime Text与LaTeX的结合
1.通过Command Palette安装LaTeXTools 2.通过Command Palette查找LaTeXTools: Reconfigure and migrate settings,回车
- 小白学Python——Anaconda安装
小白:Mr.林,快救救我,我被那些数据压得喘不过气了. Mr.林:小白,表方,怎么了? ! 小白:Mr.林,我从公司数据平台上下了一堆数据,如果选择时间范围广的话,平台就卡的动不了,动不动还奔溃, ...
- python的库有多少个?python有多少个模块?
这里列举了大概500个左右的库: ! Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主 ...
- React + umi +antd+antv/g6 实现力图
官方示例效果:http://antv.alipay.com/zh-cn/g6/2.x/demo/net/2017-link-data.html 改编效果: 实现步骤: 环境:nodejs.yarn/n ...
- jQuery下拉框联动(JQ遍历&JQ中DOM操作)
1.下载jQuery,并导入:https://blog.csdn.net/weixin_44718300/article/details/88746796 2.代码实现: <!DOCTYPE h ...
- 《新标准C++程序设计》1.7-1.10(C++学习笔记2)
1.内联函数(inline关键字) eg.inline int Max(int a,int b) { if(a>b) return a; return b; } 当编译器处理调用内联函数的语句时 ...