我正在弄乱HTML5视频和自定义控件,并且希望使用waiting事件来理想地显示正在加载的图像,但是现在只写控制台即可。

等待事件



我在这里设置了一个示例-> http://jsbin.com/uvipev/2/edit#javascript,html,live

这是视频代码减去控件:

<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触发。如果在load()之前调用play(),则可能永远看不到waiting触发,因为下一帧始终可用。

最好的过程是显示图像,调用load(),然后侦听canplaycanplaythrough。此时,隐藏您的图像并开始play()

更新

观看此小提琴中的视频:http://jsfiddle.net/bnickel/zE8F3/在视频冻结后不久,Chrome不会发送waiting事件,而是发送stalled事件。您可能需要检查所支持的每种浏览器的工作方式。请记住,像VideoJS这样的播放器很大(〜142KB),因为它们处理了很多浏览器不一致问题。

关于javascript - HTML5视频-等待事件未触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11403202/

10-10 00:13
查看更多