Embed: Error handling for media resource based players; many small edits
This commit is contained in:
parent
c626fb2855
commit
de3043a8e3
10 changed files with 188 additions and 47 deletions
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue