1. 程式人生 > >使用video標籤實現多個視訊播放

使用video標籤實現多個視訊播放

這兩天在做一個功能,實現視訊切換的功能,即點選按鈕實現視訊內容切換的功能。上圖:


思路很簡單:點選視訊一隱藏視訊二,點選視訊二隱藏視訊一,--,感覺和沒說差不多。

程式碼如下:

<!DOCTYPE html>
<html lang='en'>

<head>
  <meta charset='UTF-8' />
  <meta http-equiv='X-UA-Compatible' content='ie=edge,chrome=1' />
  <meta name='viewport' content='width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, userscalable=no, viewport-fit=cover'
  />
  <meta name='renderer' content='webkit' />
  <meta name='apple-mobile-web-app-capable' content='yes' />
  <meta name='apple-touch-fullscreen' content='yes' />
  <meta name='mobile-web-app-capable' content='yes' />
  <meta name='x5-fullscreen' content='true' />
  <meta name='apple-mobile-web-app-status-bar-style' content='#4F29FE' />
  <meta name='theme-color' content='#4F29FE' />
  <script type="text/javascript" src="home-assets/lib/jquery-2.1.0.min.js" ></script>
  <!--[if lte IE 9]>
    <script src="home-assets/lib/html5shiv.min.js" tppabs="http://www.influencechain.org/home-assets/lib/html5shiv.min.js"></script>
    <script src="home-assets/lib/IE9.js" tppabs="http://www.influencechain.org/home-assets/lib/IE9.js"></script>
    <script src="home-assets/lib/es5-sham.min.js" tppabs="http://www.influencechain.org/home-assets/lib/es5-sham.min.js"></script>
    <script src="home-assets/lib/es5-shim.min.js" tppabs="http://www.influencechain.org/home-assets/lib/es5-shim.min.js"></script>
  <![endif]-->

  <script type="text/javascript">
  //切換視訊
    function changeVideo(type){
      var div_01 = $("#div_01")[0];
      var div_02 = $("#div_02")[0];
      if(type == 1){
        div_01.style = "display:block";
        div_02.style = "display:none";
        //如果video_02正在播放,切換時則暫停2視訊
        if (!video_02.paused){
          video_02.pause(); 
        } 
        if(video_01.paused){
          video_01.play(); 
        }
      }else{
        div_01.style = "display:none";
        div_02.style = "display:block";
        //如果video_01正在播放,切換時則暫停2視訊
        if (!video_01.paused){
          video_01.pause(); 
        } 
        //如果video_02未播放,切換時則播放1視訊
        if(video_02.paused){
          video_02.play(); 
        }
      }
    };
  </script>
</head>
<body>
 <div style="color:#FFF;font-size: 18px;">
  <input type="submit" value="視訊一" onClick="changeVideo(1)"/>
  <input type="submit" value="視訊二" onClick="changeVideo(2)"/>
</div>
  <div  class='video-container'>
    <div id="div_01">
     <video id="video_01" src="home-assets/img/video/fba.mp4" controls="controls">
      your browser does not support the video tag
      </video>
    </div>
    <div id="div_02" style="display:none;">
      <video id="video_02"  src="home-assets/img/video/fba_2.mp4" controls="controls">
      your browser does not support the video tag
      </video>
    </div>
  </div>
 </body>

</html>

附上video標籤的事件(轉載地址:http://www.jb51.net/html5/317406.html)


Media.error; //null:正常
Media.error.code; //1.使用者終止 2.網路錯誤 3.解碼錯誤 4.URL無效
<strong>//網路狀態</strong> 
- Media.currentSrc; //返回當前資源的URL
- Media.src = value; //返回或設定當前資源的URL
- Media.canPlayType(type); //是否能播放某種格式的資源
- Media.networkState; //0.此元素未初始化 1.正常但沒有使用網路 2.正在下載資料 3.沒有找到資源
- Media.load(); //重新載入src指定的資源
- Media.buffered; //返回已緩衝區域,TimeRanges
- Media.preload; //none:不預載 metadata:預載資源資訊 auto:</p>< p><strong>//準備狀態</strong> 
- Media.readyState;//1:HAVE_NOTHING 2:HAVE_METADATA 3.HAVE_CURRENT_DATA 4.HAVE_FUTURE_DATA 5.HAVE_ENOUGH_DATA
- Media.seeking; //是否正在seeking</p>< p><strong>//回放狀態</strong></p>< p>Media.currentTime = value; //當前播放的位置,賦值可改變位置
Media.startTime; //一般為0,如果為流媒體或者不從0開始的資源,則不為0
Media.duration; //當前資源長度 流返回無限
Media.paused; //是否暫停
Media.defaultPlaybackRate = value;//預設的回放速度,可以設定
Media.playbackRate = value;//當前播放速度,設定後馬上改變
Media.played; //返回已經播放的區域,TimeRanges,關於此物件見下文
Media.seekable; //返回可以seek的區域 TimeRanges
Media.ended; //是否結束
Media.autoPlay; //是否自動播放
Media.loop; //是否迴圈播放
Media.play(); //播放
Media.pause(); //暫停
<strong>//視訊控制</strong></p>< p>Media.controls;//是否有預設控制條
Media.volume = value; //音量
Media.muted = value; //靜音
TimeRanges(區域)物件
TimeRanges.length; //區域段數
TimeRanges.start(index) //第index段區域的開始位置
TimeRanges.end(index) //第index段區域的結束位置
<strong>//相關事件</strong></p>< p> var eventTester = function(e){
Media.addEventListener(e,function(){
console.log((new Date()).getTime(),e)
},false);
}
eventTester("loadstart"); //客戶端開始請求資料
eventTester("progress"); //客戶端正在請求資料
eventTester("suspend"); //延遲下載
eventTester("abort"); //客戶端主動終止下載(不是因為錯誤引起)
eventTester("loadstart"); //客戶端開始請求資料
eventTester("progress"); //客戶端正在請求資料
eventTester("suspend"); //延遲下載
eventTester("abort"); //客戶端主動終止下載(不是因為錯誤引起),
eventTester("error"); //請求資料時遇到錯誤
eventTester("stalled"); //網速失速
eventTester("play"); //play()和autoplay開始播放時觸發
eventTester("pause"); //pause()觸發
eventTester("loadedmetadata"); //成功獲取資源長度
eventTester("loadeddata"); //
eventTester("waiting"); //等待資料,並非錯誤
eventTester("playing"); //開始回放
eventTester("canplay"); //可以播放,但中途可能因為載入而暫停
eventTester("canplaythrough"); //可以播放,歌曲全部載入完畢
eventTester("seeking"); //尋找中
eventTester("seeked"); //尋找完畢
eventTester("timeupdate"); //播放時間改變
eventTester("ended"); //播放結束
eventTester("ratechange"); //播放速率改變
eventTester("durationchange"); //資源長度改變
eventTester("volumechange"); //音量改變