需求說明:
視頻正文頁在做視頻聯(lián)播時會遇到視頻無法播放或者解析異常的情況,希望遇到有問題視頻時可以跳過當(dāng)前視頻。
事件說明:
Video對象可以通過
ontimeupdate
事件來報告當(dāng)前的播放進度,即在播放位置發(fā)生改變時觸發(fā)該事件,我們可以通過監(jiān)聽該事件來判斷視頻是否正常播放洋闽。
實例說明:
視頻無法播放
是視頻點擊播放按鈕后停留在0秒公荧,此時已經(jīng)觸發(fā)timeupdate
事件。視頻解析異常
則是不會觸發(fā)timeupdate
事件他炊,所以實例中我們通過這兩種方式來進行判斷。
var videoJudje = false;//用于判斷無法解析
var currentTime = 0;//用于判斷無法播放
var videoDom = document.getElementById("video");
function getWrongVideo(videoDom){
var videoWrong;//定時器
videoDom.addEventListener("timeupdate",videoShow,"false");
function videoShow(){
videoJudje = true;
currentTime = videoDom.currentTime;
if(currentTime > 1){
videoDom.removeEventListener("timeupdate",videoShow,"false");
clearTimeout(videoWrong);
}
};
videoWrong = setTimeout(function(){
if(videoJudje == false||currentTime == 0){
//此處添加發(fā)現(xiàn)錯誤視頻之后的處理函數(shù)
videoDom.removeEventListener("timeupdate",videoShow,"false");
}
},5000);
}
缺陷說明:
- 雖然條件判斷為
currentTime>1
時移除timeupdate
監(jiān)聽已艰,但是由于執(zhí)行時間的問題痊末,通常currentTime
到4、5秒才執(zhí)行移除哩掺。 - 通過定時器延遲5秒來判斷視頻是否出問題凿叠,在網(wǎng)速等相關(guān)問題的影響下,會發(fā)生誤判嚼吞,及好的可以正常播放的視頻也會被判斷為有問題的盒件,所以該判斷無法達到絕對準(zhǔn)確
ps:有錯誤的地方還請多多指教