diff --git a/bigbluebutton-client/resources/prod/lib/kurento-extension.js b/bigbluebutton-client/resources/prod/lib/kurento-extension.js
index dab7affe01d7b4740967cfada438b5d6f716a56d..5eb162c3b09ff3257406014f6e3b895c06f5b774 100755
--- a/bigbluebutton-client/resources/prod/lib/kurento-extension.js
+++ b/bigbluebutton-client/resources/prod/lib/kurento-extension.js
@@ -2,7 +2,8 @@ const isFirefox = typeof window.InstallTrigger !== 'undefined';
 const isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
 const isChrome = !!window.chrome && !isOpera;
 const isSafari = navigator.userAgent.indexOf('Safari') >= 0 && !isChrome;
-const hasDisplayMedia = typeof navigator.getDisplayMedia === 'function';
+const hasDisplayMedia = (typeof navigator.getDisplayMedia === 'function'
+  || typeof navigator.mediaDevices.getDisplayMedia === 'function');
 const kurentoHandler = null;
 const SEND_ROLE = "send";
 const RECV_ROLE = "recv";
diff --git a/bigbluebutton-client/resources/prod/lib/kurento-utils.js b/bigbluebutton-client/resources/prod/lib/kurento-utils.js
index 78ea0604b77245cc5ddb842d1162b3bb8cf263b4..2a8bfab960387681317951b9428c19110d407a8a 100644
--- a/bigbluebutton-client/resources/prod/lib/kurento-utils.js
+++ b/bigbluebutton-client/resources/prod/lib/kurento-utils.js
@@ -410,16 +410,24 @@ function WebRtcPeer(mode, options, callback) {
                     return callback(error);
                 constraints = [mediaConstraints];
                 constraints.unshift(constraints_);
-                if (typeof navigator.getDisplayMedia === 'function') {
-                    navigator.getDisplayMedia(recursive.apply(undefined, constraints)).then(stream => {
-                        stream.getTracks()[0].applyConstraints(constraints[0].optional).then(() => {
+                let gDMCallback = function(stream) {
+                    stream.getTracks()[0].applyConstraints(constraints[0].optional)
+                        .then(() => {
                             videoStream = stream;
                             start();
                         }).catch(() => {
-                          videoStream = stream;
-                          start();
+                            videoStream = stream;
+                            start();
                         });
-                    }).catch(callback);
+                }
+                if (typeof navigator.getDisplayMedia === 'function') {
+                    navigator.getDisplayMedia(recursive.apply(undefined, constraints))
+                        .then(gDMCallback)
+                        .catch(callback);
+                } else if (typeof navigator.mediaDevices.getDisplayMedia === 'function') {
+                    navigator.mediaDevices.getDisplayMedia(recursive.apply(undefined, constraints))
+                        .then(gDMCallback)
+                        .catch(callback);
                 } else {
                     getMedia(recursive.apply(undefined, constraints));
                 }
diff --git a/bigbluebutton-html5/client/compatibility/kurento-extension.js b/bigbluebutton-html5/client/compatibility/kurento-extension.js
index 229771c9f841bc057d832e6fdba1705ec9c070f4..66e34642ad5ef6a6fe5b0d8b12ba2217b679f37d 100644
--- a/bigbluebutton-html5/client/compatibility/kurento-extension.js
+++ b/bigbluebutton-html5/client/compatibility/kurento-extension.js
@@ -3,7 +3,8 @@ const isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
 const isChrome = !!window.chrome && !isOpera;
 const isSafari = navigator.userAgent.indexOf('Safari') >= 0 && !isChrome;
 const isElectron = navigator.userAgent.toLowerCase().indexOf(' electron/') > -1;
-const hasDisplayMedia = typeof navigator.getDisplayMedia === 'function';
+const hasDisplayMedia = (typeof navigator.getDisplayMedia === 'function'
+  || typeof navigator.mediaDevices.getDisplayMedia === 'function');
 const kurentoHandler = null;
 
 Kurento = function (
diff --git a/bigbluebutton-html5/client/compatibility/kurento-utils.js b/bigbluebutton-html5/client/compatibility/kurento-utils.js
index d15bf65cd8aec11d6766e24916d6be69e4e0aca4..60cbd94a5288470dad9b65c509ab155d023dbd5d 100644
--- a/bigbluebutton-html5/client/compatibility/kurento-utils.js
+++ b/bigbluebutton-html5/client/compatibility/kurento-utils.js
@@ -446,16 +446,24 @@ function WebRtcPeer(mode, options, callback) {
                     return callback(error);
                 constraints = [mediaConstraints];
                 constraints.unshift(constraints_);
-                if (typeof navigator.getDisplayMedia === 'function') {
-                    navigator.getDisplayMedia(recursive.apply(undefined, constraints)).then(stream => {
-                        stream.getTracks()[0].applyConstraints(constraints[0].optional).then(() => {
+                let gDMCallback = function(stream) {
+                    stream.getTracks()[0].applyConstraints(constraints[0].optional)
+                        .then(() => {
                             videoStream = stream;
                             start();
                         }).catch(() => {
-                          videoStream = stream;
-                          start();
+                            videoStream = stream;
+                            start();
                         });
-                    }).catch(callback);
+                }
+                if (typeof navigator.getDisplayMedia === 'function') {
+                    navigator.getDisplayMedia(recursive.apply(undefined, constraints))
+                        .then(gDMCallback)
+                        .catch(callback);
+                } else if (typeof navigator.mediaDevices.getDisplayMedia === 'function') {
+                    navigator.mediaDevices.getDisplayMedia(recursive.apply(undefined, constraints))
+                        .then(gDMCallback)
+                        .catch(callback);
                 } else {
                     getMedia(recursive.apply(undefined, constraints));
                 }