我正在尝试拍摄一些未播放视频的图像。 因此我使用HTML5。
因为我想抓取尚未播放的图像,所以我设置了
video.currentTime = y;
如果我现在调用grap函数它将无效。
因为video.readyState
是1(而不是4)。
如果我在抓取功能的开头添加一个alert();
就行了。
我尝试使用
循环到readyState == 4
while(true){
if(video.readyState == 4){
grapImage();
}
}
但这最终会无休止地循环。
那我怎么能等到readyState == 4
?
由于
答案 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