0

我在 Android 平板电脑上加载的页面上有一个视频元素。有一个带有以下事件侦听器的自定义播放按钮:

play_button.addEventListener("click", function () 
   { video.play(); tap_to_play.innerHTML = ''; 
     video.currentTime = offset; 
     console.log(video.currentTime); }, false);

我第一次按下按钮时,它会跳到错误的时间。记录的 currentTime 将为 100,即使视频似乎跳到大约 1400。如果我在播放时再次按下按钮,或者暂停并再次按下按钮,它将转到正确的时间。我怎样才能让它第一次跳到正确的位置?

4

1 回答 1

1

您可以使用“可搜索的” TimeRange对象来确定视频文件是否可以实际搜索到该位置 - 否则它将无法工作。这是一个简单的函数,true如果所需时间在范围内,则返回:

function isSeekable(video, time) {
  if(video.seekable && video.seekable.length>0) { 
    for(var i=0, l=video.seekable.length; i<l; i++) {
      if(time>video.seekable.start(i) && time<video.seekable.end(i)) 
        return true;
    }
  }
  return false;
}

查看下面的 jsbin 以获取适用于 Android 4.1 的示例。它可能也适用于 3.1,但您将很难找到支持 2.3 或更低版本的解决方案:

http://jsbin.com/udovax/1/edit

(我有兴趣找到一个更好的事件来连接它 - 我使用的超时是一个快速而丑陋的黑客)

于 2013-02-27T20:26:56.527 回答