diff --git a/bigbluebutton-html5/imports/ui/components/media/container.jsx b/bigbluebutton-html5/imports/ui/components/media/container.jsx
index e890e75c0884f07b96bae1afb9dd06657f91f59f..79c9b80e30667a2c3686c26bb0b06feeeb02c3d4 100755
--- a/bigbluebutton-html5/imports/ui/components/media/container.jsx
+++ b/bigbluebutton-html5/imports/ui/components/media/container.jsx
@@ -122,7 +122,7 @@ export default withModalMounter(withTracker(() => {
     data.children = <ScreenshareContainer />;
   }
 
-  const usersVideo = VideoService.getVideoStreams();
+  const { streams: usersVideo } = VideoService.getVideoStreams();
   data.usersVideo = usersVideo;
 
   if (MediaService.shouldShowOverlay() && usersVideo.length && viewParticipantsWebcams) {
diff --git a/bigbluebutton-html5/imports/ui/components/video-provider/component.jsx b/bigbluebutton-html5/imports/ui/components/video-provider/component.jsx
index dc716a0e72b3f9c6589626add30d6cef4870f7ef..dbfb46a352a439412850d0a6e1b6dcf8809c216d 100755
--- a/bigbluebutton-html5/imports/ui/components/video-provider/component.jsx
+++ b/bigbluebutton-html5/imports/ui/components/video-provider/component.jsx
@@ -282,7 +282,7 @@ class VideoProvider extends Component {
     this.disconnectStreams(streamsToDisconnect);
 
     if (CAMERA_QUALITY_THRESHOLDS_ENABLED) {
-      this.updateThreshold(streams.length);
+      this.updateThreshold(this.props.totalNumberOfStreams);
     }
   }
 
diff --git a/bigbluebutton-html5/imports/ui/components/video-provider/container.jsx b/bigbluebutton-html5/imports/ui/components/video-provider/container.jsx
index 9d8c402a3dcb8b61afa8f50e5afe083c3d4daeae..34852e82867ebbd9dfbcd01cf86639fb56a6f7cd 100755
--- a/bigbluebutton-html5/imports/ui/components/video-provider/container.jsx
+++ b/bigbluebutton-html5/imports/ui/components/video-provider/container.jsx
@@ -8,9 +8,22 @@ const VideoProviderContainer = ({ children, ...props }) => {
   return (!streams.length ? null : <VideoProvider {...props}>{children}</VideoProvider>);
 };
 
-export default withTracker(props => ({
-  swapLayout: props.swapLayout,
-  streams: VideoService.getVideoStreams(),
-  isUserLocked: VideoService.isUserLocked(),
-  currentVideoPageIndex: VideoService.getCurrentVideoPageIndex(),
-}))(VideoProviderContainer);
+export default withTracker(props => {
+  // getVideoStreams returns a dictionary consisting of:
+  // {
+  //  streams: array of mapped streams
+  //  totalNumberOfStreams: total number of shared streams in the server
+  // }
+  const {
+    streams,
+    totalNumberOfStreams
+  } = VideoService.getVideoStreams();
+
+  return {
+    swapLayout: props.swapLayout,
+    streams,
+    totalNumberOfStreams,
+    isUserLocked: VideoService.isUserLocked(),
+    currentVideoPageIndex: VideoService.getCurrentVideoPageIndex(),
+  };
+})(VideoProviderContainer);
diff --git a/bigbluebutton-html5/imports/ui/components/video-provider/service.js b/bigbluebutton-html5/imports/ui/components/video-provider/service.js
index 5a802a1221d4a7e0dff229e2e06968635b66dbe5..019c23b5d9df04c482d0561417e5aaed6b48a2ae 100755
--- a/bigbluebutton-html5/imports/ui/components/video-provider/service.js
+++ b/bigbluebutton-html5/imports/ui/components/video-provider/service.js
@@ -291,11 +291,11 @@ class VideoService {
     // is equivalent to disabling it), so return the mapped streams as they are
     // which produces the original non paginated behaviour
     if (!PAGINATION_ENABLED || pageSize === 0) {
-      return mappedStreams;
+      return { streams: mappedStreams, totalNumberOfStreams: mappedStreams.length };
     };
 
     const paginatedStreams = this.getVideoPage(mappedStreams, pageSize);
-    return paginatedStreams;
+    return { streams: paginatedStreams, totalNumberOfStreams: mappedStreams.length };
   }
 
   getConnectingStream(streams) {