android上的html5视频 - 意外的currentTime行为

时间:2013-02-22 04:26:19

标签: android html5 html5-video

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

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

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

1 个答案:

答案 0 :(得分:1)

您可以使用“seekable”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

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