Embed: Error handling for media resource based players; many small edits

This commit is contained in:
Cat 2016-12-19 16:18:42 +01:00 committed by Thulinma
parent c626fb2855
commit de3043a8e3
10 changed files with 188 additions and 47 deletions

View file

@ -18,7 +18,7 @@ p.prototype.build = function (options,callback) {
cont.className = 'mistplayer';
var me = this;
var ele = this.element('video');
var ele = this.getElement('video');
ele.className = '';
cont.appendChild(ele);
ele.width = options.width;

View file

@ -36,7 +36,7 @@ p.prototype.build = function (options) {
}
var ele = this.element('object');
var ele = this.getElement('object');
ele.setAttribute('width',options.width);
ele.setAttribute('height',options.height);

View file

@ -39,7 +39,7 @@ p.prototype.build = function (options) {
var shortmime = options.source.type.split('/');
shortmime.shift();
var ele = this.element((shortmime[0] == 'audio' ? 'audio' : 'video'));
var ele = this.getElement((shortmime[0] == 'audio' ? 'audio' : 'video'));
ele.className = '';
cont.appendChild(ele);
ele.crossOrigin = 'anonymous'; //required for subtitles
@ -98,9 +98,15 @@ p.prototype.build = function (options) {
if (options.live) {
ele.addEventListener('error',function(e){
if ((ele.error) && (ele.error.code == 3)) {
e.stopPropagation();
ele.load();
me.cancelAskNextCombo();
e.message = 'Handled decoding error';
me.addlog('Decoding error: reloading..');
me.report({
type: 'playback',
warning: 'A decoding error was encountered, but handled'
});
}
},true);
}
@ -150,7 +156,7 @@ p.prototype.build = function (options) {
}
me.adderror(msg);
},true);
var events = ['abort','canplay','canplaythrough','durationchange','emptied','ended','interruptbegin','interruptend','loadeddata','loadedmetadata','loadstart','pause','play','playing','ratechange','seeked','seeking','stalled','volumechange','waiting'];
var events = ['abort','canplay','canplaythrough','durationchange','emptied','ended','interruptbegin','interruptend','loadeddata','loadedmetadata','loadstart','pause','play','playing','ratechange','seeked','seeking','stalled','volumechange','waiting','progress'];
for (var i in events) {
ele.addEventListener(events[i],function(e){
me.addlog('Player event fired: '+e.type);

View file

@ -17,7 +17,7 @@ mistplayers.jwplayer = {
var p = mistplayers.jwplayer.player;
p.prototype = new MistPlayer();
p.prototype.build = function (options) {
var ele = this.element('div');
var ele = this.getElement('div');
this.jw = jwplayer(ele).setup({
file: options.src,

View file

@ -32,7 +32,7 @@ p.prototype.build = function (options) {
return p;
}
var ele = this.element('object');
var ele = this.getElement('object');
ele.setAttribute('data','data:application/x-silverlight,');
ele.setAttribute('type','application/x-silverlight');
ele.setAttribute('width',options.width);

View file

@ -17,7 +17,7 @@ mistplayers.theoplayer = {
var p = mistplayers.theoplayer.player;
p.prototype = new MistPlayer();
p.prototype.build = function (options) {
var ele = this.element('video');
var ele = this.getElement('video');
ele.src = options.src;
ele.width = options.width;

View file

@ -28,7 +28,7 @@ p.prototype.build = function (options) {
this.addlog('Building VideoJS player..');
var ele = this.element('video');
var ele = this.getElement('video');
cont.appendChild(ele);
ele.className = '';
ele.crossOrigin = 'anonymous'; //required for subtitles
@ -119,7 +119,7 @@ p.prototype.build = function (options) {
}
me.adderror(msg);
},true);
var events = ['abort','canplay','canplaythrough','durationchange','emptied','ended','interruptbegin','interruptend','loadeddata','loadedmetadata','loadstart','pause','play','playing','ratechange','seeked','seeking','stalled','volumechange','waiting'];
var events = ['abort','canplay','canplaythrough','durationchange','emptied','ended','interruptbegin','interruptend','loadeddata','loadedmetadata','loadstart','pause','play','playing','ratechange','seeked','seeking','stalled','volumechange','waiting','progress'];
for (var i in events) {
ele.addEventListener(events[i],function(e){
me.addlog('Player event fired: '+e.type);
@ -155,6 +155,10 @@ if (document.fullscreenEnabled || document.webkitFullscreenEnabled || document.m
};
}
p.prototype.updateSrc = function(src){
if (src == '') {
this.videojs.dispose();
return;
}
this.videojs.src({
src: src,
type: this.source.type