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

标签 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 播放器抛出的这些错误吗?

最佳答案

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

但是,这取决于页面检测到的 404。尽管在 req.send() 的确切行上将错误记录到控制台,但有些 XHR 错误在 JavaScript 可以看到的内容方面是完全无声的,这是我在这里看到的行为:https://github.com/Dash-Industry-Forum/dash.js/issues/1209

如果请求确实抛出了 Dash.js 错误处理已处理、重试然后放弃的 404,那么您可以绑定(bind)到其错误事件:

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

关于javascript - Dash.js - 从 MPEG-DASH 播放器捕获 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35631329/

相关文章:

javascript - 页面加载完成后调用函数

javascript - 当全屏 iframe 在后台时,jQuery 单击事件不起作用?

jquery - 在调整大小时将过渡设置为无

javascript - 如何解析MP4破折号文件的 `sidx`

javascript - PDF.js 在 sails.js 中使用显示 API

javascript - 具有两个输入字段的 Iframe 动态过滤器

javascript - 网站图形平滑过渡

php - AJAX无法识别json数组

ruby - 视频流 html5 播放器。如何自动滑动搜索和音量控制

encoding - 使用 ffmpeg 创建一个 .m4s 文件