如何判断短片(< 10s)HTML5视频片段是否已开始正常播放?

时间:2014-08-04 20:45:21

标签: google-chrome safari html5-video

偶尔*我们的网络应用主机很慢(不确定为什么),我们的网络应用中的短视频片段无法播放。

是否有一些可靠的"视频已启动"或"视频已完成"在Chrome和Safari(当前版本)中触发的事件?

  • 我们不知道有多频繁"偶尔"是(因此这个问题:))

1 个答案:

答案 0 :(得分:1)

此参考:http://www.w3schools.com/tags/ref_av_dom.asp包含所有HTML5音频/视频属性,方法和事件。

我最近使用html5音频标签实现了录音机和播放功能,并且播放& 已结束事件总是被解雇(在所有情况下,例如,safari,firefox和& chrome ......我们不支持Opera,所以我没有测试它)。

在你的情况下,如果播放事件至少触发一次,并且触发了已结束的事件,我会说这是视频播放的结论。

如果这些事件中的一个或两个都没有触发,那么我建议您查看音频/视频元素的其他一些属性(即 readyState canPlayThrough )确认媒体源可用。

有关更详细的调试,我建议使用以下console.log调试,以便您了解正在发生的所有事件。这个例子使用的是jQuery,但可以在没有:

的情况下轻松实现
var video = $("#player video")[0];
$(video)
.bind('loadstart', function() {
        console.log("Loadstart");
    if(video.networkState === 3){
        console.log("Error loading file");
    }
})  .bind('loadedmetadata', function() {
    console.log('loadedMetaData');
})
.bind('stalled', function (){
    console.log('stalled');
})
.bind('suspend', function(){
    console.log('suspend');
).
.bind('canplaythrough', function() {
    console.log('canplaythrough');
})
.bind('play', function() {
    console.log('play');
})
.bind('pause', function() {
    console.log('pause');
})
.bind('ended', function() {
    console.log('ended');
});

虽然上述代码无法为您解决问题,但它可能会暴露您未被触发的视频播放器中的事件。我注意到safari会停止,比其他浏览器更多地暂停事件。虽然包含错误'是有意义的。事件,我从来没有看到它自己开火.... YMMV - 包括它不会有什么伤害。

祝你好运。