我已经使用Dash.js播放器播放MPEG-DASH视频。视频是从服务器上拉出的。由于服务器问题,有时会有404错误,我想通过检测404错误并相应地在后台重试该流。
问题是我不能捕获错误,它是从行抛出的
req.send();它在一个名为FragmentLoader.js的文件中。
我尝试了以下错误处理:
window.addEventListener('error', function(e) {
console.log("Item: " + e.message);
}, true);
var oReq = new XMLHttpRequest();
oReq.addEventListener("error", function (e) {
console.log("xml item: " + e.message);
}, true);
$(document).ajaxError(function (event, xhr, ajaxOptions, errorThrown) {
alert("ajax erorr");
});但是,这些条件都不能捕获错误。有没有办法捕捉这些从dash.js播放器抛出的错误?
发布于 2016-03-01 02:58:45
Dash.js在404上有内部重试逻辑-它将在放弃之前重试3次(因此总共4次尝试)。有一些关于进一步改善这种行为的讨论,比如尝试其他可用的表示,但还没有。
但是,这取决于页面检测到的404。有一些XHR错误在JavaScript可以看到的内容方面是完全沉默的,即使在控制台的req.send()行上记录了一个错误,这就是我在这里看到的行为:https://github.com/Dash-Industry-Forum/dash.js/issues/1209
如果请求确实抛出了Dash.js的错误处理已经处理、重试然后放弃的404,那么您可以绑定到它的error事件:
var url = "http://dash.edgesuite.net/envivio/Envivio-dash2/manifest.mpd";
var player = dashjs.MediaPlayer().create();
player.initialize(document.querySelector("#videoPlayer"), url, true);
player.on('error', function(e) {
if (e.error === 'download') {
// dash.js gave up loading something
// e.event.id will tell you what it failed to load (mpd, segment...)
// and e.event.url will have the URL that failed
}
});发布于 2016-03-01 01:12:23
我已经有一段时间没有写代码了,但是如果内存正常,您应该能够通过检查错误状态属性来确定它是404
var oReq = new XMLHttpRequest();
oReq.addEventListener("error", function (e) {
console.log("xml item: " + e.status);
}, true);https://stackoverflow.com/questions/35631329
复制相似问题