HTML5视频-等待事件未启动
HTML5 video - Waiting event not firing
我正在处理HTML5视频和自定义控件,我希望使用等待事件来理想地显示加载图像,但现在只需写入控制台即可。
等待事件
播放已停止,因为下一帧不可用,但用户代理期望该帧在适当的时候变得可用。
我在这里举了一个例子->http://jsbin.com/uvipev/2/edit#javascript,html,实时
这是视频代码减去控制:
<video controls preload="meta">
<source src="http://www.tools4movies.com/dvd_catalyst_profile_samples/The%20Amazing%20Spiderman%20tablet.mp4" />
This is video fallback
</video>
这是我等待事件的事件监听器。
var video = document.getElementsByTagName('video')[0];
video.addEventListener('waiting', function() {
console.log('waiting');
}, false);
有人知道为什么不运行吗?等待事件听起来像是我需要的。
您是否希望在视频第一次缓冲时显示等待的图像?如果是这样,那么您可能不是在寻找waiting
。
看看这个演示:http://www.w3.org/2010/05/video/mediaevents.html
如果在没有任何预加载的情况下调用play()
,则应该会看到waiting
被激发,即使是在缓存副本上也是如此。如果在play()
之前调用load()
,则可能永远不会看到waiting
着火,因为下一帧可能始终可用。
最好的过程是显示您的图像,调用load()
,然后监听,等待canplay
或canplaythrough
。此时,隐藏您的图像并启动play()
。
更新
看看这个小提琴里的视频:http://jsfiddle.net/bnickel/zE8F3/Chrome不发送waiting
事件,而是在视频冻结后不久发送stalled
事件。您可能需要检查您支持的每个浏览器的工作情况。请记住,像VideoJS这样的播放器是巨大的(约142KB),因为它们处理许多浏览器不一致的问题。
这里有一个很好的图表,试图记录不同浏览器在"缓冲区不足"场景中的行为,这就是我认为您正在寻找的。
https://web.archive.org/web/20130902074352/http://www.longtailvideo.com/html5/buffering/
不幸的是,浏览器非常不一致,所以虽然我相信"等待"事件是你想要的,但Chrome不会启动它
我一直在尝试根据视频的播放时间"猜测"播放器何时缓冲,检查播放/暂停等。事件,以便我知道时间何时应该增加。
- 从控制器返回后Ajax启动事件激发
- 触摸启动事件未在iframe iOS 6中启动
- preventDefault之后的重新启动事件
- 如何获取在一系列事件中启动事件的元素
- 当窗口打开时,IE9在加载前启动事件
- 我的 JS 代码中的会话启动事件
- 仅当前一个事件完全完成时,才启动事件
- jQuery UI - 如何区分拖动/调整大小启动事件和单击事件
- Javascript “卡住”键(未注册的键启动事件)
- pace.js:“启动”事件未触发
- 在第一次触摸启动事件时禁用所有点击事件是个好主意吗?
- 如何将“拖动启动”事件与 CKEditor 实例分离
- 触摸启动事件上的Javascript触发函数
- 绑定到触摸启动事件,导致自动对焦集中在Mobile Safari中的任何单击上
- 触摸启动事件未在原来隐藏的按钮上工作
- 有没有一种方法可以使触摸启动事件不会触发点击事件
- 检测浏览器窗口是否处于活动状态,并在窗口再次处于活动状态后启动事件[JavaScript]
- 如何检测浏览器是否支持手势启动事件
- 首先启动事件,然后转到url
- 在IE7中无法捕获鼠标启动事件