6

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

因为我要抓取没有播放过的图片,所以我设置了

video.currentTime = y;

如果我现在调用 grap 函数,它将不起作用。因为video.readyState是 1(而不是 4)。如果我在抓取功能的开头添加alert();它就可以了。

我试图循环readyState == 4直到

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

但这最终陷入了无限循环。

那我怎么能等到readyState == 4呢?

谢谢

4

3 回答 3

7

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

如果您更改当前时间,它会在seeking完成后更改为seeked。该loadedmetadata事件也是一种选择,但seeked它是最快的。

谢谢你的帮助。

于 2014-02-19T12:55:47.657 回答
3

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

video.addEventListener('loadedmetadata', function () { console.log('video duration information available'); });
于 2014-02-17T16:08:51.737 回答
0

对媒体使用“canplay”。根据 MDN 网络文档,媒体事件“canplay”对应于 HAVE_ENOUGH_DATA 就绪状态,即就绪状态 4。

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

于 2018-07-29T17:47:43.823 回答