zoukankan      html  css  js  c++  java
  • html5 自制播放器

    代码实例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>无标题文档</title>
        <style>
            *{margin:0; padding:0;}
            #div1{300px; height:30px; background:#666; overflow:hidden; position:relative;}
            #div2{60px; height:30px; background:red; position:absolute; left:0; top:0;}
    
            #div3{300px; height:10px; background:#666; overflow:hidden; position:relative;top:10px;}
            #div4{60px; height:10px; background:yellow; position:absolute; left:240px;top:0;}
    
        </style>
        <script>
    
            window.onload= function(){
                var oV = document.getElementById('v1');
                var aInput = document.getElementsByTagName('input');
                var oDiv1 = document.getElementById('div1');
                var oDiv2 = document.getElementById('div2');
                var oDiv3 = document.getElementById('div3');
                var oDiv4 = document.getElementById('div4');
                var disX = 0;
                var disX2 = 0;
                var timer = null;
                aInput[0].onclick = function(){
    
                    if( oV.paused ){//如果是暂停的
                        oV.play();
                        this.value = '暂停';
                        nowTime();
                        timer =setInterval(nowTime,1000);
                    }
                    else{
                        oV.pause();
                        this.value = '播放';
                        clearInterval(timer);
                    }
    
                };
                aInput[2].value = changeTime(oV.duration);
                aInput[3].onclick = function(){
    
    
                    if( oV.muted ){
    
                        oV.volume = 1;
    
                        this.value = '静音';
    
                        oV.muted = false;
    
                    }
                    else{
    
                        oV.volume = 0;
    
                        this.value = '取消静音';
    
                        oV.muted = true;
    
                    }
    
                };
                aInput[4].onclick = function(){
                    oV.mozRequestFullScreen();
                };
                function nowTime(){
    
                    aInput[1].value =changeTime(oV.currentTime);
                    //获取比例
                    var scale =oV.currentTime/oV.duration;
                    //设置位置
                    oDiv2.style.left = scale * 240 +'px';
    
                }
                function changeTime(iNum){
    
                    iNum = parseInt( iNum );
    
                    var iH =toZero(Math.floor(iNum/3600));
                    var iM =toZero(Math.floor(iNum%3600/60));
                    var iS = toZero(Math.floor(iNum%60));
    
                    return iH + ':' +iM + ':' + iS;
    
                }
                function toZero(num){
                  if(num<=9) {
                      return '0'+num;
    
                  }
                    else{
                        return '' + num;
                    }
                }
                oDiv2.onmousedown = function(ev){
                    var ev = ev || window.event;
                    disX = ev.clientX - oDiv2.offsetLeft;
    
                    document.onmousemove = function(ev){
                        var ev = ev || window.event;
                        var L = ev.clientX - disX;
                        if(L<0){
                            L = 0;
                        }
                        else if(L>oDiv1.offsetWidth - oDiv2.offsetWidth){
                            L = oDiv1.offsetWidth- oDiv2.offsetWidth;
                        }
    
                        oDiv2.style.left = L + 'px';
    
                        //找出0到1的比例
                        var scale =L/(oDiv1.offsetWidth - oDiv2.offsetWidth);
                        //得到拖拽后当前的时间
                        oV.currentTime = scale *oV.duration;
                        //让当前时间更新
                        nowTime();
    
                    };
                    document.onmouseup = function(){
                        document.onmousemove = null;
                    };
                    return false;
                };
                oDiv4.onmousedown = function(ev){
                    var ev = ev || window.event;
                    disX2 = ev.clientX -oDiv4.offsetLeft;
    
                    document.onmousemove = function(ev){
                        var ev = ev || window.event;
    
                        var L = ev.clientX - disX2;
    
                        if(L<0){
                            L = 0;
                        }
                        else if(L>oDiv3.offsetWidth - oDiv4.offsetWidth){
                            L =oDiv3.offsetWidth - oDiv4.offsetWidth;
                        }
    
                        oDiv4.style.left = L + 'px';
    
                        var scale =L/(oDiv3.offsetWidth - oDiv4.offsetWidth);
                        oV.volume = scale;
    
                    };
                    document.onmouseup = function(){
                        document.onmousemove = null;
                    };
                    return false;
                };
            };
    
        </script>
    </head>
    
    <body>
    <video id="v1" >
    
    
    <source src="陈奕迅 - 陪你度过漫长岁月.mp4"  ></source>
    
    </video><br/>
    <input type="button" value="播放" />
    <input type="button" value="00:00:00" />
    <input type="button" value="00:00:00" />
    <input type="button" value="静音" />
    <input type="button" value="全屏" />
    <div id="div1">
    <div id="div2">
    </div>
    </div>
    <div id="div3">
    <div id="div4"></div>
    </div>
    
    </body>
    </html>

     2017-09-03   23:07:12 

  • 相关阅读:
    C# 之 读取Word时发生 “拒绝访问” 及 “消息筛选器显示应用程序正在使用中” 异常的处理
    sctp和tcp的区别
    kmalloc/kfree,vmalloc/vfree函数用法和区别
    C语言中volatile关键字的作用
    嵌入式开发之NorFlash 和NandFlash
    linux中断--中断嵌套&中断请求丢失
    Linux 套接字编程中的 5 个隐患
    socket编程中write、read和send、recv之间的区别
    HTTP/1.1 Range和Content-Range
    探讨read的返回值的三种情况
  • 原文地址:https://www.cnblogs.com/guangzhou11/p/7471646.html
Copyright © 2011-2022 走看看