Configuration
This page describes available configuration options for Jitsi Meet. These are either set in config.js on the server
side or overridden in the app.
Options marked with 🚫 are not overwritable through configOverwrite
This page is a work in progress. Not all options are described here yet.
API
apiLogLevels
type: Array
Logs that should go be passed through the 'log' event if a handler is defined for it
Default: unset
apiLogLevels: ['warn', 'log', 'error', 'info', 'debug']
buttonsWithNotifyClick
type: Array
Toolbar buttons which have their click/tap event exposed through the API on toolbarButtonClicked. Passing a string for the button key will prevent execution of the click/tap routine; passing an object with key and preventExecution flag on false will not prevent execution of the click/tap routine. Below array with mixed mode for passing the buttons.
Default: unset
buttonsWithNotifyClick: [
'camera',
{
key: 'chat',
preventExecution: false
},
{
key: 'closedcaptions',
preventExecution: true
},
'desktop',
'download',
'embedmeeting',
'etherpad',
'feedback',
'filmstrip',
'fullscreen',
'hangup',
'help',
{
key: 'invite',
preventExecution: false
},
'livestreaming',
'microphone',
'mute-everyone',
'mute-video-everyone',
'participants-pane',
'profile',
{
key: 'raisehand',
preventExecution: true
},
'recording',
'security',
'select-background',
'settings',
'shareaudio',
'sharedvideo',
'shortcuts',
'stats',
'tileview',
'toggle-camera',
'videoquality',
// The add passcode button from the security dialog.
{
key: 'add-passcode',
preventExecution: false
},
'__end'
]
customParticipantMenuButtons
type: Array<{ icon: string; id: string; text: string; }>
Default: unset
A list of custom buttons that can be added to the Participant Context Menu. Each will have an icon, that can be either a base64 encoded image or the path to an image, a unique id, and a text that will be displayed alongside the icon in the menu. This custom button will trigger the participantMenuButtonClick event that will have the id set to the button as the key and the participantId, representing the id of the participant for which the button was clicked.
customParticipantMenuButtons: [
{
icon: 'data:image/svg+xml;base64,...',
id: 'custom-button',
text: 'Custom Button'
}
]
customToolbarButtons
type: Array<{ icon: string; id: string; text: string; }>
Default: unset
A list of custom buttons that can be added to the Toolbar. Each will have an icon, that can be either a base64 encoded image or the path to an image, a unique id, and a text that will be displayed alongside the icon in the menu. This custom button will trigger the toolbarButtonClicked event that will the id set to the button as the key.
customToolbarButtons: [
{
icon: 'data:image/svg+xml;base64,...',
id: 'custom-toolbar-button',
text: 'Custom Toolbar Button'
}
]
mouseMoveCallbackInterval
type: Number
Default interval (milliseconds) for triggering mouseMoved iframe API event.
Default: 1000
mouseMoveCallbackInterval: 1000
participantMenuButtonsWithNotifyClick
type: Array
Participant context menu buttons which have their click/tap event exposed through the API on participantMenuButtonClick. Passing a string for the button key will prevent execution of the click/tap routine; passing an object with key and preventExecution flag on false will not prevent execution of the click/tap routine. Below array with mixed mode for passing the buttons.
Default: unset
participantMenuButtonsWithNotifyClick: [
'allow-video',
{
key: 'ask-unmute',
preventExecution: false
},
'conn-status',
'flip-local-video',
'grant-moderator',
{
key: 'kick',
preventExecution: true
},
{
key: 'hide-self-view',
preventExecution: false
},
'mute',
'mute-others',
'mute-others-video',
'mute-video',
'pinToStage',
'privateMessage',
{
key: 'remote-control',
preventExecution: false
},
'send-participant-to-room',
'verify',
]
useHostPageLocalStorage
type: Boolean
This property is related to the use case when Jitsi Meet is used via the IFrame API. When the property is true Jitsi Meet will use the local storage of the host page instead of its own. This option is useful if the browser is not persisting the local storage inside the iframe.
Default: unset
useHostPageLocalStorage: true
Audio
audioLevelsInterval
type: Number
The interval (milliseconds) at which the audio levels are calculated.
Default: 200
audioLevelsInterval: 200
audioQuality
type: Object
Specify audio quality stereo and opusMaxAverageBitrate values in order to enable HD audio. Beware, by doing so, you are disabling echo cancellation, noise suppression and AGC.
Default: unset
audioQuality: {
stereo: false,
opusMaxAverageBitrate: null // Value to fit the 6000 to 510000 range.
}
disableAudioLevels
type: Boolean
Disable measuring of audio levels.
Default: false
disableAudioLevels: false
disableSpeakerStatsSearch
type: Boolean
Specifies whether there will be a search field in speaker stats or not.
DEPRECATED Use speakerStats.disableSearch instead.
Default: false
disableSpeakerStatsSearch: false
disabledSounds
type: Array
The sounds passed in this array will be disabled.
Default: unset
disabledSounds: [
// 'ASKED_TO_UNMUTE_SOUND'
// 'E2EE_OFF_SOUND'
// 'E2EE_ON_SOUND'
// 'INCOMING_MSG_SOUND'
// 'KNOCKING_PARTICIPANT_SOUND'
// 'LIVE_STREAMING_OFF_SOUND'
// 'LIVE_STREAMING_ON_SOUND'
// 'NO_AUDIO_SIGNAL_SOUND'
// 'NOISY_AUDIO_INPUT_SOUND'
// 'OUTGOING_CALL_EXPIRED_SOUND'
// 'OUTGOING_CALL_REJECTED_SOUND'
// 'OUTGOING_CALL_RINGING_SOUND'
// 'OUTGOING_CALL_START_SOUND'
// 'PARTICIPANT_JOINED_SOUND'
// 'PARTICIPANT_LEFT_SOUND'
// 'RAISE_HAND_SOUND'
// 'REACTION_SOUND'
// 'RECORDING_OFF_SOUND'
// '_ON_SOUND'
// 'TALK_WHILE_MUTED_SOUND'
]
enableNoAudioDetection
type: Boolean
Enabling this will run the lib-jitsi-meet no audio detection module which will notify the user if the current selected microphone has no audio input and will suggest another valid device if one is present.
Default: true
enableNoAudioDetection: true
enableNoisyMicDetection
type: Boolean
Enabling this will run the lib-jitsi-meet noise detection module which will notify the user if there is noise, other than voice, coming from the current selected microphone. The purpose it to let the user know that the input could be potentially unpleasant for other meeting participants.
Default: true
enableNoisyMicDetection: true
speakerStats
type: Object
Options related to the speaker stats feature.
Properties:
disabled- Specifies whether the speaker stats is enable or not.disableSearch- Specifies whether there will be a search field in speaker stats or not.order- Specifies whether participants in speaker stats should be ordered or not, and with what priority.
Default:
speakerStats: {
disabled: false,
disableSearch: false,
order: [
'role', // Moderators on top.
'name', // Alphabetically by name.
'hasLeft', // The ones that have left in the bottom.
], // the order of the array elements determines priority.
}
speakerStatsOrder
type: Array
Specifies whether participants in speaker stats should be ordered or not, and with what priority.
DEPRECATED Use speakerStats.order instead.
Default:
speakerStatsOrder: [
'role', // Moderators on top.
'name', // Alphabetically by name.
'hasLeft', // The ones that have left in the bottom.
], // the order of the array elements determines priority.
startAudioMuted
type: Number
Every participant after the Nth will start audio muted.
Default: unset
startAudioMuted: 10
startAudioOnly
type: Boolean
Start the conference in audio only mode (no video is being received nor sent).
Default: unset
startAudioOnly: false
startSilent
type: Boolean
Enabling it (with #params) will disable local audio output of remote participants and to enable it back a reload is needed.
Default: unset
startSilent: false
startWithAudioMuted
type: Boolean
Start calls with audio muted. This option is only applied locally.
Default: unset
startWithAudioMuted: false
Breakout rooms
breakoutRooms
type: Object
Options related to the breakout rooms feature.
Default: unset
Properties:
hideAddRoomButton- Hides the add breakout room button. This replaceshideAddRoomButton.hideAutoAssignButton- Hides the auto assign participants button.hideJoinRoomButton- Hides the join breakout room button.hideModeratorSettingsTab- Hides the button to open the moderator settings tab.hideMoreActionsButton- Hides the more actions button.hideMuteAllButton- Hides the mute all button.
breakoutRooms: {
hideAddRoomButton: false,
hideAutoAssignButton: false,
hideJoinRoomButton: false
}
hideAddRoomButton
type: Boolean
DEPRECATED Use breakoutRooms.hideAddRoomButton instead.
Hides add breakout room button.
Default: false
hideAddRoomButton: false
Callstats
callStatsConfigParams
type: Object
The callstats initialize config params as described in the API here.
callStatsConfigParams: {
disableBeforeUnloadHandler: true, // disables callstats.js's window.onbeforeunload parameter.
applicationVersion: "app_version", // Application version specified by the developer.
disablePrecalltest: true, // disables the pre-call test, it is enabled by default.
siteID: "siteID", // The name/ID of the site/campus from where the call/pre-call test is made.
additionalIDs: { // additionalIDs object, contains application related IDs.
customerID: "Customer Identifier. Example, walmart.",
tenantID: "Tenant Identifier. Example, monster.",
productName: "Product Name. Example, Jitsi.",
meetingsName: "Meeting Name. Example, Jitsi loves callstats.",
serverName: "Server/MiddleBox Name. Example, jvb-prod-us-east-mlkncws12.",
pbxID: "PBX Identifier. Example, walmart.",
pbxExtensionID: "PBX Extension Identifier. Example, 5625.",
fqExtensionID: "Fully qualified Extension Identifier. Example, +71 (US) +5625.",
sessionID: "Session Identifier. Example, session-12-34"
},
collectLegacyStats: true, //enables the collection of legacy stats in chrome browser
collectIP: true //enables the collection localIP address
}
callStatsID
type: String
You must provide the Application ID to enable sending statistics to callstats.io
callStatsID: 'my-callstats-app-id'
callStatsSecret
type: String
You must provide the Secret to enable sending statistics to callstats.io
callStatsSecret: 'my-callstats-secret'
enableDisplayNameInStats
type: Boolean
Enables sending participants' display names to callstats.
enableDisplayNameInStats: false
enableEmailInStats
type: Boolean
Enables sending participants' emails (if available) to callstats and other analytics
enableEmailInStats: false
feedbackPercentage
type: Number
Controls the percentage of automatic feedback shown to participants when callstats is enabled. The default value is 100%. If set to 0, no automatic feedback will be requested
feedbackPercentage: 100
Transcriptions
autoCaptionOnRecord
DEPRECATED Use transcription.autoTranscribeOnRecord instead.
preferredTranscribingLanguage
DEPRECATED Use transcription.preferredLanguage instead.
transcribeWithAppLanguage
DEPRECATED Use transcription.useAppLanguage instead.
transcribingEnabled
DEPRECATED Use transcription.enabled instead.
transcription
type: Object
Transcription related options.
Properties:
enabled- Enable transcription (in interface_config, subtitles and buttons can be configured). Defaultfalse.translationLanguages- Translation languages. Available languages can be found in ./lang/translation-languages.json.useAppLanguage- Iftruethe transcriber will use the application language. The application language is either explicitly set by participants in their settings or automatically detected based on the environment, e.g. if the app is opened in a Chrome instance which is using French as its default language then transcriptions for that participant will be in french. Default:true.preferredLanguage- Transcriber language. This settings will only work ifuseAppLanguageis explicitly set tofalse. Available languages can be found here. Default:'en-US'.autoTranscribeOnRecord- Enables automatic turning on transcribing when recording is started. Default:true.
transcription: {
enabled: true,
translationLanguages: ['en-US', 'es'],
useAppLanguage: false,
preferredLanguage: 'en-US',
autoTranscribeOnRecord: true
}
Connection
bosh*
type: String
The BOSH URL.
bosh: '//jitsi-meet.example.com/http-bind'
disableRtx
type: Boolean
Disables or enables RTX (RFC 4588).
Default: false
disableRtx: true
disableSimulcast
type: Boolean
Enable / disable simulcast support.
Default: false
disableSimulcast: true
e2ee
type: Object
Configure End-to-End Encryption.
e2ee: {
labels: {
labelTooltip: 'Tooltip',
description: 'Description',
label: 'E2EE',
warning: 'Warning'
},
externallyManagedKey: false
}
e2eping
type: Object
Options related to end-to-end (participant to participant) ping.
Properties:
enabled- Whether end-to-end pings should be enabled.numRequests- The number of responses to wait for.maxConferenceSize- The max conference size in which e2e pings will be sent.maxMessagesPerSecond- The maximum number of e2e ping messages per second for the whole conference to aim for. This is used to contol the pacing of messages in order to reduce the load on the backend.
e2eping: {
enabled: false,
numRequests: 5,
maxConferenceSize: 200,
maxMessagesPerSecond: 250
}
enableEncodedTransformSupport
type: Boolean
Enable support for encoded transform in supported browsers. This allows E2EE to work in Safari if the corresponding flag is enabled in the browser. Experimental.
enableEncodedTransformSupport: false
enableForcedReload 🚫
type: Boolean
Enables forced reload of the client when the call is migrated as a result of the bridge going down.
enableForcedReload: true
gatherStats
type: Boolean
Whether to enable stats collection or not in the TraceablePeerConnection.
This can be useful for debugging purposes (post-processing/analysis of
the WebRTC stats) as it is done in the jitsi-meet-torture bandwidth
estimation tests.
gatherStats: false
hosts
type: Object
⚠️ Note: Since commit 97146ed, the hosts configuration can no longer be overridden via configOverwrite.
It must be defined only in the main config.js served by your deployment.
This option previously supported dynamic overrides (e.g., for custom domains or hidden domains),
but that functionality has been removed from the client for security and consistency reasons.
If you need to separate users into different domains (for example, to hide participants from each other),
use the Visitors / Lobby / JWT roles features instead of host overrides.
Properties
domain— XMPP domainanonymousdomain— Domain for guest / unauthenticated usersauthdomain— Domain for authenticated users (defaults todomain)focus— Focus component domain (defaults tofocus.<domain>)muc— XMPP MUC domain
Example
hosts: {
domain: 'jitsi-meet.example.com',
anonymousdomain: 'guest.example.com',
authdomain: 'jitsi-meet.example.com',
focus: 'focus.jitsi-meet.example.com',
muc: 'conference.jitsi-meet.example.com'
}
p2p
type: Object
Peer-To-Peer mode: used (if enabled) when there are just 2 participants.
Properties:
enabled- Enables peer to peer mode. When enabled the system will try to establish a direct connection when there are exactly 2 participants in the room. If that succeeds the conference will stop sending data through the JVB and use the peer to peer connection instead. When a 3rd participant joins the conference will be moved back to the JVB connection.iceTransportPolicy- Sets the ICE transport policy for the p2p connection. At the time of this writing the list of possible values areallandrelay, but that is subject to change in the future. The enum is defined in the WebRTC standard. If not set, the effective value isall.codecPreferenceOrder- Provides a way to set the codec preference on desktop based endpoints.mobileCodecPreferenceOrder- Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based endpoints.backToP2PDelay- How long we're going to wait, before going back to P2P after the 3rd participant has left the conference (to filter out page reload).stunServers- The STUN servers that will be used in the peer to peer connections.
p2p: {
enabled: true,
enableUnifiedOnChrome: false,
iceTransportPolicy: 'all',
backToP2PDelay: 5,
stunServers: [
{ urls: 'stun:jitsi-meet.example.com:3478' },
{ urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }
]
}
pcStatsInterval
type: Number
The interval at which PeerConnection.getStats() is called.
Default: 10000
pcStatsInterval: 50000
peopleSearchQueryTypes
type: Array
The entity types which are queriable when inviting people in a room. Valid values are "phone", "room", "sip", "user", "videosipgw" and "email". Authentication for Jitsi entity types is done by passing a jwt, authentication for external entity types (e. g. email) is done by passing an alternative token (e. g. peopleSearchTokenLocation).
Default: []
peopleSearchQueryTypes: ["user", "email"]
peopleSearchUrl
type: String
Directory endpoint which is called for invite dialog autocomplete. Expected response format is an array of objects. Each object should be formatted as follows:
{
id: int,
type: string, # the entity type (phone, room, user, email etc.),
name: string, # the entity display name
avatar?: string, # full URL to the entity picture, not mandatory
number?: string, # required for phone numbers
}
Default: ""
peopleSearchUrl: "https://myservice.com/api/people"
inviteServiceUrl
type: String
Endpoint which is called to send invitation requests. The request is made in POST and contains as a POST body an array of objects formatted the same as the peopleSearchUrl response body.
Default: ""
inviteServiceUrl: "https://myservice.com/api/invite"
peopleSearchTokenLocation
type: String
Useful for authentication against directories holding entities which don't exist in Prosody (e. g. email). This indicates the localStorage key where the alternate authentication token value is to be found. This alternate token will be used if the JWT value is not set. It will be sent in the Authorization: Bearer header, as the JWT would have been.
Default: ""
peopleSearchTokenLocation: "service_token"
useTurnUdp
type: Boolean
Use TURN/UDP servers for the jitsi-videobridge connection (by default we filter out TURN/UDP because it is usually not needed since the bridge itself is reachable via UDP)
useTurnUdp: false
webrtcIceTcpDisable
type: Boolean
Disables ICE/TCP by filtering out local and remote TCP candidates in signalling.
webrtcIceTcpDisable: false
webrtcIceUdpDisable
type: Boolean
Disables ICE/UDP by filtering out local and remote UDP candidates in signalling.
webrtcIceUdpDisable: false
websocket 🚫
type: String
Websocket URL
websocket: 'wss://jitsi-meet.example.com/xmpp-websocket'
Etherpad
etherpad_base
type: String
If set, it adds a "Open shared document" link to the bottom right menu that will open an etherpad document.
etherpad_base: 'https://your-etherpad-installati.on/p/'
openSharedDocumentOnJoin
type: Boolean
If etherpad integration is enabled, setting this to true will
automatically open the etherpad when a participant joins. This
does not affect the mobile app since opening an etherpad
obscures the conference controls -- it's better to let users
choose to open the pad on their own in that case.
openSharedDocumentOnJoin: false
Filmstrip
disableFilmstripAutohiding
type: Boolean
Prevents the filmstrip from autohiding when screen width is under a certain threshold
Default: false
disableFilmstripAutohiding: true
filmstrip
type: Object
Options related to the filmstrip.
Default: unset
Properties:
disableResizable- Disables user resizable filmstrip. This also allows configuration of the filmstrip (width, tiles aspect ratios) through the interfaceConfig options.disableStageFilmstrip- Disables the stage filmstrip (displaying multiple participants on stage besides the vertical filmstrip)
filmstrip: {
disableResizable: true,
disableStageFilmstrip: false
}
disableCameraTintForeground
type: Boolean
Default: unset
If true disable the camera tint foreground on the active speaker in the filmstrip
disableCameraTintForeground: true
Face Landmarks
faceLandmarks
type: Object
Options related to the face landmarks features.
Properties:
enableFaceCentering- Enables centering faces within a video by sharing face coordinates.enableFaceExpressionsDetection- Enables detecting face expressions from video.enableDisplayFaceExpressions- Enables displaying face expressions in speaker stats.enableRTCStats- Enables anonymized stats collection for face landmarks.faceCenteringThreshold- Minimum required face movement percentage threshold for sending new face centering coordinates data.captureInterval- Milliseconds for processing a new image capture in order to detect face landmarks.
faceLandmarks: {
enableFaceCentering: false,
enableFaceExpressionsDetection: false,
enableDisplayFaceExpressions: false,
enableRTCStats: false,
faceCenteringThreshold: 20,
captureInterval: 1000
},
Giphy
giphy
type: Object
Setup for the Giphy integration.
Properties:
enabled- Whether the feature is enabled or not.sdkKey- SDK API Key from Giphy.displayMode- Display mode can be one of:tile- show the GIF on the tile of the participant that sent it.chat- show the GIF as a message in chat.all- all of the above. This is the default option.
tileTime- How long the GIF should be displayed on the tile (in milliseconds).rating- Limit results by audience rating:g- broadly accepted as appropriate in a public environment. This is the default option.pg- commonly witnessed in a public environment, but not as broadly accepted as appropriate.pg-13- typically not seen unless sought out, but still commonly witnessed.r- typically not seen unless sought out, and could be considered alarming if witnessed.
giphy: {
enabled: true,
sdkKey: 'example-key',
displayMode: 'tile',
tileTime: 7000,
rating: 'pg'
}
Gravatar
gravatar
type: Object
Setup for Gravatar-compatible services.
Properties:
baseUrl🚫 - Base URL for a Gravatar-compatible service. Defaults to Gravatar.disabled- True if Gravatar should be disabled.
gravatar: {
baseUrl: 'https://www.gravatar.com/avatar/',
disabled: false
}
gravatarBaseURL 🚫
type: String
DEPRECATED Use gravatar.baseUrl instead.
Base URL for a Gravatar-compatible service.
Default: 'https://www.gravatar.com/avatar/'
gravatarBaseURL: 'https://www.gravatar.com/avatar/'
LastN
channelLastN
type: Number
Default value for the channel "last N" attribute. -1 for unlimited.
channelLastN: -1
startLastN
type: Number
Provides a way for the lastN value to be controlled through the UI. When startLastN is present, conference starts with a last-n value of startLastN and channelLastN value will be used when the quality level is selected using "Manage Video Quality" slider.
startLastN: 1
Lobby
autoKnockLobby
type: Boolean
DEPRECATED Use lobby.autoKnock instead.
If Lobby is enabled starts knocking automatically.
autoKnockLobby: false
enableLobbyChat
type: Boolean
DEPRECATED Use lobby.enableChat instead.
Enable lobby chat.
enableLobbyChat: false
hideLobbyButton
type: Boolean
DEPRECATED Use securityUi.hideLobbyButton instead.
Hide the lobby button.
hideLobbyButton: false
lobby
type: Object
Options related to the lobby screen.
Default: unset
Properties:
autoKnock- If the lobby is enabled, it starts knocking automatically. ReplacesautoKnockLobby.enableChat- Enables the lobby chat. ReplacesenableLobbyChat.
lobby: {
autoKnock: true,
enableChat: false
}
Moderator
disableModeratorIndicator
type: Boolean
Hides the moderator indicators.
Default: false
disableModeratorIndicator: true
disableReactionsModeration
type: Boolean
Disables the moderation of reactions feature.
Default: false
disableReactionsModeration: true
disableRemoteMute
type: Boolean
Disables muting operations of remote participants.
Default: false
disableRemoteMute: true
Notifications
notifications
type: Array
Use this array to configure which notifications will be shown to the user. The items correspond to the title or description key of that notification. Some of these notifications also depend on some other internal logic to be displayed or not, so adding them here will not ensure they will always be displayed.
A falsy value for this prop will result in having all notifications enabled (e.g null, undefined, false).
notifications: []
disabledNotifications
type: Array
List of notifications to be disabled. Works in tandem with the above setting.
disabledNotifications: [
'notify.chatMessages', // shown when receiving chat messages while the chat window is closed
'notify.grantedTo', // shown when moderator rights were granted to a participant
]
Participants Pane
participantsPane
type: Object
Options related to the participants pane.
Default: unset
Properties:
hideModeratorSettingsTab- Hides the button to open the moderator settings tab.hideMoreActionsButton- Hides the more actions button.hideMuteAllButton- Hides the mute all button.
participantsPane: {
hideModeratorSettingsTab: false,
hideMoreActionsButton: false,
hideMuteAllButton: false
}
Recording
dropbox
type: Object
Enable the dropbox integration.
Properties:
appKey- Your APP Key.redirectURI- A URL to redirect the user to, after authenticating by default uses
dropbox: {
appKey: 'DROPBOX_APP_KEY',
redirectURI: 'https://jitsi-meet.example.com/subfolder/static/oauth.html'
}
fileRecordingsEnabled
type: Boolean
Whether to enable file recording or not.
fileRecordingsEnabled: false
fileRecordingsServiceEnabled 🚫
type: Boolean
When integrations like dropbox are enabled only that will be shown, by enabling fileRecordingsServiceEnabled, we show both the integrations and the generic recording service (its configuration and storage type depends on jibri configuration)
fileRecordingsServiceEnabled: true
fileRecordingsServiceSharingEnabled 🚫
type: Boolean
Whether to show the possibility to share file recording with other people (e.g. meeting participants), based on the actual implementation on the backend.
fileRecordingsServiceSharingEnabled: false
hideRecordingLabel
type: Boolean
Set recording label to auto hide instead of staying always on screen.
Default: false
hideRecordingLabel: true
localRecording
type: Object
Set local recording configuration.
Properties:
disable- Whether to disable the feature or not.notifyAllParticipants- Whether to notify all the participants when a local recording is started.
localRecording: {
disable: false,
notifyAllParticipants: true
}
recordingLimit 🚫
type: Object
Options for the recording limit notification.
Properties:
limit- The recording limit in minutes. Note: This number appears in the notification text but doesn't enforce the actual recording time limit. This should be configured in jibri!appName= The name of the app with unlimited recordings.appURL- The URL of the app with unlimited recordings.
recordingLimit: {
limit: 60,
appName: 'Unlimited recordings APP',
appURL: 'https://unlimited.recordings.app.com/'
}
recordings
type: Object
Options for the recordings features.
Properties:
recordAudioAndVideo- If true (default) recording audio and video is selected by default in the recording dialog.suggestRecording- If true, shows a notification at the start of the meeting with a call to action button to start recording (for users who can do so).showPrejoinWarning- If true, shows a warning label in the prejoin screen to point out the possibility that the call you're joining might be recorded.showRecordingLink- If true, the notification for recording start will display a link to download the cloud recording.
recordings: {
recordAudioAndVideo: true,
suggestRecording: false,
showPrejoinWarning: true,
showRecordingLink: true
}
Screen Sharing
desktopSharingFrameRate
type: Object
Optional desktop sharing frame rate options
Default: { min: 5, max: 5 }
desktopSharingFrameRate: {
min: 3,
max: 10
}
disableScreensharingVirtualBackground
type: Boolean
Disables using screensharing as virtual background.
disableScreensharingVirtualBackground: false
screenshotCapture
type: Object
Options for the screenshot capture feature.
Properties:
enabled- Enables the featuremode- The mode for the screenshot capture feature. Can be either 'recording' - screensharing screenshots are taken only when the recording is also on, or 'always' - screensharing screenshots are always taken.
screenshotCapture: {
enabled: true,
mode: 'recording'
}
Security UI
securityUi
type: Object
Options regarding the security-related UI elements.
Default: unset
Properties:
hideLobbyButton- Hides the lobby button. ReplaceshideLobbyButton.disableLobbyPassword- Hides the possibility to set and enter a lobby password.
securityUi: {
hideLobbyButton: true,
disableLobbyPassword: false
}
Testing
testing
type: Object
Experimental features.
Default: unset
Properties:
assumeBandwidth- Allows the setting of a custom bandwidth value from the UI.disableE2EE- Disables the End to End Encryption feature. Useful for debugging issues related to insertable streams.mobileXmppWsThreshold- Enables XMPP WebSocket (as opposed to BOSH) for the given amount of users.p2pTestMode- P2P test mode disables automatic switching to P2P when there are 2 participants in the conference.testMode- Enables the test specific features consumed by jitsi-meet-torture.noAutoPlayVideo- Disables the auto-play behavior of all newly created video element. This is useful when the client runs on a host with limited resources.
testing: {
assumeBandwidth: true,
disableE2EE: false,
mobileXmppWsThreshold: 10, // enable XMPP WebSockets on mobile for 10% of the users
p2pTestMode: false,
testMode: false,
noAutoPlayVideo: false
}
Video
constraints
type: Object
W3C spec-compliant video constraints to use for video capture. Currently
used by browsers that return true from lib-jitsi-meet's
util#browser#usesNewGumFlow. The constraints are independent of
this config's resolution value. Defaults to requesting an ideal
resolution of 720p.
constraints: {
video: {
height: {
ideal: 720,
max: 720,
min: 240
}
}
}
disableAddingBackgroundImages
type: Boolean
When true the user cannot add more images to be used as a virtual background. Only the default ones will be available.
disableAddingBackgroundImages: true
disableH264
type: Boolean
If set to true, disable the H.264 video codec by stripping it out of the SDP.
disableH264: true
disableLocalVideoFlip
type: Boolean
Disable the Flip video option from the context menu for local video.
disableLocalVideoFlip: true
disableSelfView
type: Boolean
Disables self-view tile. (hides it from tile view and filmstrip)
disableSelfView: true
doNotFlipLocalVideo
type: Boolean
A property used to unset the default flip state of the local video.
When it is set to true, the local(self) video will not be mirrored anymore.
doNotFlipLocalVideo: true
maxFullResolutionParticipants
type: Number
How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD?
Use -1 to disable.
maxFullResolutionParticipants: 5
resolution
type: Number
Sets the preferred resolution (height) for local video
Default: 720
resolution: 1080
startVideoMuted
type: Number
Every participant after the Nth will start the video muted.
startVideoMuted: 5
startWithVideoMuted
type: Boolean
Start calls with video muted. Only applied locally.
startWithVideoMuted: true
videoQuality
type: Object
Specify the settings for video quality optimizations on the client.
Properties:
codecPreferenceOrder- Provides a way to set the codec preference on desktop-based endpoints.
codecPreferenceOrder: [ 'AV1', 'VP9', 'VP8', 'H264' ],
mobileCodecPreferenceOrder- Provides a way to set the codec preference on mobile devices, both on RN and mobile browser-based endpoints.
codecPreferenceOrder: [ 'VP8', 'H264', 'VP9' ],
Codec specific settings for scalability modes and max bitrates.
av1: {
maxBitratesVideo: {
low: 100000,
standard: 300000,
high: 1000000,
fullHd: 2000000,
ultraHd: 4000000,
ssHigh: 2500000
},
scalabilityModeEnabled: true,
useSimulcast: false,
useKSVC: true
},
h264: {
maxBitratesVideo: {
low: 200000,
standard: 500000,
high: 1500000,
fullHd: 3000000,
ultraHd: 6000000,
ssHigh: 2500000
},
scalabilityModeEnabled: true
},
vp8: {
maxBitratesVideo: {
low: 200000,
standard: 500000,
high: 1500000,
fullHd: 3000000,
ultraHd: 6000000,
ssHigh: 2500000
},
scalabilityModeEnabled: false
},
vp9: {
maxBitratesVideo: {
low: 100000,
standard: 300000,
high: 1200000,
fullHd: 2500000,
ultraHd: 5000000,
ssHigh: 2500000
},
scalabilityModeEnabled: true,
useSimulcast: false,
useKSVC: true
},
-
minHeightForQualityLvl- The options can be used to override default thresholds of video thumbnail heights corresponding to the video quality levels used in the application. At the time of this writing, the allowed levels are:low- for the low-quality level (180p at the time of this writing)standard- for the medium quality level (360p)high- for the high-quality level (720p)
The keys should be positive numbers which represent the minimal thumbnail height for the quality level. With the default config value below the application will use 'low' quality until the thumbnails are at least 360 pixels tall. If the thumbnail height reaches 720 pixels then the application will switch to the high quality.
Whiteboard
whiteboard
type: Object
Options related to the Excalidraw whiteboard integration.
Default: unset
Properties:
enabled- Whether the feature is enabled or not.collabServerBaseUrl- The server used to support whiteboard collaboration.userLimit- The user access limit to the whiteboard, introduced as a means to control the performance.limitUrl- The url for more info about the whiteboard and its usage limitations.
whiteboard: {
enabled: true,
collabServerBaseUrl: 'https://excalidraw-backend.example.com',
userLimit: 25,
limitUrl: 'https://example.com/blog/whiteboard-limits'
}