diff --git a/conference.js b/conference.js index af4a032ab..45d6d2d97 100644 --- a/conference.js +++ b/conference.js @@ -472,8 +472,8 @@ export default { */ createInitialLocalTracks(options = {}) { const errors = {}; - const initialDevices = [ 'audio' ]; - const requestedAudio = true; + const initialDevices = config.disableInitialGUM ? [] : [ 'audio' ]; + const requestedAudio = !config.disableInitialGUM; let requestedVideo = false; // Always get a handle on the audio input device so that we have statistics even if the user joins the @@ -484,19 +484,22 @@ export default { this.muteAudio(true, true); } - if (!options.startWithVideoMuted + if (!config.disableInitialGUM + && !options.startWithVideoMuted && !options.startAudioOnly && !options.startScreenSharing) { initialDevices.push('video'); requestedVideo = true; } - JitsiMeetJS.mediaDevices.addEventListener( - JitsiMediaDevicesEvents.PERMISSION_PROMPT_IS_SHOWN, - browserName => - APP.store.dispatch( - mediaPermissionPromptVisibilityChanged(true, browserName)) - ); + if (!config.disableInitialGUM) { + JitsiMeetJS.mediaDevices.addEventListener( + JitsiMediaDevicesEvents.PERMISSION_PROMPT_IS_SHOWN, + browserName => + APP.store.dispatch( + mediaPermissionPromptVisibilityChanged(true, browserName)) + ); + } let tryCreateLocalTracks; diff --git a/config.js b/config.js index ef94d8ee1..d4e519821 100644 --- a/config.js +++ b/config.js @@ -336,6 +336,10 @@ var config = { // will be joined when no room is specified. enableWelcomePage: true, + // Disable initial browser getUserMedia requests. + // This is useful for scenarios where users might want to start a conference for screensharing only + // disableInitialGUM: false, + // Enabling the close page will ignore the welcome page redirection when // a call is hangup. // enableClosePage: false, diff --git a/react/features/base/config/configWhitelist.js b/react/features/base/config/configWhitelist.js index 95b0d8ddc..2af559dd2 100644 --- a/react/features/base/config/configWhitelist.js +++ b/react/features/base/config/configWhitelist.js @@ -80,6 +80,7 @@ export default [ 'disableAP', 'disableAudioLevels', 'disableDeepLinking', + 'disableInitialGUM', 'disableH264', 'disableHPF', 'disableInviteFunctions',