使用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"); //音量改變