Dash.js - 从MPEG-DASH播放器

时间:2016-02-25 15:19:31

标签: javascript jquery mpeg-dash dash.js

我使用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播放器抛出的这些错误?

2 个答案:

答案 0 :(得分:4)

Dash.js在404上有内部重试逻辑 - 它会在放弃之前重试3次(因此总共4次尝试)。有一些关于进一步改进这种行为的讨论,例如尝试其他可用的表示,但现在还没有。

但是,这取决于页面检测到的404。尽管在req.send()的确切行上将错误记录到控制台,但是有些XHR错误在JavaScript可以看到的内容中是完全无声的,这是我在这里看到的行为:{{3} }

如果请求确实丢弃了Dash.js错误处理的404已经处理,重试,然后放弃,那么你可以绑定到它的错误事件:

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
    }
});

答案 1 :(得分:0)

它已经有点了,因为我已经使用了该代码,但是如果内存服务,你应该能够通过检查错误的status属性来确定它是404

var oReq = new XMLHttpRequest();
oReq.addEventListener("error", function (e) {
    console.log("xml item: " + e.status);
}, true);