html5视频在设置currentTime后等待readystate == 4

时间:2014-02-11 11:04:05

标签: javascript html5 video html5-video readystate

我正在尝试拍摄一些未播放视频的图像。 因此我使用HTML5。

因为我想抓取尚未播放的图像,所以我设置了

video.currentTime = y;

如果我现在调用grap函数它将无效。 因为video.readyState是1(而不是4)。 如果我在抓取功能的开头添加一个alert();就行了。

我尝试使用

循环到readyState == 4
while(true){
   if(video.readyState == 4){
       grapImage();
   }
}

但这最终会无休止地循环。

那我怎么能等到readyState == 4

由于

3 个答案:

答案 0 :(得分:5)

好的我用事件监听器seeked解决了它。

如果您更改当前时间,它会在seeking完成后更改为seeked。{p> 1}。 loadedmetadata事件也是一个选项,但seeked是最快的。

感谢您的帮助。

答案 1 :(得分:3)

查看http://www.w3.org/2010/05/video/mediaevents.html以了解要收听的相关事件。尝试收听'loadedmetadata'事件,而不是在load()之后立即设置currentTime,因为这表示为视频加载了所有持续时间/时间信息('canplay'也有效)。

video.addEventListener('loadedmetadata', function () { console.log('video duration information available'); });

答案 2 :(得分:0)

对媒体使用“可以播放”。根据MDN网站文档,媒体事件“ canplay”对应于HAVE_ENOUGH_DATA readyState,即readyState 4。

https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events