偶尔*我们的网络应用主机很慢(不确定为什么),我们的网络应用中的短视频片段无法播放。
是否有一些可靠的"视频已启动"或"视频已完成"在Chrome和Safari(当前版本)中触发的事件?
答案 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 - 包括它不会有什么伤害。
祝你好运。