diff --git a/bigbluebutton-html5/imports/ui/components/external-video-player/component.jsx b/bigbluebutton-html5/imports/ui/components/external-video-player/component.jsx
index 518a42f6a7b23d43b73c620b21e5be9467368233..9dddcefa4bd5ef87bfaafad5f4ded064325717e4 100644
--- a/bigbluebutton-html5/imports/ui/components/external-video-player/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/external-video-player/component.jsx
@@ -32,6 +32,9 @@ class VideoPlayer extends Component {
     this.autoPlayTimeout = null;
     this.hasPlayedBefore = false;
     this.playerIsReady = false;
+
+    this.lastMessage = null;
+
     this.state = {
       mutedByEchoTest: false,
       playing: false,
@@ -71,6 +74,7 @@ class VideoPlayer extends Component {
     this.handleOnReady = this.handleOnReady.bind(this);
     this.handleOnPlay = this.handleOnPlay.bind(this);
     this.handleOnPause = this.handleOnPause.bind(this);
+    this.sendSyncMessage = this.sendSyncMessage.bind(this);
     this.resizeListener = () => {
       setTimeout(this.handleResize, 0);
     };
@@ -92,7 +96,7 @@ class VideoPlayer extends Component {
     const { isPresenter } = this.props;
 
     if (isPresenter) {
-      sendMessage('stop');
+      this.sendSyncMessage('stop');
     }
   }
 
@@ -139,6 +143,15 @@ class VideoPlayer extends Component {
     return { mutedByEchoTest: inEchoTest };
   }
 
+  sendSyncMessage(msg, params) {
+    if (this.lastMessage === msg && msg === 'presenterReady') {
+      logger.debug("Ignoring a repeated presenterReady message");
+    } else {
+      sendMessage(msg, params);
+      this.lastMessage = msg;
+    }
+  }
+
   autoPlayBlockDetected() {
     this.setState({ autoPlayBlocked: true });
   }
@@ -154,7 +167,7 @@ class VideoPlayer extends Component {
       clearTimeout(this.autoPlayTimeout);
 
       if (isPresenter) {
-        sendMessage('presenterReady');
+        this.sendSyncMessage('presenterReady');
       }
     }
   }
@@ -208,7 +221,7 @@ class VideoPlayer extends Component {
         // Always pause video if presenter is has not started sharing, e.g., blocked by autoplay
         const playingState = this.hasPlayedBefore ? playing : false;
 
-        sendMessage('playerUpdate', { rate, time: curTime, state: playingState });
+        this.sendSyncMessage('playerUpdate', { rate, time: curTime, state: playingState });
       }, SYNC_INTERVAL_SECONDS * 1000);
 
     } else {
@@ -308,7 +321,7 @@ class VideoPlayer extends Component {
     const curTime = this.player && this.player.getCurrentTime();
 
     if (isPresenter && !playing) {
-      sendMessage('play', { time: curTime });
+      this.sendSyncMessage('play', { time: curTime });
     }
     this.setState({ playing: true });
 
@@ -322,7 +335,7 @@ class VideoPlayer extends Component {
     const curTime = this.player && this.player.getCurrentTime();
 
     if (isPresenter && playing) {
-      sendMessage('stop', { time: curTime });
+      this.sendSyncMessage('stop', { time: curTime });
     }
     this.setState({ playing: false });