我目前正在使用video.js来让视频看起来更可靠。目前的情况是:在观看视频时,连接中断(失去互联网连接)。
使用chrome并没什么大不了的:我创建了一个函数,将函数附加到错误事件中,如果发生错误,我的函数能够恢复(在这种情况下,它只是尝试重新加载视频并寻求到最后的已知位置)。
在Firefox上没有任何事情发生。永远不会出现错误。 我尝试解决这个问题并注意到firefox似乎认为文件在网络中断时已完全加载。因此bufferedPercent跳转到1并且也会触发loadedalldata事件。对我而言,这似乎只是被打破了,但我无法将其归结为firefox或video.js问题。
其他人有这样的问题或知道更好的方法来解决这些问题吗?
背景信息:为了测试这个案例,我运行了两个运行nginx并提供视频文件的Web服务器的HAProxy。为了解决我的问题,我只是杀死当前正在传递流的nginx。所以重新连接应该可以正常工作(只要另一个当然仍在工作;)
谢谢和问候, Darkman
答案 0 :(得分:1)
你是绑定视频标签上的错误而不是源标签吗? 如上所述here:
而不是将错误事件分派到媒体元素本身,它现在被传递到与导致错误的源相对应的子元素。
<video controls id="videoTag" width="640" height="360" preload="auto">
<source src="pathto.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' id="mp4Source">
<source src="pathto.webm" type='video/webm; codecs="vp8.0, vorbis"' id="webmSource">
</video>
<script type="text/javascript">
document.getElementById('mp4Source').addEventListener('error', function(ev) {
alert('mp4Source error');
}, false);
document.getElementById('webmSource').addEventListener('error', function(ev) {
alert('webmSource error');
}, false);
document.getElementById('videoTag').addEventListener('error', function(ev) {
alert('videoTag error');
}, false);
document.getElementById('videoTag').addEventListener('stalled', function(ev) {
alert('videoTag stalled');
}, false);
</script>
编辑:还检查停止的事件,因为当媒体资源正在下载时断开网络时会触发该事件。 Source
当检测到HTML5视频上的播放/网络错误时,我通常会使用遵循此section末尾代码的内容。 感谢