样式改写css,其中的一些按钮是在“阿里妈妈”上找的字体图标,就不向上传了。

/*
*CoolPlay视频播放器
* 2016年8月1日
* 627314658@qq.com
* */ @font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?63s28v');
src: url('fonts/icomoon.eot?63s28v#iefix') format('embedded-opentype'), url('fonts/icomoon.ttf?63s28v') format('truetype'), url('fonts/icomoon.woff?63s28v') format('woff'), url('fonts/icomoon.svg?63s28v#icomoon') format('svg');
font-weight: normal;
font-style: normal;
} [class^="icon-"],
[class*=" icon-"] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'icomoon' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height:;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/*一种旋转的策略*/
@-moz-keyframes spin {
0% {
-moz-transform: rotate(0deg)
} 100% {
-moz-transform: rotate(359deg)
}
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg)
} 100% {
-webkit-transform: rotate(359deg)
}
}
@-o-keyframes spin {
0% {
-o-transform: rotate(0deg)
} 100% {
-o-transform: rotate(359deg)
}
}
@-ms-keyframes spin {
0% {
-ms-transform: rotate(0deg)
} 100% {
-ms-transform: rotate(359deg)
}
}
@keyframes spin {
0% {
transform: rotate(0deg)
} 100% {
transform: rotate(359deg)
}
}
.icon-c-loading:before {
content: "\e983";
}
.icon-c-enlarge:before {
content: "\e989";
}
.icon-c-shrink:before {
content: "\e98a";
}
.icon-c-play:before {
content: "\ea1c";
}
.icon-c-pause:before {
content: "\ea1d";
}
.icon-c-previous:before {
content: "\ea23";
}
.icon-c-next:before {
content: "\ea24";
}
.icon-c-voice:before {
content: "\ea27";
}
.icon-c-mute:before {
content: "\ea2a";
}
.icon-c-refresh:before {
content: "\ea2e";
}
// .icon-c-voice:before {
// /*声音*/ // content: "\e900";
// }
// .icon-c-mute:before {
// /*静音*/ // content: "\e901";
// }
// .icon-c-pause:before {
// /*暂停*/ // content: "\e902";
// }
// .icon-c-play:before {
// /*播放*/ // content: "\e903";
// }
// .icon-c-loading:before {
// /*加载*/ // content: "\e97a";
// }
// .icon-c-enlarge:before {
// /*全屏*/ // content: "\e989";
// }
// .icon-c-shrink:before {
// /*缩小*/ // content: "\e98a";
// }
// .icon-c-previous:before {
// /*上一首*/ // content: "\ea21";
// }
// .icon-c-next:before {
// /*下一首*/ // content: "\ea22";
// }
// .icon-c-refresh:before {
// /*重新加载*/ // content: "\ea2e";
// }
* {
margin:;
padding:;
}
body {
font-size: 16px;
font-family: "微软雅黑";
} /*播放器区域*/
.cool-play {
width: 100%;
height: 100%;
position: relative;
}
.cool-play:-webkit-full-screen {
width: 100%;
height: 100%;
}
.cool-play .cool-title {
width: 100%;
height: 40px;
background-color: rgba(130, 129, 129, 0.8);
position: relative;
line-height: 40px;
z-index:;
color: #ff6600;
opacity:;
transition: opacity 0.8s;
-webkit-transition: opacity 0.8s;
-moz-transition: opacity 0.8s;
-ms-transition: opacity 0.8s;
}
.cool-play .cool-title span {
padding-left: 20px;
}
.cool-play .cool-video .icon-c-loading {
color: #FF6600;
top: 50%;
left: 50%;
position: absolute;
font-size: 40px;
margin-left: -20px;
margin-top: -20px;
-moz-animation: spin 2s infinite linear;
-o-animation: spin 2s infinite linear;
-webkit-animation: spin 2s infinite linear;
animation: spin 2s infinite linear;
display: none;
}
.cool-play .video {
width: 100%;
height: 100%;
position: absolute;
top:;
left:;
background-color: #000;
} /*播放器按钮*/
.cool-module {
width: 100%;
background-color: rgba(130, 129, 129, 0.8);
bottom: 0px;
left: 0px;
position: absolute;
opacity:;
/*方便调试,先定义为1,正常情况为0*/ color: #fff;
transition: opacity 0.8s;
-webkit-transition: opacity 0.8s;
-moz-transition: opacity 0.8s;
-ms-transition: opacity 0.8s;
}
.cool-module a {
cursor: pointer;
}
.cool-btn {
height: 38px;
}
.cool-play:hover .cool-title {
opacity:;
}
.cool-play:hover .cool-module {
opacity:;
}
.cool-btn .btn a {
font-size: 24px;
line-height: 38px;
padding-left: 10px;
padding-right: 10px;
display: inline-block;
}
.cool-btn .cool-btn-left {
display: inline-block;
padding-left: 10px;
float: left;
}
.cool-btn .cool-btn-center {
display: inline-block;
line-height: 38px;
float: left;
font-size: 12px;
color: #FFFFFF;
margin-left: 20px;
}
.cool-btn .cool-btn-right {
display: inline-block;
float: right;
padding-right: 10px;
}
.cool-btn a:hover {
color: #ff5500;
} /*进度条*/
.cool-module .cool-progress {
width: 100%;
height: 4px;
background-color: #fff;
display: block;
position: relative;
}
.cool-module .cool-progress .cool-played {
background-color: #ff6600;
height: 100%;
width: 0%;
position: absolute;
/*transition: width .3s;
-webkit-transition: width .3s;
-moz-transition: width .3s;
-ms-transition: width .3s;*/
}
.cool-module .cool-progress .cool-drag {
height: 8px;
width: 8px;
border-radius: 100%;
background-color: #fff;
top: -2px;
position: relative;
margin-left: 0%;
position: absolute;
display: none;
}
.voice{
position: relative;
}
.voice:hover .c-voice{
display: block;
}
.c-voice{
position: absolute;
width: 40px;
height: 120px;
background-color: rgba(130, 129, 129, 0.8);
bottom: 38px;
left:;
display: none;
}
.c-voice-triangle{
position: absolute;
bottom: -6px;
left: 12px;
width:;
height:;
border-left: 8px solid transparent;
border-right: 8px solid transparent;
border-top: 6px solid rgba(130, 129, 129, 0.8);
}
.voice-bar{
height: 100px;
width: 2px;
background-color: #000;
position: absolute;
left: 50%;
margin-left: -1px;
bottom: 10px;
}
.voice-bared{
height: 80px;
width: 2px;
background-color: #f50;
position: absolute;
left: 50%;
margin-left: -1px;
bottom:;
}
.voice-dot{
position: absolute;
width: 10px;
height: 10px;
background-color: #fff;
border-radius: 100%;
left: -4px;
top: -5px;
}
.voice-mask{
height: 100px;
width: 20px;
background-color: red;
position: absolute;
bottom: 10px;
left: 50%;
margin-left: -10px;
opacity:;
}

