• html5--视频播放器实例


    html5--视频播放器实例

    总结:

    1、相对定位绝对定位的区别,两者都是浮起来了

    2、属性和方法都是有对象的,搞清楚对象之后,属性和方法就很好用了,我们一般可以用document.getElementById("video");来获取对象

    3、在外部修改html属性的时候,innerHTMLstyle是相对的,前者关注内容,后者关注样式

    4、我们可以用event来获取刚刚操作的那个对象,然后来修改它的样式和内容,用法是event.target,例如event.target.innerHTML=';'

    5、视频的前进或者后退都是通过视频对象的currentTime属性来实现的

    6、视频设置声音直接操作视频对象的volume对象即可

    7、进度条的响应?window.onload方法+timeupdate事件,相对于每秒更新一次Progress

    video.addEventListener('timeupdate',Progress)

    8、offsetX,offsetY 发生事件的地点在事件源元素的坐标系统中的 x 坐标和 y 坐标

    var w=parseInt(document.getElementById("probar").style.width)

    video.currentTime = video.duration * (event.offsetX /w);

    这段代码时进度条改变之后更新video

    9、截屏功能则只需要操作canvas的对象的drawImage方法即可,因为这个方法可以操作视频

    10、下面是一波css属性,把这些单词记住就ok了

    outline: none;去掉button的边框

    border-radius: 10px;边框圆角

    opacity: 0;设置为透明

    font-family:'Webdings';设置字体

    display: block;display属性

    cursor: pointer;设置鼠标样式

    background-image:linear-gradient(-30deg,rgb(8,0,0),rgb(32,0,0) 30%,rgb(120,0,0) 60%,rgb(250,0,0) 100%);线性渐变

    animation: keframe 1s linear infinite;关键帧动画

      1 <!DOCTYPE html>
      2 <html lang="zh-cn">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>8-33 课堂演示</title>
      6     <style type="text/css">
      7         /*父亲设置定位属性,孩子好偏移*/
      8         #main{
      9             width: 800px;height: 600px;
     10             position: relative;
     11         }
     12         /*都是按钮*/
     13         button{
     14             outline: none;
     15         }
     16         /* 播放控件区*/
     17         .bar{
     18             border:1px solid;
     19             position: relative;
     20             width: 100%;height: 15%;
     21             background: #ccc;
     22             border-radius: 10px;
     23             opacity: 0;
     24         }
     25         .bar:hover{
     26             opacity: 1;
     27         }
     28         #playorpause,.next,.back,.muted0,#vol,.pic{
     29             display: block;background: orange;
     30             border-radius: 48px;cursor: pointer;position: absolute;
     31             font-family:'Webdings';
     32             font-size:48px;color: green;
     33         }
     34         #playorpause{
     35             bottom: 20%;left: 45%;    
     36         }
     37         .next{
     38             bottom: 20%;left: 55%;
     39         }
     40         .back{
     41             bottom: 20%;left: 35%;
     42         }
     43         .muted0{
     44             width: 48px; height:48px;
     45             font-size: 42px;
     46             bottom: 23%;right: 25%;
     47         }
     48         #vol{
     49             width: 20%;
     50             bottom: 40%;right: 2%;
     51         }
     52         .pic{
     53             bottom: 20%;left: 20%;
     54             background: white;
     55         }
     56         #progress{
     57             position: absolute;
     58             height: 15px;
     59             width: 10px;
     60             border-radius: 10px;
     61 
     62             background-size: 30px 20px;
     63             background-image:linear-gradient(-30deg,rgb(8,0,0),rgb(32,0,0) 30%,rgb(120,0,0) 60%,rgb(250,0,0) 100%);
     64             animation: keframe 1s linear infinite;
     65         }
     66         #probar{
     67             background:rgba(10,30,10,0.3);
     68             height:15px;
     69         }
     70         @keyframes keframe
     71         {
     72             0%   {background-position: 0 0}
     73             100% {background-position: 60px 10px}
     74         }
     75     </style>
     76 </head>
     77 <body>
     78     <div id="main">
     79         <video id="video" src="qsmy.mp4" controls="controls" width="800"></video>
     80         <div class="bar">
     81             <div id="probar" style=" 800px;"><div id="progress"></div></div>
     82             <button id="playorpause" onclick="PlayOrPause()">4</button>
     83             <button  class="next" onclick="Next()">8</button>
     84             <button  class="back" onclick="Prev()">7</button>
     85             <button  class="muted0" onclick="Muted()">X</button>
     86             <input id="vol" type="range" min="0" max="1" step="0.1" onchange="Volume()">
     87             <button class="pic" onclick="CatchPicture()"><img src="xj2.png" alt="" width="48"></button>
     88         </div>
     89         <canvas id="canvas" width="800" height="600"></canvas>
     90     </div>
     91     <script>
     92         var video = document.getElementById("video");
     93     //播放和暂停
     94     function PlayOrPause(e)
     95     {
     96         if(video.paused)
     97         {
     98             //1、style怎么来
     99             //2、event怎么用
    100             //3、innerHTML和style是并列的,一个设置内容一个设置样式
    101             video.play();
    102             event.target.innerHTML=';'
    103             event.target.style.color='red'  
    104         }
    105         else{
    106             video.pause();
    107             event.target.innerHTML='4' 
    108             event.target.style.color='green'  
    109         }
    110     }
    111     //前进和后退
    112     function Prev(){
    113         video.currentTime-=60;
    114     }
    115     function Next(){
    116         video.currentTime+=60;
    117     }
    118     //设置静音
    119     function Muted(){
    120         if (video.muted) {
    121              //从静音到非静音的操作
    122              video.muted=false;
    123              event.target.innerHTML='X'
    124              event.target.style.background='orange'
    125              document.getElementById('vol').value=video.volume
    126 
    127          }else{
    128              //设置静音操作
    129              video.muted=true;
    130              event.target.innerHTML='x'
    131              event.target.style.background='white'
    132              document.getElementById('vol').value=0;    
    133          }
    134      }
    135     //设置声音
    136     function Volume(){
    137         //event的target对象
    138         video.volume=event.target.value;
    139     }
    140      //进度条
    141      function Progress(){
    142          var progress=document.getElementById('progress')
    143          progress.style.width=(video.currentTime/video.duration)*100+'%'
    144      }
    145      window.onload=function(){
    146          var progress=document.getElementById("progress");
    147          var probar=document.getElementById("probar");
    148          probar.addEventListener('click',progress_click)
    149          video.addEventListener('timeupdate',Progress)
    150      }
    151      function progress_click(){
    152          var progress=document.getElementById("progress");
    153          var w=parseInt(document.getElementById("probar").style.width)
    154         //alert(event.offsetX/w)  //offsetX,offsetY    发生事件的地点在事件源元素的坐标系统中的 x 坐标和 y 坐标。
    155         if(event.offsetX){
    156             video.currentTime = video.duration * (event.offsetX /w);
    157         }
    158     }
    159 
    160     function CatchPicture(){
    161         var canvas=document.getElementById("canvas");
    162         var ctx=canvas.getContext('2d');
    163         ctx.clearRect(0,0,canvas.width,canvas.height)
    164         ctx.drawImage(video,0,0,canvas.width,canvas.height);
    165     }
    166 </script>    
    167 </body>
    168 </html>
  • 相关阅读:
    OpenGL纹理映射总结
    研究生常用网站:
    Oracle 11g,10g数据库软件下载地址
    <转>乔布斯羡慕嫉妒恨的人:Android之父安迪·鲁宾
    VC6里面的中文名字或者注释复制乱码解决
    基于CentOs的Hadoop集群全分布式部署<转>
    centos架设FTP服务器
    centos 卸载 jdk
    ESX的 企业版许可证
    vsftpd的 553 Could not create file
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/8207490.html
Copyright © 2020-2023  润新知