diff --git a/example/player/js/main.js b/example/player/js/main.js index 5d46878..71319bc 100644 --- a/example/player/js/main.js +++ b/example/player/js/main.js @@ -47,7 +47,7 @@ ui.setup(player, { lowlatency: true, // ll-dash, ll-hls, ll-flv/fmp4 (auto reduce latency due to cumulative ack of tcp) maxBufferLength: 1.5, // sec. maxRetries: 0, // maximum number of retries while some types of error occurs. -1 means always - mode: 'live', // live, vod + mode: 'auto', // auto, live, vod module: 'FLV', // SRC, FLV, FMP4, DASH*, HLS*, RTC objectfit: 'contain', // fill, contain, cover, none, scale-down retrying: 0, // ms. retrying interval diff --git a/src/odd.js b/src/odd.js index d2676a4..2a934cd 100644 --- a/src/odd.js +++ b/src/odd.js @@ -1,6 +1,6 @@ odd = function () { return { - version: '2.5.02', + version: '2.5.03', }; }; diff --git a/src/player/player.js b/src/player/player.js index 87fb1cd..a227641 100644 --- a/src/player/player.js +++ b/src/player/player.js @@ -19,7 +19,7 @@ maxBufferLength: 1.5, // sec. maxPlaybackLength: 10, // sec. for live mode only, set NaN to disable maxRetries: 0, // maximum number of retries while some types of error occurs. -1 means always - mode: 'live', // live, vod + mode: 'auto', // auto, live, vod module: '', // SRC, FLV, FMP4, DASH*, HLS*, RTC muted: false, objectfit: 'contain', // fill, contain, cover, none, scale-down diff --git a/src/player/player.model.js b/src/player/player.model.js index 0a4617d..b779cb4 100644 --- a/src/player/player.model.js +++ b/src/player/player.model.js @@ -58,9 +58,9 @@ }; _this.duration = function (duration) { - if (utils.typeOf(duration) === 'number') { - if (duration !== _duration && !(isNaN(_duration) && isNaN(duration))) { - _logger.log('Model duration change: ' + duration); + if (utils.typeOf(duration) === 'number' && duration !== _duration && !(isNaN(_duration) && isNaN(duration))) { + _logger.log('Model duration change: ' + duration); + if (_usermode === 'auto') { // NaN -> Infinity: live // NaN -> Number: vod // Infinity -> NaN: live @@ -68,15 +68,20 @@ // Number -> NaN: user config // Number -> Infinity: live (should not happen) // Number -> Number: live (Mac Safari) + var mode; if (isNaN(_duration) && duration !== Infinity) { - _this.config.mode = 'vod'; + mode = 'vod'; } else if (_duration !== Infinity && isNaN(duration)) { - _this.config.mode = _usermode; + mode = _usermode; } else { - _this.config.mode = 'live'; + mode = 'live'; + } + if (_this.config.mode !== mode) { + _this.config.mode = mode; + _logger.log('Model mode change: ' + _this.config.mode); } - _duration = duration; } + _duration = duration; } return _duration; };