diff --git a/player/videojs.coffee b/player/videojs.coffee index 89b6f66a..ff53e35b 100644 --- a/player/videojs.coffee +++ b/player/videojs.coffee @@ -53,14 +53,15 @@ window.VideoJSPlayer = class VideoJSPlayer extends Player .attr(width: '100%', height: '100%') removeOld(video) - sources = sortSources(data.meta.direct) - if sources.length == 0 + @sources = sortSources(data.meta.direct) + if @sources.length == 0 console.error('VideoJSPlayer::constructor(): data.meta.direct has no sources!') @mediaType = null return - sources.forEach((source) -> + @sourceIdx = 0 + @sources.forEach((source) -> $('').attr( src: source.src type: source.type @@ -84,6 +85,16 @@ window.VideoJSPlayer = class VideoJSPlayer extends Player @player = videojs(video[0], autoplay: true, controls: true) @player.ready(=> + @player.on('error', => + err = @player.error() + if err and err.code == 4 + console.error('Caught error, trying next source') + @sourceIdx++ + if @sourceIdx < @sources.length + @player.src(@sources[@sourceIdx]) + else + console.error('Out of sources, video will not play') + ) @setVolume(VOLUME) @player.on('ended', -> if CLIENT.leader diff --git a/www/js/player.js b/www/js/player.js index 27b72088..ef333654 100644 --- a/www/js/player.js +++ b/www/js/player.js @@ -510,19 +510,20 @@ VideoJSPlayer.prototype.loadPlayer = function(data) { return waitUntilDefined(window, 'videojs', (function(_this) { return function() { - var sources, video; + var video; video = $('