MediaElement.buffered IndexSizeError

时间:2018-05-31 07:21:38

标签: javascript

我尝试获取媒体元素的缓冲部分(特别是我尝试从video元素获取它,但我希望它也能够使用audio),但是当我使用时具有一些偏移量的start()end()函数(例如,0),日志返回以下错误:

  

IndexSizeError:索引或大小为负数或大于允许的数量

我的代码出了什么问题?

var mediaelement = function(e) {
    return e.buffered.start(0);
}

console.log(mediaelement(document.querySelector('video')));

1 个答案:

答案 0 :(得分:0)

最有可能的是,当你打电话给你的功能时,没有任何缓冲 在致电e.buffered.lengthTimeRanges.start()之前,您应该先向TimeRanges.end()添加支票:



function getbufferedstart(el) {
  if(el.buffered.length) {
    return el.buffered.start(0);
  }
  else {
    return 'avoided a throw';
  }
}
   
var a = new Audio('https://dl.dropboxusercontent.com/s/8c9m92u1euqnkaz/GershwinWhiteman-RhapsodyInBluePart1.mp3');
a.onloadedmetadata = onwehavebufferedsomething;

console.log(getbufferedstart(a)); // avoided
console.log('really ?');
a.buffered.start(0); // Error

function onwehavebufferedsomething(evt) {
  console.log("now it's ok");
  console.log(getbufferedstart(a));  // 0
}

body>.as-console-wrapper{max-height:100vh}