样式改写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. WIN7 x64下java 8的环境变量配置

    Oracle官网下载JDK进行安装:我下载的是Java 8 JDK,地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-do ...

  2. vb 案例学习

    ' ================================================================================================== ...

  3. KMS

    slmgr -ipk 73KQT-CD9G6-K7TQG-66MRP-CQ22C

  4. druid数据库连接池整合到SpringMvc

    1.maven项目加入相关的依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>dru ...

  5. scrapy增加爬取效率

    增加并发: 默认scrapy开启的并发线程为32个,可以适当进行增加.在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100. 降低日志级别 ...

  6. NLog小记

    NLog安装: Install-Package NLog NLog配置: <?xml version="1.0" encoding="utf-8" ?&g ...

  7. Oracle数据库存储过程练习20181212

    先创建一个测试的数据表 --测试表 CREATE TABLE TEST20181207 ( ID INTEGER PRIMARY KEY, FUND NUMBER,--上日资金 BALANCE NUM ...

  8. fastclick.js插件使用

    引入插件步骤 ①在HTML页面中添加  <script type='application/javascript' src='/path/to/fastclick.js'></scr ...

  9. git命令初级

    git是开源的分布式版本控制系统,分布式主要区别于集中式代表CVS(Concurrent Version System,遵从C/S架构,同步比较笨拙.)和SVN(Subversion),linux开发 ...

  10. linux学习系列博客地址汇总

    2018-09-28 16:03:43 CentOS7 yum命令:这是一个用来管理rpm包进行自动化安装的C/S模式的一个程序. CentOS7(无图形界面)支持中文显示的办法:系统安装好之后,有可 ...