首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dash.js -从MPEG-DASH播放器捕获404个错误

Dash.js -从MPEG-DASH播放器捕获404个错误
EN

Stack Overflow用户
提问于 2016-02-25 23:19:31
回答 2查看 2.2K关注 0票数 0

我已经使用Dash.js播放器播放MPEG-DASH视频。视频是从服务器上拉出的。由于服务器问题,有时会有404错误,我想通过检测404错误并相应地在后台重试该流。

问题是我不能捕获错误,它是从行抛出的

代码语言:javascript
复制
req.send();

它在一个名为FragmentLoader.js的文件中。

我尝试了以下错误处理:

代码语言:javascript
复制
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播放器抛出的错误?

EN

回答 2

Stack Overflow用户

发布于 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事件:

代码语言:javascript
复制
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
    }
});
票数 4
EN

Stack Overflow用户

发布于 2016-03-01 01:12:23

我已经有一段时间没有写代码了,但是如果内存正常,您应该能够通过检查错误状态属性来确定它是404

代码语言:javascript
复制
var oReq = new XMLHttpRequest();
oReq.addEventListener("error", function (e) {
    console.log("xml item: " + e.status);
}, true);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35631329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档