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
- Iftrue
the 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 ifuseAppLanguage
is 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
URLs for the app connection.
Properties
domain
- XMPP domainanonymousdomain
- When using authentication, domain for guest users.authdomain
- Domain for authenticated users. Defaults todomain
.focus
- Focus component domain. Defaults to focus.domain
.muc
- XMPP MUC domain.
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 areall
andrelay
, 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.preferredCodec
- DEPRECATED UsecodecPreferenceOrder
ormobileCodecPreferenceOrder
instead.disabledCodec
- DEPRECATED UsecodecPreferenceOrder
ormobileCodecPreferenceOrder
instead.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
}
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
lastNLimits 🚫​
type: Object
Provides a way to use different "last N" values based on the number of participants in the conference. The keys in an Object represent number of participants and the values are "last N" to be used when number of participants gets to or above the number.
For the given example mapping, "last N" will be set to 20 as long as there are at least 5, but less than 29 participants in the call and it will be lowered to 15 when the 30th participant joins. The 'channelLastN' will be used as default until the first threshold is reached.
lastNLimits: {
5: 20,
30: 15,
50: 10,
70: 5,
90: 2
}
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: Boolean
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
preferH264​
type: Boolean
DEPRECATED Use preferredCodec
under the videoQuality
section instead.
Prefer to use the H.264 video codec (if supported). Note that it's not recommended to do this because simulcast is not supported when using H.264. For 1-to-1 calls this setting is enabled by default and can be toggled in the p2p section.
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
},
-
disabledCodec
- DEPRECATED UsecodecPreferenceOrder
ormobileCodecPreferenceOrder
instead. -
preferredCodec
- DEPRECATED UsecodecPreferenceOrder
ormobileCodecPreferenceOrder
instead. -
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'
}