diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js
index f2a2b8d30b..8902b9cf25 100644
--- a/src/plugins/htmlVideoPlayer/plugin.js
+++ b/src/plugins/htmlVideoPlayer/plugin.js
@@ -620,6 +620,28 @@ function tryRemoveElement(elem) {
return relativeOffset;
}
+ /**
+ * @private
+ * These browsers will not clear the existing active cue when setting an offset
+ * for native TextTracks.
+ * Any previous text tracks that are on the screen when the offset changes will
+ * remain next to the new tracks until they reach the new offset's instance of the track.
+ */
+ requiresHidingActiveCuesOnOffsetChange() {
+ return !!browser.firefox;
+ }
+
+ /**
+ * @private
+ */
+ hideTextTrackActiveCues(currentTrack) {
+ if (currentTrack.activeCues) {
+ Array.from(currentTrack.activeCues).forEach((cue) => {
+ cue.text = '';
+ });
+ }
+ }
+
/**
* @private
*/
@@ -629,6 +651,9 @@ function tryRemoveElement(elem) {
if (offsetValue === 0) {
return;
}
+ if (this.requiresHidingActiveCuesOnOffsetChange()) {
+ this.hideTextTrackActiveCues(currentTrack);
+ }
Array.from(currentTrack.cues)
.forEach(function (cue) {
cue.startTime -= offsetValue;