MEJS播放器不能正确处理错误,我需要添加更多支持来检测实际发生的情况。在iPhone上,它甚至有时会抛出一个错误事件,但实际上没有错误,你可以正确地播放视频。
打开mediaelement-and-player.js并查找
media.addEventListener('error',function() {
loading.hide();
controls.find('.mejs-time-buffering').hide();
error.show();
error.find('mejs-overlay-error').html("Error loading this resource");
}, false);
然后使用这段代码:
media.addEventListener('error',function() {
var
videoError = error.closest('.mejs-inner').find('video,audio')[0].error,
msg = 'Error loading this resource.';
if (!videoError) {
console.log('MEJS event: error throws but no error found - ignored');
return;
}
loading.hide();
controls.addClass('hidden');
error.closest('.mejs-inner').find('.mejs-overlay-play').hide();
error.show();
switch(videoError.code) {
case videoError.MEDIA_ERR_ABORTED:
msg = 'Video loading aborted';
break;
case videoError.MEDIA_ERR_DECODE:
msg = 'Video file is broken';
break;
case videoError.MEDIA_ERR_NETWORK:
msg = 'Network connection lost';
break;
case videoError.MEDIA_ERR_SRC_NOT_SUPPORTED:
msg = 'Video not supported';
break;
}
console.log('Video error: ' + msg + ', code: ' + videoError.code);
error.find('.mejs-overlay-error').html(msg);
}, false);
如果需要的话,您可以添加自己的处理程序,在不支持的视频情况下切换到720p。
并且在mediaelementplayer.css中添加以下内容(不确定是否实际需要或仅适用于我的主题):
.mejs-overlay-error {
color: white;
background: black;
text-align: center;
font-size: 1.2EM;
}
.mejs-controls.hidden {
display: none !important;
}
这是针对版本2.13.1的,不确定更新版本是否更好。
更新:最新版本2.16.3包含完全相同的无用错误处理程序。