video 缓存进度

代码如下

var video=$('.video-js');
var allDuration=video[0].duration;
var t2 = window.setInterval("checkLoading()",100);

function checkLoading() {
 var allBuffered=video[0].buffered.end(0);
    for(var i=0;i<video.length;i++){
     allBuffered += video[0].buffered.end(0);
    }
    if(allBuffered >= allDuration){//缓存完

    }else{
        var num=parseInt(allDuration/allBuffered);
        $(".loading .tips span").text(num);
     }
}

第一个问题就是缓存的进度video[0].buffered.end(0)
我的视频是58.62s,但它好像缓存到17.92左右就一直不变了。

第二个问题就是又是video[0].buffered.end(0)会报错:

(index):256 Uncaught DOMException: Failed to execute 'end' on 'TimeRanges': The index provided (0) is greater than or equal to the maximum bound (0).

求解,谢谢!

阅读 10.9k
2 个回答

第一个问题不清楚,第二个解决方法如下:
在 获取video[0].buffered.end(0)前,先判断一下 video[0].buffered.length是不是大于 0

    if(video[0].buffered.length != 0){
        allBuffered += video[0].buffered.end(0);
    }
新手上路,请多包涵

seekable属性;返回代表视频、声频可移动播放部分的TimeRanges对象
试试这个

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题