通过video的timeupdate事件检测视频无法播放实例说明

需求说明:

视频正文页在做视频联播时会遇到视频无法播放或者解析异常的情况,希望遇到有问题视频时可以跳过当前视频。

事件说明:

Video对象可以通过ontimeupdate事件来报告当前的播放进度,即在播放位置发生改变时触发该事件,我们可以通过监听该事件来判断视频是否正常播放。

实例说明:

视频无法播放是视频点击播放按钮后停留在0秒,此时已经触发timeupdate事件。视频解析异常则是不会触发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){
            //此处添加发现错误视频之后的处理函数                                  
            videoDom.removeEventListener("timeupdate",videoShow,"false");
        } 
    },5000);
}

缺陷说明:

  • 虽然条件判断为currentTime>1时移除timeupdate监听,但是由于执行时间的问题,通常currentTime到4、5秒才执行移除。
  • 通过定时器延迟5秒来判断视频是否出问题,在网速等相关问题的影响下,会发生误判,及好的可以正常播放的视频也会被判断为有问题的,所以该判断无法达到绝对准确
    ps:有错误的地方还请多多指教
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容