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-自定义视屏播放器的更多相关文章

  1. Android中使用SurfaceView+MediaPlayer+自定义的MediaController实现自定义的视屏播放器

    效果图如下: (PS本来是要给大家穿gif动态图的,无奈太大了,没法上传) 功能实现:暂停,播放,快进,快退,全屏,退出全屏,等基本功能 实现的思路: 在主布局中放置一个SurfaceView,在Su ...

  2. Java利用VLC开发简易视屏播放器

    1.环境配置 (1)下载VLC  VlC官网http://www.videolan.org/    各个版本的下载地址http://download.videolan.org/pub/videolan ...

  3. Android视屏播放兼容性问题分享

    最近产品提了一个紧急需求:webview加载的URL,需要支持视频播放. 为了快速完成需求,功能实现上直接使用系统自带播放器播放视频.由于是自带播放器,需要进行兼容性测试,过程发现了不少问题,这里分享 ...

  4. 简单的多屏播放器示例(vlc+qt)

      介绍 简单的多屏播放器 最多同时播放16个视频 支持本地文件和rtsp.rtmp等流媒体播放 VS2015工程,依赖Qt+VLC 练手作品 截图 下载 程序:download.csdn.net/d ...

  5. iOS:简易的音视屏播放框架XYQPlayer

    一.前缀 一直都想好好学学音视频这方面的知识,抽了几个周末参考一些资料,尝试着写了一个简易的音视频播放框架,支持音视频播放.视频截图.音乐缓存,其实吧,也就是尽可能的封装罢了,方便以后自己使用.目前只 ...

  6. H5+Boostrap的音乐播放器

    H5+Boostrap做简单的音乐播放器 前言:这个是综合一下我最近在学的东西做的小Demo,到实际使用还有距离,但是用来练手巩固知识点还是不错的,最近在二刷JS书和Boostrap.css的源码,做 ...

  7. django-网页视屏播放

    基本都基于第三方: -cc视频 -播放免费视频 -收费视频 -需要做认证,cc视频会给你发消息,你返回,携带数据 -在前端页面中添加响应的视屏框的代码 -功能实现,有相关接口文档,配置即可

  8. JS和H5做一个音乐播放器,附带源码

    http://mp.weixin.qq.com/s/KpXT9X46AMlUVXQvpHuXGQ 效果图: 实现的功能 1.首页 2.底部播放控件 3.播放页面 4.播放列表 5.排行榜 6.音乐搜索 ...

  9. opencv视屏流嵌入wxpython框架

    前几篇博客分享搭建人脸识别与情绪判断的环境和源码,但是没有UI,界面很难看,一打开就是opencv弹出的一个视屏框.处女座的我看着非常难受,于是决定做一个UI,稍微规矩好看一点,再怎么说,这样的话也算 ...

随机推荐

  1. Python基础笔记:高级特性:切片、迭代、列表生成式、生成器、迭代器

    题记: 在python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好. 1行代码能实现的功能,绝不写5行代码. 请始终牢记:代码越少,开发效率越高. 切片 >>&g ...

  2. Bulma CSS - 模块化

    Bulma CSS框架教程 Bulma CSS – 简介 Bulma CSS – 开始 Bulma CSS – CSS类 Bulma CSS – 模块化 Bulma CSS – 响应式 Bulma框架 ...

  3. 本地登录ftp的时候报530错误

    root@instance-iyi104bj:~# ftp localhost Connected to localhost. (vsFTPd ) Name (localhost:root): roo ...

  4. 6 ~ express ~ 搭建用户注册前端页面

    一,前端页面 /views/login.html <!DOCTYPE html> <html lang="en"> <head> <met ...

  5. Sublime Text与LaTeX的结合

    1.通过Command Palette安装LaTeXTools 2.通过Command Palette查找LaTeXTools: Reconfigure and migrate settings,回车

  6. 小白学Python——Anaconda安装

    小白:Mr.林,快救救我,我被那些数据压得喘不过气了. Mr.林:小白,表方,怎么了? !   小白:Mr.林,我从公司数据平台上下了一堆数据,如果选择时间范围广的话,平台就卡的动不了,动不动还奔溃, ...

  7. python的库有多少个?python有多少个模块?

    这里列举了大概500个左右的库: !   Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主 ...

  8. React + umi +antd+antv/g6 实现力图

    官方示例效果:http://antv.alipay.com/zh-cn/g6/2.x/demo/net/2017-link-data.html 改编效果: 实现步骤: 环境:nodejs.yarn/n ...

  9. jQuery下拉框联动(JQ遍历&JQ中DOM操作)

    1.下载jQuery,并导入:https://blog.csdn.net/weixin_44718300/article/details/88746796 2.代码实现: <!DOCTYPE h ...

  10. 《新标准C++程序设计》1.7-1.10(C++学习笔记2)

    1.内联函数(inline关键字) eg.inline int Max(int a,int b) { if(a>b) return a; return b; } 当编译器处理调用内联函数的语句时 ...