播放器样式Css

播放功能实现及优化js与html5视频播放器api调用

var myVideo = document.getElementById("video");//播放器
var coolPlay = document.getElementById("cool-play");
var cPlay = document.getElementById("c-play");//播放按钮
var cProgress = document.getElementById("c-progress");
var cPlayed = document.getElementById("c-played");//已经播放过的进度条
var cDrag = document.getElementById("c-drag");//进度条顶端的圆钮
var cCurrentTime = document.getElementById("c-currentTime");//当前时间span
var cTotalTime = document.getElementById("c-totalTime");//总时间
var loading = document.getElementsByClassName("icon-c-loading");//loading 旋转图标
var refresh = document.getElementsByClassName("icon-c-refresh");//重新加载按钮
var voice = document.getElementsByClassName("i-voice");//音量按钮
var voice_mask = document.getElementsByClassName("voice-mask");//音量总进度条
var voice_bared= document.getElementsByClassName("voice-bared");//现在的音量的进度条
var voice_dot = document.getElementsByClassName("voice-dot");
var voice_num = 0.8;//初始化当前的音量
volume(voice_num);//把音量初始化到80
function volume(n){
myVideo.volume = n;
voice_bared[0].style.height=n*100 + 'px';
}
function playPause() {
if(myVideo.paused) {
Play();
} else {
Pause();
}
};
function Play(){
cPlay.className = "icon-c-pause";
myVideo.play();
}
function Pause(){
cPlay.className = "icon-c-play";
myVideo.pause();
}
refresh[0].onclick = function (){
Load();
}
function Load(){
Pause();
myVideo.load();
cPlayed.style.width = 0+"%";
cDrag.style.display="none";
cCurrentTime.innerHTML = "00:00";
cTotalTime.innerHTML = "00:00";
}
//播放时间及进度条控制
myVideo.ontimeupdate = function(){
var currTime = this.currentTime, //当前播放时间
duration = this.duration; // 视频总时长
if(currTime == duration){
Pause();
}
//百分比
var pre = currTime / duration * 100 + "%";
//显示进度条
cPlayed.style.width = pre;
var progressWidth = cProgress.offsetWidth;
var leftWidth = progressWidth*(currTime / duration);
if(leftWidth > 8 && (progressWidth - leftWidth) > 4){
cDrag.style.display="block";
} else {
cDrag.style.display="none";
}
cDrag.style.left = progressWidth*(currTime / duration)-4 + "px";
//显示当前播放进度时间
cCurrentTime.innerHTML = getFormatTime(currTime,duration);
cTotalTime.innerHTML = getFormatTime(duration,duration);
};
//当浏览器可在不因缓冲而停顿的情况下进行播放时
myVideo.oncanplaythrough = function() {
loading[0].style.display="none";
}
//当视频由于需要缓冲下一帧而停止
myVideo.onwaiting = function() {
loading[0].style.display="block";
}
//当用户开始移动/跳跃到音频/视频中的新位置时
myVideo.onseeking = function() {
if (myVideo.readyState == 0 || myVideo.readyState == 1) {
loading[0].style.display="block";
}
}
//拖拽进度条上的园钮实现跳跃播放
/*cDrag.onmousedown = function(e){
if(cPlay.className == 'icon-c-pause')
myVideo.pause();
loading[0].style.display="block";
document.onmousemove = function(e){
console.log("e.clientX:"+e.clientX);
console.log("coolPlay.offsetLeft:"+coolPlay.offsetLeft); var leftV = e.clientX - coolPlay.offsetLeft;
console.log("coolPlay.offsetLeft:"+coolPlay.offsetLeft);
console.log("leftV:"+leftV);
if(leftV <= 0){
leftV = 0;
}
if(leftV >= coolPlay.offsetWidth){
leftV = coolPlay.offsetWidth-10;
}
cDrag.style.left = leftV+"px";
// console.log(leftV);
}
document.onmouseup = function (){
var scales = cDrag.offsetLeft/cProgress.offsetWidth;
var du = myVideo.duration*scales;
console.log("scales:"+scales);
console.log("du:"+du);
myVideo.currentTime = du;
if(cPlay.className == 'icon-c-pause')
myVideo.play();
document.onmousemove = null;
document.onmousedown = null;
}
}*/
//在进度条上点击跳跃播放
cProgress.onclick = function(e){
var event = e || window.event;
console.log("当前点击的位置为:"+(event.offsetX / this.offsetWidth) * myVideo.duration);
myVideo.currentTime = (event.offsetX / this.offsetWidth) * myVideo.duration;
};
//根据duration总长度返回 00 或 00:00 或 00:00:00 三种格式
function getFormatTime(time,duration) {
var time = time || 0; var h = parseInt(time/3600),
m = parseInt(time%3600/60),
s = parseInt(time%60);
s = s < 10 ? "0"+s : s;
if(duration>=60 && duration <3600){
m = m < 10 ? "0"+m : m;
return m+":"+s;
}
if (duration >=3600){
m = m < 10 ? "0"+m : m;
h = h < 10 ? "0"+h : h;
return h+":"+m+":"+s;
}
return s;
}
//音量的控制部分
//点击声音按钮时,把视频静音
voice[0].onclick = function(){
if(myVideo.muted){
voice[0].className="i-voice icon-c-voice";
myVideo.muted=false;
if(voice_num >= 0 && voice_num <= 1){
volume(voice_num);
} else {
volume(0.8);
}
} else {
voice_num = myVideo.volume; //记录下来静音前的音量
voice[0].className='i-voice icon-c-mute';
myVideo.muted=true;
volume(0);
}
}
//当点击进度条上的一个位置时,变化音量
voice_mask[0].onclick = function(e){
var event = e || window.event;
if(event.offsetY >= 100){
voice[0].className='i-voice icon-c-mute';
myVideo.muted=true;
volume(0);
return;
}
volume((100-event.offsetY)/100);
};
/*voice_mask[0].onmousedown = function(e){
document.onmousemove = function(e){
console.log("e.clientY:"+e.clientY);
console.log("e.offsetY:"+e.offsetY);
console.log(e);
console.log(voice[0].offsetTop);
console.log(document.getElementsByClassName("voice")[0]);
volume((100-e.offsetY)/100);
if(event.offsetY == 100){
voice[0].className='i-voice icon-c-mute';
myVideo.muted=true;
volume(0);
}
}
document.onmouseup = function (){
document.onmousemove = null;
document.onmousedown = null;
}
}*/
//全屏的控制部分
var fullscreen = document.getElementById('cool-fullScreen');
var FullScreenTF = true;
function launchFullscreen(element) {
//此方法不能在异步中进行,否则火狐中不能全屏操作
if(element.requestFullscreen) {
element.requestFullscreen();
} else if(element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if(element.msRequestFullscreen) {
element.msRequestFullscreen();
} else if(element.oRequestFullscreen) {
element.oRequestFullscreen();
} else if(element.webkitRequestFullscreen) {
element.webkitRequestFullScreen();
} else {
alert("您的浏览器版本太低,不支持全屏功能!");
}
FullScreenTF = false;
};
//退出全屏
function exitFullscreen() {
if(document.exitFullscreen) {
document.exitFullscreen();
} else if(document.msExitFullscreen) {
document.msExitFullscreen();
} else if(document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if(document.oRequestFullscreen) {
document.oCancelFullScreen();
} else if(document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else {
alert("您的浏览器版本太低,不支持全屏功能!");
}
FullScreenTF = true;
};
fullscreen.onclick = function() {
if(FullScreenTF) {
launchFullscreen(coolPlay);
fullscreen.className = "icon-c-shrink";
} else {
exitFullscreen();
fullscreen.className = "icon-c-enlarge";
}
};

播放器js及html5视频播放器Api调用

还有一些功能不够完善,请留言讨论。

html5视频播放器 二 (功能实现及播放优化)的更多相关文章

  1. Android 视频播放器 (二):使用MediaPlayer播放视频

    在 Android 视频播放器 (一):使用VideoView播放视频 我们讲了一下如何使用VideoView播放视频,了解了基本的播放器的一些知识和内容.也知道VideoView内部封装的就是Med ...

  2. jqm视频播放器,html5视频播放器,html5音乐播放器,html5媒体播放器,video开展demo,html5视频播放演示示例,html5移动视频播放器

    最近看到很多有用的论坛html5视频播放的发展,音乐播放功能,大多数都在寻找答案.所以,我在这里做一个demo.对于大家互相学习.html5开发越来越流行,至于这也是一个不可缺少的一部分的视频. 如何 ...

  3. 打造自己的html5视频播放器

    前段时间重新学习了一下html5的video部分,以前只是停留在标签的使用上,这一次决定深入了解相关的API,并运用这些API打造一个简单的视频播放器.所谓“打造自己的”,就是要自己重写video标签 ...

  4. html5视频播放器 一 (改写默认样式)

    一个项目用到了html5视频播放器,于是就写了一个,走了很多坑,例如在chrome中加载视频出现加载异常等 先看看效果 是不是感觉换不错,以下是我播放器改写样式的布局. <!DOCTYPE ht ...

  5. 最简单的基于FFMPEG+SDL的视频播放器:拆分-解码器和播放器

    ===================================================== 最简单的基于FFmpeg的视频播放器系列文章列表: 100行代码实现最简单的基于FFMPEG ...

  6. Html5视频播放器-VideoJS+Audio标签实现视频,音频及字幕同步播放

    一,VideoJS介绍 引用脚本,videojs很为你着想,直接cdn了,你都不需要下载这些代码放入自己的网站 <link href=”http://vjs.zencdn.net/c/video ...

  7. C语言基于GTK+Libvlc实现的简易视频播放器(二)

    简易视频播放器-全屏播放 一.课程说明 上一次我们使用gtk+libvlc实现了一个最简单的视频播放器,可以实现点击按钮暂定和停止播放视频,以及同步显 示视频播放进度,但即使作为一个视频播放器,只有这 ...

  8. Android 视频播放器 (三):使用NBPlayer播放直播视频

    一.前言 在 Android 音视频开发学习思路 中,我们不断的学习和了解音视频相关的知识,随着知识点不断的学习,我们现在应该做的事情,就是将知识点不断的串联起来.这样才能得到更深层次的领悟.通过整理 ...

  9. Android 视频播放器 (四):使用ExoPlayer播放视频

    一.简介 ExoPlayer是一个Android应用层的媒体播放器,它提供了一套可替换Android MediaPlayer的API,可以播放本地或者是线上的音视频资源.ExoPlayer支持一些An ...

随机推荐

  1. CentOS 7 下用 firewall-cmd / iptables 实现 NAT 转发供内网服务器联网

    自从用 HAProxy 对服务器做了负载均衡以后,感觉后端服务器真的没必要再配置并占用公网IP资源. 而且由于托管服务器的公网 IP 资源是固定的,想上 Keepalived 的话,需要挤出来 3 个 ...

  2. 掌握Spark机器学习库-01

    第1章 初识机器学习 在本章中将带领大家概要了解什么是机器学习.机器学习在当前有哪些典型应用.机器学习的核心思想.常用的框架有哪些,该如何进行选型等相关问题. 1-1 导学 1-2 机器学习概述 1- ...

  3. 更改ligerui源码实现分页样式修改

    修改后样式: 第一步:实现功能. 更改源码部分ligerui.all.js文件 读源代码,发现ligerui底部工具条是这样实现的(ps:注释部分为源码) _render: function () { ...

  4. js 日期时间大小比较

    <body> 开始时间:<input onfocus="setday(this)" id="startTime" name="sta ...

  5. 前端Unicode转码的好处

    站长工具支持Unicode转码:http://tool.chinaz.com/Tools/Unicode.aspx (这是一个网页标题)转码后 ------>变为:\u8fd9\u662f\u4 ...

  6. 原生jsonp跨域

    <script> // jsonp跨域原生写法 var script = document.createElement('script'); script.src = 'http://19 ...

  7. java调用jacob生成pdf,word,excel横向

    /* * 传进一个office文件的byte[]以及后缀,生成一个pdf文件的byte[] */ public byte[] jacob_Office2Pdf(byte[] srcFileBytes, ...

  8. 部分cocoscreator左右移动代码

    cc.Class({extends: cc.Component, properties: { // 主角跳跃高度 jumpHeight: 0, // 主角跳跃持续时间 jumpDuration: 0, ...

  9. c++ 模板template

    1.函数模板的声明 声明形式 template<typename 数据类型参数标识符> <返回类型><函数名>(参数表) {     函数体 } 注: templa ...

  10. hdfs深入:03、hdfs的架构以及副本机制和block块存储

    HDFS分布式文件系统设计目标 1.            硬件错误  由于集群很多时候由数量众多的廉价机组成,使得硬件错误成为常态 2.            数据流访问  所有应用以流的方式访问数 ...