zoukankan      html  css  js  c++  java
  • h5 的video视频控件

    h5 的video视频控件

          由于html5的流行,其中的video视频的使用很流行,使得可恨的IE9也能与时俱进了。

    video所支持的格式有mp4、ogg和wav三种。

    例:

    HTML5 Video基础标签

    `

    <video id="myVideo" controls    poster="video.jpg" width="640" height="320" >
      <source src="video.mp4" type="video/mp4" />
       <source src="video.wav" type="video/wav" />
       <source src="video.ogv" type="video/ogg" />
       <p>Your browser does not support the video tag.</p>
     </video>`
    

    下面制作Video的控件controls

    本人是通过jQuery来进行获取标签及相应的控件使用操作的

    Video Play/Pause Controls 播放/暂停 按钮

    通过jQuery来控制video的播放、暂停

    jQuery代码
    $('.btnPlay').on('click', function() {
        if(video[0].paused) {
           video[0].play();
         }
         else {
            video[0].pause();
         }
         return false;
     };
    html代码
    <div class="control">
        <a href="#" class="btnPlay">Play/Pause</a>
    </div>

    显示视频播放时间和持续时间

    看视频肯定最好要有个时间的概念啦!!!

    jQuery代码
    video.on('loadedmetadata', function() {
       $('.duration').text(video[0].duration);
    });
    
    //update HTML5 video current play time
    video.on('timeupdate', function() {
       $('.current').text(video[0].currentTime);
    });
    html代码
    <div class="progressTime">
       当前播放时间: <span class="current"></span>
       总时间: <span class="duration"></span>
    </div>

    视频进度条

    动态模拟时间

    css样式
    .progressBar
    {
       position: relative;
        100%;
       height: height:10px;
       backgroud-color: #000;
    }
    .timeBar
    {
       position: absolute;
       top: 0;
       left: 0;
        0;
       height: 100%;
       background-color: #ccc;
    }
    jQuery代码
    //get HTML5 video time duration
    video.on('loadedmetadata', function() {
       $('.duration').text(video[0].duration));
    });
    
    //update HTML5 video current play time
    video.on('timeupdate', function() {
       var currentPos = video[0].currentTime; //Get currenttime
       var maxduration = video[0].duration; //Get video duration
       var percentage = 100 * currentPos / maxduration; //in %
       $('.timeBar').css('width', percentage+'%');
    });
    var timeDrag = false;   /* Drag status */
    $('.progressBar').mousedown(function(e) {
       timeDrag = true;
       updatebar(e.pageX);
    });
    $(document).mouseup(function(e) {
       if(timeDrag) {
          timeDrag = false;
          updatebar(e.pageX);
       }
    });
    $(document).mousemove(function(e) {
       if(timeDrag) {
          updatebar(e.pageX);
       }
    });
    
    //update Progress Bar control
    var updatebar = function(x) {
       var progress = $('.progressBar');
       var maxduration = video[0].duration; //Video duraiton
       var position = x - progress.offset().left; //Click pos
       var percentage = 100 * position / progress.width();
    
       //Check within range
       if(percentage > 100) {
          percentage = 100;
       }
       if(percentage < 0) {
          percentage = 0;
       }
    
       //Update progress bar and video currenttime
       $('.timeBar').css('width', percentage+'%');
       video[0].currentTime = maxduration * percentage / 100;
    };
    html代码
    <div class="progressBar">
       <div class="timeBar"></div>
    </div>

    缓冲栏

    看视频时缓冲加载了多少

    样式
    <style>
    .progressBar {
       position: relative;
        100%;
       height: height:10px;
       backgroud-color: #000;
    }
    .bufferBar {
       position: absolute;
       top: 0;
       left: 0;
        0;
       height: 100%;
       background-color: #ccc;
    }
    </style>
    <div class="progressBar">
       <div class="bufferBar"></div>
    </div>
    Html5 Video缓冲属性将返回一个对象的缓存范围.因此,我们将使用缓存数据的最后一个值.
    //loop to get HTML5 video buffered data
    var startBuffer = function() {
       var maxduration = video[0].duration;
       var currentBuffer = video[0].buffered.end(0);
       var percentage = 100 * currentBuffer / maxduration;
       $('.bufferBar').css('width', percentage+'%');
    
       if(currentBuffer < maxduration) {
          setTimeout(startBuffer, 1000);
       }
    };
    setTimeout(startBuffer, 1000);

    音量控制

    当然啦!看视频肯定得调个音量哦!!!

    html代码

    <a href="#" class="muted" >Mute/Unmute</a>
    <div class="volumeBar">
       <div class="volume"></div>
    </div>
    jQuery代码
    //Mute/Unmute control clicked
    $('.muted').click(function() {
       video[0].muted = !video[0].muted;
       return false;
    });
    
    //Volume control clicked
    $('.volumeBar').on('mousedown', function(e) {
       var position = e.pageX - volume.offset().left;
       var percentage = 100 * position / volume.width();
       $('.volumeBar').css('width', percentage+'%');
       video[0].volume = percentage / 100;
    });

    快进/快退 倒带控制

    Video有个属性playbackrate来控制视屏的播放进程

    html代码

    <div class="control">
       <a href="#" class="ff">Fast Forward</a>
       <a href="#" class="rw">Rewind</a>
       <a href="#" class="sl">Slow Motion</a>
    </div>
    jQuery代码
    //Fast forward control
    $('.ff').on('click', function() {
       video[0].playbackrate = 3;
       return false;
    });
    
    //Rewind control
    $('.rw').on('click', function() {
       video[0].playbackrate = -3;
       return false;
    });
    
    //Slow motion control
    $('.sl').on('click', function() {
       video[0].playbackrate = 0.5;
       return false;
    });
    然而很不幸的是:FireFox不支持playbackrate属性.以及有些版本的chrome浏览器不支持负值(倒带).到目前为止,只有Safri浏览器完全支持.所以请大家注意啦!

    全屏播放

    jQuery代码
    $('.fullscreen').on('click', function() {
       //For Webkit
       video[0].webkitEnterFullscreen();
    
       //For Firefox
       video[0].mozRequestFullScreen();
    
       return false;
    });

    开灯关灯控制

    jQuery代码
    $('.btnLight').click(function() {
       if($(this).hasClass('on')) {
          $(this).removeClass('on');
          $('body').append('<div class="overlay"></div>');
          $('.overlay').css({
             'position':'absolute',
             'width':100+'%',
             'height':$(document).height(),
             'background':'#000',
             'opacity':0.9,
             'top':0,
             'left':0,
             'z-index':999
          });
          $('#myVideo').css({
             'z-index':1000
          });
       }
       else {
          $(this).addClass('on');
          $('.overlay').remove();
       }
       return false;
    });

    好了!终于给整的差不多了!!!

  • 相关阅读:
    Zoj 2913 Bus Pass BFS
    Poj 1324 Holedox Moving 状压判重+BFS
    Poj 1465 Multiple BFS+余数判重
    HDU 1010 Tempter of the Bone dfs+剪枝
    Poj 1659 Frogs' Neighborhood 图的可图性判断
    ZOJ 3203 Light Bulb 三分
    HDU 1698 Just a Hook(线段树的区间修改)
    HDU 1698 Just a Hook(线段树的区间修改)
    Codeforces 1261B2 Optimal Subsequences (Hard Version)(树状数组)
    Codeforces 1261B2 Optimal Subsequences (Hard Version)(树状数组)
  • 原文地址:https://www.cnblogs.com/Firesun/p/10127158.html
Copyright © 2011-2022 走看看