效果:
代码很简单
js
define(\"html5_video_player\", [ \'../avalon-min\'], function(avalon) {
function formatTime(seconds) {
var seconds = Math.round(seconds);
var minutes = Math.floor(seconds / 60);
seconds = Math.floor(seconds % 60);
minutes = (minutes >= 10) ? minutes : \"0\" + minutes;
seconds = (seconds >= 10) ? seconds : \"0\" + seconds;
return minutes + \":\" + seconds;
}
var playing=false,mute=false,vol=50,fs=false,active=false,inactivityTimeout=timer=null;
avalon.bind($(\'control_btn\'),\'click\',function(){
if(!playing){
$(\'html5_video\').play();
$(\'control_btn\').className=\'html5_video_pause_btn inline-block\';
playing=true;
}else{
$(\'html5_video\').pause();
$(\'control_btn\').className=\'html5_video_play_btn inline-block\';
playing=false;
}
});
avalon.bind($(\'video_bar\'),\'click\',function(e){
var a=(e.clientX-$(\'video_bar\').offsetLeft)/$(\'video_bar\').offsetWidth;
$(\'html5_video\').currentTime =a.toFixed(2)*$(\'html5_video\').duration;
});
avalon.bind($(\'vol_bar\'),\'click\',function(e){
var a=(e.clientX-$(\'vol_bar\').offsetLeft-8)/$(\'vol_bar\').offsetWidth;
vol=$(\'html5_video\').volume =a;
$(\'vol_value\').style.width=a*100+\'%\';
});
avalon.bind($(\'mute_icon\'),\'click\',function(){
if(!mute){
$(\'html5_video\').volume=0;
$(\'mute_icon\').className=\'html5_video_mute1\';
mute=true;
}else{
$(\'html5_video\').volume=vol;
$(\'mute_icon\').className=\'html5_video_mute\';
mute=false;
}
});
avalon.bind($(\'html5_video\'),\'loadedmetadata\',function(){
$(\'html5_video_duration\').innerHTML=formatTime($(\'html5_video\').duration);
$(\'html5_video\').volume=0;
});
avalon.bind($(\'html5_video\'),\'timeupdate\',function(){
$(\'html5_play_time\').innerHTML=formatTime($(\'html5_video\').currentTime);
$(\'video_progress_bar\').style.left=$(\'html5_video\').currentTime/$(\'html5_video\').duration*100+\'%\';
});
avalon.bind($(\'html5_video_fullscreen\'),\'click\',function(e){
if(!fs){
toggle_fullscreen();
}else{
exit_fullscreen();
}
});
document.onmozfullscreenchange = function() {
if ($(\'html5_video\').clientWidth +2!= document.documentElement.clientWidth) {
exit_fullscreen();
}
};
document.onwebkitfullscreenchange = function() {
if ($(\'html5_video\').clientWidth!= document.documentElement.clientWidth) {
exit_fullscreen();
}
};
function exit_fullscreen() {
$(\'html5_video\').className=\'\';
fs = false;
active=false;
$(\'video_control\').className=\'\';
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
}
}
function toggle_fullscreen() {
$(\'html5_video\').className=\'video_fs\';
fs = true;
$(\'video_control\').className=\'fullscreen\';
var elem=$(\'html5_video\');
if (elem.msRequestFullscreen) {
elem.msRequestFullscreen();
} else if (elem.mozRequestFullScreen) {
elem.mozRequestFullScreen();
} else if (elem.webkitRequestFullscreen) {
elem.webkitRequestFullscreen();
}
}
function updateBuffered() {
var v = $(\'html5_video\');
var r = v.buffered;
if (r) {
for (var i=0; i<r.length; i++) {
var start = r.start(i);
var end = r.end(i);
}
$(\'video_buffer_bar\').style.width=end/$(\'html5_video\').duration*100+\'%\';
}
}
setInterval(updateBuffered,500);
function b(){
if(active){
$(\'video_control\').style.display=\'none\';
active=false;
console.log(active);
}
}
avalon.bind($(\'html5_video\'),\'mousemove\',function(e){
if(fs){
clearTimeout(inactivityTimeout);
active=true;
$(\'video_control\').style.display=\'block\';
inactivityTimeout = setTimeout(b, 5000);
}
});
});
html
<link type=\"text/css\"
href=\"http://localhost/twitter/css/html5_video_player.css\"
rel=\"stylesheet\" />
<div id=\'wrap_html5_video\'>
<div id=\'html5_video_area\'>
<video id=\"html5_video\" width=\"360\" height=\"240\">
<source type=\" video/mp4\" src=\"http://localhost/twitter/videos/2.mp4\"></source>
<source type=\" video/webm\"
src=\"http://localhost/twitter/videos/2.webm\"></source>
</video>
</div>
<div id=\'video_control\'>
<div id=\'video_bar\'>
<div id=\'video_buffer_bar\'></div>
<div id=\'video_progress_bar\'></div>
</div>
<div id=\'play_control\'>
<ul>
<li class=\'inline-block\'><a
class=\'html5_video_play_btn inline-block\' id=\'control_btn\'></a></li>
<li class=\'inline-block\'><a id=\'mute_icon\'
class=\'html5_video_mute\'></a>
<div id=\'vol_bar\' class=\'inline-block\'>
<p id=\'vol_value\'></p>
</div></li>
<li class=\'inline-block\' id=\'html5_video_time\'><span
id=\'html5_play_time\'>00:00</span><span>/</span><span
id=\'html5_video_duration\'>33:44</span></li>
<li class=\'inline-block\'><a id=\'html5_video_fullscreen\'
class=\'inline-block\'></a></li>
</ul>
</div>
<div id=\'a\'></div>
</div>
<div id=\'buffered_log\'></div>
</div>
<script type=\"text/javascript\">
require(\'html5/html5_video_player\');
</script>
css
@CHARSET \"UTF-8\";
#wrap_html5_video {
padding: 10px;
width: 360px;
}
#vol_bar,#video_bar,#vol_value {
height: 9px;
background-color: #999999;
}
#vol_bar {
width: 100px;
cursor: pointer;
}
#vol_value {
background-color: #179df7;
width: 50%;
}
#html5_video {
display: block;
border: 1px solid #c0deed;
}
#video_buffer_bar {
background-color: #179DF7;
width: 0;
}
#video_progress_bar,#video_buffer_bar {
position: absolute;
height: 100%;
}
#video_progress_bar {
background-color: #0066FF;
width: 2px;
left: 0;
}
.html5_video_pause_btn,.html5_video_play_btn {
width: 40px;
height: 40px;
cursor: pointer;
}
.html5_video_play_btn {
background: url(\"http://localhost/twitter/images/html5_video.jpg\") 0 0
no-repeat;
}
.html5_video_play_btn:hover {
background: url(\"http://localhost/twitter/images/html5_video.jpg\") -41px
0 no-repeat;
}
.html5_video_pause_btn {
background: url(\"http://localhost/twitter/images/html5_video.jpg\") 0
-42px no-repeat;
}
.html5_video_pause_btn:hover {
background: url(\"http://localhost/twitter/images/html5_video.jpg\") -41px
-42px no-repeat;
}
#play_control a,#vol_bar {
vertical-align: middle;
}
#html5_video_fullscreen {
width: 25px;
background: url(\"http://localhost/twitter/images/html5_video.jpg\") 0
-310px no-repeat;
height: 18px;
}
#play_control #html5_video_time {
font-size: 14px;
}
#play_control li,#play_control ul {
font-size: 0;
}
#play_control li:last-child {
position: absolute;
right: 0;
}
.html5_video_mute1 {
background: url(\"http://localhost/twitter/images/html5_video.jpg\")
no-repeat scroll -79px -170px rgba(0, 0, 0, 0);
}
.html5_video_mute {
background: url(\"http://localhost/twitter/images/html5_video.jpg\")
no-repeat scroll 0 -170px rgba(0, 0, 0, 0);
}
#mute_icon {
cursor: pointer;
display: inline-block;
height: 15px;
width: 18px;
}
.html5_video_mute:hover {
background: url(\"http://localhost/twitter/images/html5_video.jpg\") -19px
-170px no-repeat;
}
#play_control li {
height: 40px;
vertical-align: top;
margin: 0 5px;
}
#play_control li:after {
display: inline-block;
width: 0;
height: 100%;
vertical-align: middle;
content: \'\';
}
#play_control,#video_bar,#vol_bar {
position: relative;
}
body .fullscreen {
position: fixed;
left: 0;
bottom: 0;
width: 100%;
overflow: hidden;
z-index: 2147483647;
background-color: #fff;
}
video::-webkit-media-controls {
display: none !important;
}
本文地址:https://www.stayed.cn/item/8459
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我