diff --git a/src/streaming/models/VideoModel.js b/src/streaming/models/VideoModel.js index ac642dbfb8..78fb4ccf40 100644 --- a/src/streaming/models/VideoModel.js +++ b/src/streaming/models/VideoModel.js @@ -48,6 +48,7 @@ function VideoModel() { let instance, logger, element, + _currentTime, TTMLRenderingDiv, previousPlaybackRate; @@ -59,6 +60,7 @@ function VideoModel() { function setup() { logger = Debug(context).getInstance().getLogger(instance); + _currentTime = NaN; } function initialize() { @@ -88,13 +90,13 @@ function VideoModel() { //TODO Move the DVR window calculations from MediaPlayer to Here. function setCurrentTime(currentTime, stickToBuffered) { + _currentTime = currentTime; waitForReadyState(Constants.VIDEO_ELEMENT_READY_STATES.HAVE_METADATA, () => { if (element) { - //_currentTime = currentTime; - // We don't set the same currentTime because it can cause firing unexpected Pause event in IE11 // providing playbackRate property equals to zero. - if (element.currentTime === currentTime) { + if (element.currentTime === _currentTime) { + _currentTime = NaN; return; } @@ -104,12 +106,14 @@ function VideoModel() { // set currentTime even if readyState = 0. // setTimeout is used to workaround InvalidStateError in IE11 try { - currentTime = stickToBuffered ? stickTimeToBuffered(currentTime) : currentTime; - element.currentTime = currentTime; + _currentTime = stickToBuffered ? stickTimeToBuffered(_currentTime) : _currentTime; + element.currentTime = _currentTime; + _currentTime = NaN; } catch (e) { if (element.readyState === 0 && e.code === e.INVALID_STATE_ERR) { setTimeout(function () { - element.currentTime = currentTime; + element.currentTime = _currentTime; + _currentTime = NaN; }, 400); } } @@ -287,11 +291,11 @@ function VideoModel() { } function isSeeking() { - return element ? element.seeking : null; + return element ? (element.seeking || !isNaN(_currentTime)) : null; } function getTime() { - return element ? element.currentTime : null; + return element ? (!isNaN(_currentTime) ? _currentTime : element.currentTime) : null; } function getPlaybackRate() {