1<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html"> 2 <head> 3 4 <meta charset="utf-8"> 5 <meta http-equiv="content-type" content="text/html;charset=utf-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> 7 <meta name="theme-color" content="#2A3A4B"> 8 <base href="/" /> 9 10 11 <link rel="apple-touch-icon" href="images/apple-touch-icon.png"> 12 <link rel="stylesheet" href="css/all.css?v=5415"> 13 <link rel="manifest" id="manifest-placeholder"> 14 15
15<script> 16 // Dynamically generate the manifest location URL. It must be served from the document origin, and we may have 17 // the base pointing to the CDN. This way we can generate a full URL which will bypass the base. 18 document.querySelector('#manifest-placeholder').setAttribute('href', window.location.origin + '/manifest.json'); 19 20 document.addEventListener('DOMContentLoaded', () => { 21 if (!JitsiMeetJS.app) { 22 return; 23 } 24 25 JitsiMeetJS.app.renderEntryPoint({ 26 Component: JitsiMeetJS.app.entryPoints.APP 27 }) 28 29 const inIframe = () => { 30 try { 31 return window.self !== window.top; 32 } catch (e) { 33 return true; 34 } 35 }; 36 37 const isElectron = navigator.userAgent.includes('Electron'); 38 const shouldRegisterWorker = !isElectron && !inIframe() && 'serviceWorker' in navigator; 39 40 if (shouldRegisterWorker) { 41 navigator.serviceWorker 42 .register(window.location.origin + '/pwa-worker.js') 43 .then(reg => { 44 console.log('Service worker registered.', reg); 45 }) 46 .catch(err => { 47 console.log(err); 48 }); 49 } 50 }); 51 </script>
51 52
52<script> 53 // IE11 and earlier can be identified via their user agent and be 54 // redirected to a page that is known to have no newer js syntax. 55 if (window.navigator.userAgent.match(/(MSIE|Trident)/)) { 56 var roomName = encodeURIComponent(window.location.pathname); 57 window.location.href = "static/recommendedBrowsers.html" + "?room=" + roomName; 58 } 59 60 window.indexLoadedTime = window.performance.now(); 61 console.log("(TIME) index.html loaded:\t", indexLoadedTime); 62 // XXX the code below listeners for errors and displays an error message 63 // in the document body when any of the required files fails to load. 64 // The intention is to prevent from displaying broken page. 65 var criticalFiles = [ 66 "config.js", 67 "utils.js", 68 "do_external_connect.js", 69 "interface_config.js", 70 "logging_config.js", 71 "lib-jitsi-meet.min.js", 72 "app.bundle.min.js", 73 "all.css?v=5415" 74 ]; 75 var loadErrHandler = function(e) { 76 var target = e.target; 77 // Error on
77<script> and <link>(CSS) 78 //
78<script> will have .src and <link> .href 79 var fileRef = (target.src ? target.src : target.href); 80 if (("SCRIPT" === target.tagName || "LINK" === target.tagName) 81 && criticalFiles.some( 82 function(file) { return fileRef.indexOf(file) !== -1 })) { 83 window.onload = function() { 84 // The whole complex part below implements page reloads with 85 // "exponential backoff". The retry attempt is passes as 86 // "rCounter" query parameter 87 var href = window.location.href; 88 89 var retryMatch = href.match(/.+(\?|&)rCounter=(\d+)/); 90 var retryCountStr = retryMatch ? retryMatch[2] : "0"; 91 var retryCount = Number.parseInt(retryCountStr); 92 93 if (retryMatch == null) { 94 var separator = href.indexOf("?") === -1 ? "?" : "&"; 95 var hashIdx = href.indexOf("#"); 96 97 if (hashIdx === -1) { 98 href += separator + "rCounter=1"; 99 } else { 100 var hashPart = href.substr(hashIdx); 101 102 href = href.substr(0, hashIdx) 103 + separator + "rCounter=1" + hashPart; 104 } 105 } else { 106 var separator = retryMatch[1]; 107 108 href = href.replace( 109 /(\?|&)rCounter=(\d+)/, 110 separator + "rCounter=" + (retryCount + 1)); 111 } 112 113 var delay = Math.pow(2, retryCount) * 2000; 114 if (isNaN(delay) || delay < 2000 || delay > 60000) 115 delay = 10000; 116 117 var showMoreText = "show more"; 118 var showLessText = "show less"; 119 120 document.body.innerHTML 121 = "<div style='" 122 + "position: absolute;top: 50%;left: 50%;" 123 + "text-align: center;" 124 + "font-size: medium;" 125 + "font-weight: 400;" 126 + "transform: translate(-50%, -50%)'>" 127 + "Uh oh! We couldn't fully download everything we needed :(" 128 + "<br/> " 129 + "We will try again shortly. In the mean time, check for problems with your Internet connection!" 130 + "<br/><br/> " 131 + "<div id='moreInfo' style='" 132 + "display: none;'>" + "Missing " + fileRef 133 + "<br/><br/></div>" 134 + "<a id='showMore' style='" 135 + "text-decoration: underline;" 136 + "font-size:small;" 137 + "cursor: pointer'>" + showMoreText + "</a>" 138 + " " 139 + "<a id ='reloadLink' style='" 140 + "text-decoration: underline;" 141 + "font-size:small;" 142 + "'>reload now</a>" 143 + "</div>"; 144 145 var reloadLink = document.getElementById('reloadLink'); 146 reloadLink.setAttribute('href', href); 147 148 var showMoreElem = document.getElementById("showMore"); 149 showMoreElem.addEventListener('click', function () { 150 var moreInfoElem 151 = document.getElementById("moreInfo"); 152 153 if (showMoreElem.innerHTML === showMoreText) { 154 moreInfoElem.setAttribute( 155 "style", 156 "display: block;" 157 + "color:#FF991F;" 158 + "font-size:small;" 159 + "user-select:text;");
160 showMoreElem.innerHTML = showLessText; 161 } 162 else { 163 moreInfoElem.setAttribute( 164 "style", "display: none;"); 165 showMoreElem.innerHTML = showMoreText; 166 } 167 }); 168 169 window.setTimeout( 170 function () { window.location.replace(href); }, delay); 171 172 // Call extra handler if defined. 173 if (typeof postLoadErrorHandler === "function") { 174 postLoadErrorHandler(fileRef); 175 } 176 }; 177 window.removeEventListener( 178 'error', loadErrHandler, true /* capture phase */); 179 } 180 }; 181 window.addEventListener( 182 'error', loadErrHandler, true /* capture phase type of listener */); 183 </script>
183 184
184<script>/* eslint-disable no-unused-vars, no-var */ 185 186var config = { 187 // Connection 188 // 189 190 hosts: { 191 // XMPP domain. 192 domain: 'jitsi-meet.example.com', 193 194 // When using authentication, domain for guest users. 195 // anonymousdomain: 'guest.example.com', 196 197 // Domain for authenticated users. Defaults to <domain>. 198 // authdomain: 'jitsi-meet.example.com', 199 200 // Focus component domain. Defaults to focus.<domain>. 201 // focus: 'focus.jitsi-meet.example.com', 202 203 // XMPP MUC domain. FIXME: use XEP-0030 to discover it. 204 muc: 'conference.jitsi-meet.example.com' 205 }, 206 207 // BOSH URL. FIXME: use XEP-0156 to discover it. 208 bosh: '//jitsi-meet.example.com/http-bind', 209 210 // Websocket URL 211 // websocket: 'wss://jitsi-meet.example.com/xmpp-websocket', 212 213 // The real JID of focus participant - can be overridden here 214 // Do not change username - FIXME: Make focus username configurable 215 // https://github.com/jitsi/jitsi-meet/issues/7376 216 // focusUserJid: '[email protected]', 217 218 219 // Testing / experimental features. 220 // 221 222 testing: { 223 // Disables the End to End Encryption feature. Useful for debugging 224 // issues related to insertable streams. 225 // disableE2EE: false, 226 227 // Enables/disables thumbnail reordering in the filmstrip. It is enabled by default unless explicitly 228 // disabled by the below option. 229 // enableThumbnailReordering: true, 230 231 // Enables XMPP WebSocket (as opposed to BOSH) for the given amount of users. 232 // mobileXmppWsThreshold: 10 // enable XMPP WebSockets on mobile for 10% of the users 233 234 // P2P test mode disables automatic switching to P2P when there are 2 235 // participants in the conference. 236 // p2pTestMode: false, 237 238 // Enables the test specific features consumed by jitsi-meet-torture 239 // testMode: false 240 241 // Disables the auto-play behavior of *all* newly created video element. 242 // This is useful when the client runs on a host with limited resources. 243 // noAutoPlayVideo: false 244 245 // Enable / disable 500 Kbps bitrate cap on desktop tracks. When enabled, 246 // simulcast is turned off for the desktop share. If presenter is turned 247 // on while screensharing is in progress, the max bitrate is automatically 248 // adjusted to 2.5 Mbps. This takes a value between 0 and 1 which determines 249 // the probability for this to be enabled. This setting has been deprecated. 250 // desktopSharingFrameRate.max now determines whether simulcast will be enabled 251 // or disabled for the screenshare. 252 // capScreenshareBitrate: 1 // 0 to disable - deprecated. 253 254 // Enable callstats only for a percentage of users. 255 // This takes a value between 0 and 100 which determines the probability for 256 // the callstats to be enabled. 257 // callStatsThreshold: 5 // enable callstats for 5% of the users. 258 }, 259 260 // Disables moderator indicators. 261 // disableModeratorIndicator: false, 262 263 // Disables the reactions feature. 264 // disableReactions: true, 265 266 // Disables polls feature. 267 // disablePolls: false, 268 269 // Disables ICE/UDP by filtering out local and remote UDP candidates in 270 // signalling. 271 // webrtcIceUdpDisable: false, 272 273 // Disables ICE/TCP by filtering out local and remote TCP candidates in 274 // signalling. 275 // webrtcIceTcpDisable: false, 276 277 278 // Media 279 // 280 281 // Enable unified plan implementation support on Chromium based browsers. 282 // enableUnifiedOnChrome: false, 283 284 // Audio 285 286 // Disable measuring of audio levels. 287 // disableAudioLevels: false, 288 // audioLevelsInterval: 200, 289 290 // Enabling this will run the lib-jitsi-meet no audio detection module which 291 // will notify the user if the current selected microphone has no audio 292 // input and will suggest another valid device if one is present. 293 enableNoAudioDetection: true, 294 295 // Enabling this will show a "Save Logs" link in the GSM popover that can be 296 // used to collect debug information (XMPP IQs, SDP offer/answer cycles) 297 // about the call. 298 // enableSaveLogs: false, 299 300 // Enabling this will hide the "Show More" link in the GSM popover that can be 301 // used to display more statistics about the connection (IP, Port, protocol, etc). 302 // disableShowMoreStats: true, 303 304 // Enabling this will run the lib-jitsi-meet noise detection module which will 305 // notify the user if there is noise, other than voice, coming from the current 306 // selected microphone. The purpose it to let the user know that the input could 307 // be potentially unpleasant for other meeting participants. 308 enableNoisyMicDetection: true, 309 310 // Start the conference in audio only mode (no video is being received nor 311 // sent). 312 // startAudioOnly: false, 313 314 // Every participant after the Nth will start audio muted. 315 // startAudioMuted: 10, 316 317 // Start calls with audio muted. Unlike the option above, this one is only 318 // applied locally. FIXME: having these 2 options is confusing. 319 // startWithAudioMuted: false, 320 321 // Enabling it (with #params) will disable local audio output of remote 322 // participants and to enable it back a reload is needed. 323 // startSilent: false 324 325 // Enables support for opus-red (redundancy for Opus). 326 // enableOpusRed: false, 327 328 // Specify audio quality stereo and opusMaxAverageBitrate values in order to enable HD audio. 329 // Beware, by doing so, you are disabling echo cancellation, noise suppression and AGC. 330 // audioQuality: { 331 // stereo: false, 332 // opusMaxAverageBitrate: null // Value to fit the 6000 to 510000 range. 333 // }, 334 335 // Video 336 337 // Sets the preferred resolution (height) for local video. Defaults to 720. 338 // resolution: 720, 339 340 // Specifies whether the raised hand will hide when someone becomes a dominant speaker or not 341 // disableRemoveRaisedHandOnFocus: false, 342
343 // Specifies whether there will be a search field in speaker stats or not 344 // disableSpeakerStatsSearch: false, 345 346 // Specifies whether participants in speaker stats should be ordered or not, and with what priority 347 // speakerStatsOrder: [ 348 // 'role', <- Moderators on top 349 // 'name', <- Alphabetically by name 350 // 'hasLeft', <- The ones that have left in the bottom 351 // ] <- the order of the array elements determines priority 352 353 // How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD. 354 // Use -1 to disable. 355 // maxFullResolutionParticipants: 2, 356 357 // w3c spec-compliant video constraints to use for video capture. Currently 358 // used by browsers that return true from lib-jitsi-meet's 359 // util#browser#usesNewGumFlow. The constraints are independent from 360 // this config's resolution value. Defaults to requesting an ideal 361 // resolution of 720p. 362 // constraints: { 363 // video: { 364 // height: { 365 // ideal: 720, 366 // max: 720, 367 // min: 240 368 // } 369 // } 370 // }, 371 372 // Enable / disable simulcast support. 373 // disableSimulcast: false, 374 375 // Enable / disable layer suspension. If enabled, endpoints whose HD layers are not in use will be suspended 376 // (no longer sent) until they are requested again. This is enabled by default. This must be enabled for screen 377 // sharing to work as expected on Chrome. Disabling this might result in low resolution screenshare being sent 378 // by the client. 379 // enableLayerSuspension: false, 380 381 // Every participant after the Nth will start video muted. 382 // startVideoMuted: 10, 383 384 // Start calls with video muted. Unlike the option above, this one is only 385 // applied locally. FIXME: having these 2 options is confusing. 386 // startWithVideoMuted: false, 387 388 // If set to true, prefer to use the H.264 video codec (if supported). 389 // Note that it's not recommended to do this because simulcast is not 390 // supported when using H.264. For 1-to-1 calls this setting is enabled by 391 // default and can be toggled in the p2p section. 392 // This option has been deprecated, use preferredCodec under videoQuality section instead. 393 // preferH264: true, 394 395 // If set to true, disable H.264 video codec by stripping it out of the 396 // SDP. 397 // disableH264: false, 398 399 // Desktop sharing 400 401 // Optional desktop sharing frame rate options. Default value: min:5, max:5. 402 // desktopSharingFrameRate: { 403 // min: 5, 404 // max: 5 405 // }, 406 407 // Try to start calls with screen-sharing instead of camera video. 408 // startScreenSharing: false, 409 410 // Recording 411 412 // Whether to enable file recording or not. 413 // fileRecordingsEnabled: false, 414 // Enable the dropbox integration. 415 // dropbox: { 416 // appKey: '<APP_KEY>' // Specify your app key here. 417 // // A URL to redirect the user to, after authenticating 418 // // by default uses: 419 // // 'https://jitsi-meet.example.com/static/oauth.html' 420 // redirectURI: 421 // 'https://jitsi-meet.example.com/subfolder/static/oauth.html' 422 // }, 423 // When integrations like dropbox are enabled only that will be shown, 424 // by enabling fileRecordingsServiceEnabled, we show both the integrations 425 // and the generic recording service (its configuration and storage type 426 // depends on jibri configuration) 427 // fileRecordingsServiceEnabled: false, 428 // Whether to show the possibility to share file recording with other people 429 // (e.g. meeting participants), based on the actual implementation 430 // on the backend. 431 // fileRecordingsServiceSharingEnabled: false, 432 433 // Whether to enable live streaming or not. 434 // liveStreamingEnabled: false, 435 436 // Transcription (in interface_config, 437 // subtitles and buttons can be configured) 438 // transcribingEnabled: false, 439 440 // If true transcriber will use the application language. 441 // The application language is either explicitly set by participants in their settings or automatically 442 // detected based on the environment, e.g. if the app is opened in a chrome instance which is using french as its 443 // default language then transcriptions for that participant will be in french. 444 // Defaults to true. 445 // transcribeWithAppLanguage: true, 446 447 // Transcriber language. This settings will only work if "transcribeWithAppLanguage" is explicitly set to false. 448 // Available languages can be found in 449 // ./src/react/features/transcribing/transcriber-langs.json. 450 // preferredTranscribeLanguage: 'en-US', 451 452 // Enables automatic turning on captions when recording is started 453 // autoCaptionOnRecord: false, 454 455 // Misc 456 457 // Default value for the channel "last N" attribute. -1 for unlimited. 458 channelLastN: -1, 459 460 // Connection indicators 461 // connectionIndicators: { 462 // autoHide: true, 463 // autoHideTimeout: 5000, 464 // disabled: false, 465 // inactiveDisabled: false 466 // }, 467 468 // Provides a way for the lastN value to be controlled through the UI. 469 // When startLastN is present, conference starts with a last-n value of startLastN and channelLastN 470 // value will be used when the quality level is selected using "Manage Video Quality" slider. 471 // startLastN: 1, 472 473 // Provides a way to use different "last N" values based on the number of participants in the conference. 474 // The keys in an Object represent number of participants and the values are "last N" to be used when number of 475 // participants gets to or above the number. 476 // 477 // For the given example mapping, "last N" will be set to 20 as long as there are at least 5, but less than 478 // 29 participants in the call and it will be lowered to 15 when the 30th participant joins. The 'channelLastN' 479 // will be used as default until the first threshold is reached. 480 // 481 // lastNLimits: { 482 // 5: 20, 483 // 30: 15, 484 // 50: 10, 485 // 70: 5, 486 // 90: 2 487 // }, 488 489 // Provides a way to translate the legacy bridge signaling messages, 'LastNChangedEvent', 490 // 'SelectedEndpointsChangedEvent' and 'ReceiverVideoConstraint' into the new 'ReceiverVideoConstraints' message 491 // that invokes the new bandwidth allocation algorithm in the bridge which is described here 492 // - https://github.com/jitsi/jitsi-videobridge/blob/master/doc/allocation.md. 493 // useNewBandwidthAllocationStrategy: false, 494 495 // Specify the settings for video quality optimizations on the client. 496 // videoQuality: { 497 // // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified 498 // // here will be removed from the list of codecs present in the SDP answer generated by the client. If the 499 // // same codec is specified for both the disabled and preferred option, the disable settings will prevail. 500 // // Note that 'VP8' cannot be disabled since it's a mandatory codec, the setting will be ignored in this case. 501 // disabledCodec: 'H264', 502 // 503 // // Provides a way to set a preferred video codec for the JVB connection. If 'H264' is specified here, 504 // // simulcast will be automatically disabled since JVB doesn't support H264 simulcast yet. This will only 505 // // rearrange the the preference order of the codecs in the SDP answer generated by the browser only if the 506 // // preferred codec specified here is present. Please ensure that the JVB offers the specified codec for this 507 // // to take effect. 508 // preferredCodec: 'VP8', 509 // 510 // // Provides a way to enforce the preferred codec for the conference even when the conference has endpoints 511 // // that do not support the preferred codec. For example, older versions of Safari do not support VP9 yet. 512 // // This will result in Safari not being able to decode video from endpoints sending VP9 video. 513 // // When set to false, the conference falls back to VP8 whenever there is an endpoint that doesn't support the 514 // // preferred codec and goes back to the preferred codec when that endpoint leaves. 515 // // enforcePreferredCodec: false, 516 // 517 // // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for 518 // // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values 519 // // are the max.bitrates to be set on that particular type of stream. The actual send may vary based on 520 // // the available bandwidth calculated by the browser, but it will be capped by the values specified here. 521 // // This is currently not implemented on app based clients on mobile. 522 // maxBitratesVideo: { 523 // H264: { 524 // low: 200000, 525 // standard: 500000, 526 // high: 1500000 527 // }, 528 // VP8 : { 529 // low: 200000, 530 // standard: 500000, 531 // high: 1500000 532 // }, 533 // VP9: { 534 // low: 100000, 535 // standard: 300000, 536 // high: 1200000 537 // } 538 // }, 539 // 540 // // The options can be used to override default thresholds of video thumbnail heights corresponding to 541 // // the video quality levels used in the application. At the time of this writing the allowed levels are: 542 // // 'low' - for the low quality level (180p at the time of this writing) 543 // // 'standard' - for the medium quality level (360p) 544 // // 'high' - for the high quality level (720p) 545 // // The keys should be positive numbers which represent the minimal thumbnail height for the quality level. 546 // // 547 // // With the default config value below the application will use 'low' quality until the thumbnails are 548 // // at least 360 pixels tall. If the thumbnail height reaches 720 pixels then the application will switch to 549 // // the high quality. 550 // minHeightForQualityLvl: { 551 // 360: 'standard', 552 // 720: 'high' 553 // }, 554 // 555 // // Provides a way to resize the desktop track to 720p (if it is greater than 720p) before creating a canvas 556 // // for the presenter mode (camera picture-in-picture mode with screenshare). 557 // resizeDesktopForPresenter: false 558 // }, 559 560 // // Options for the recording limit notification. 561 // recordingLimit: { 562 // 563 // // The recording limit in minutes. Note: This number appears in the notification text 564 // // but doesn't enforce the actual recording time limit. This should be configured in 565 // // jibri! 566 // limit: 60, 567 // 568 // // The name of the app with unlimited recordings. 569 // appName: 'Unlimited recordings APP', 570 // 571 // // The URL of the app with unlimited recordings. 572 // appURL: 'https://unlimited.recordings.app.com/' 573 // }, 574 575 // Disables or enables RTX (RFC 4588) (defaults to false). 576 // disableRtx: false, 577
578 // Disables or enables TCC support in this client (default: enabled). 579 // enableTcc: true, 580 581 // Disables or enables REMB support in this client (default: enabled). 582 // enableRemb: true, 583 584 // Enables ICE restart logic in LJM and displays the page reload overlay on 585 // ICE failure. Current disabled by default because it's causing issues with 586 // signaling when Octo is enabled. Also when we do an "ICE restart"(which is 587 // not a real ICE restart), the client maintains the TCC sequence number 588 // counter, but the bridge resets it. The bridge sends media packets with 589 // TCC sequence numbers starting from 0. 590 // enableIceRestart: false, 591 592 // Enables forced reload of the client when the call is migrated as a result of 593 // the bridge going down. 594 // enableForcedReload: true, 595 596 // Use TURN/UDP servers for the jitsi-videobridge connection (by default 597 // we filter out TURN/UDP because it is usually not needed since the 598 // bridge itself is reachable via UDP) 599 // useTurnUdp: false 600 601 // Enable support for encoded transform in supported browsers. This allows 602 // E2EE to work in Safari if the corresponding flag is enabled in the browser. 603 // Experimental. 604 // enableEncodedTransformSupport: false, 605 606 // UI 607 // 608 609 // Disables responsive tiles. 610 // disableResponsiveTiles: false, 611 612 // Hides lobby button 613 // hideLobbyButton: false, 614 615 // Require users to always specify a display name. 616 // requireDisplayName: true, 617 618 // Whether to use a welcome page or not. In case it's false a random room 619 // will be joined when no room is specified. 620 enableWelcomePage: true, 621 622 // Disable app shortcuts that are registered upon joining a conference 623 // disableShortcuts: false, 624 625 // Disable initial browser getUserMedia requests. 626 // This is useful for scenarios where users might want to start a conference for screensharing only 627 // disableInitialGUM: false, 628 629 // Enabling the close page will ignore the welcome page redirection when 630 // a call is hangup. 631 // enableClosePage: false, 632 633 // Disable hiding of remote thumbnails when in a 1-on-1 conference call. 634 // Setting this to null, will also disable showing the remote videos 635 // when the toolbar is shown on mouse movements 636 // disable1On1Mode: null | false | true, 637 638 // Default language for the user interface. 639 // defaultLanguage: 'en', 640 641 // Disables profile and the edit of all fields from the profile settings (display name and email) 642 // disableProfile: false, 643 644 // Whether or not some features are checked based on token. 645 // enableFeaturesBasedOnToken: false, 646 647 // When enabled the password used for locking a room is restricted to up to the number of digits specified 648 // roomPasswordNumberOfDigits: 10, 649 // default: roomPasswordNumberOfDigits: false, 650 651 // Message to show the users. Example: 'The service will be down for 652 // maintenance at 01:00 AM GMT, 653 // noticeMessage: '', 654 655 // Enables calendar integration, depends on googleApiApplicationClientID 656 // and microsoftApiApplicationClientID 657 // enableCalendarIntegration: false, 658 659 // When 'true', it shows an intermediate page before joining, where the user can configure their devices. 660 // prejoinPageEnabled: false, 661 662 // When 'true', the user cannot edit the display name. 663 // (Mainly useful when used in conjuction with the JWT so the JWT name becomes read only.) 664 // readOnlyName: false, 665 666 // If etherpad integration is enabled, setting this to true will 667 // automatically open the etherpad when a participant joins. This 668 // does not affect the mobile app since opening an etherpad 669 // obscures the conference controls -- it's better to let users 670 // choose to open the pad on their own in that case. 671 // openSharedDocumentOnJoin: false, 672 673 // If true, shows the unsafe room name warning label when a room name is 674 // deemed unsafe (due to the simplicity in the name) and a password is not 675 // set or the lobby is not enabled. 676 // enableInsecureRoomNameWarning: false, 677 678 // Whether to automatically copy invitation URL after creating a room. 679 // Document should be focused for this option to work 680 // enableAutomaticUrlCopy: false, 681 682 // Base URL for a Gravatar-compatible service. Defaults to libravatar. 683 // gravatarBaseURL: 'https://seccdn.libravatar.org/avatar/', 684 685 // App name to be displayed in the invitation email subject, as an alternative to 686 // interfaceConfig.APP_NAME. 687 // inviteAppName: null, 688 689 // Moved from interfaceConfig(TOOLBAR_BUTTONS). 690 // The name of the toolbar buttons to display in the toolbar, including the 691 // "More actions" menu. If present, the button will display. Exceptions are 692 // "livestreaming" and "recording" which also require being a moderator and 693 // some other values in config.js to be enabled. Also, the "profile" button will 694 // not display for users with a JWT. 695 // Notes: 696 // - it's impossible to choose which buttons go in the "More actions" menu 697 // - it's impossible to control the placement of buttons 698 // - 'desktop' controls the "Share your screen" button 699 // - if `toolbarButtons` is undefined, we fallback to enabling all buttons on the UI 700 // toolbarButtons: [ 701 // 'camera', 702 // 'chat', 703 // 'closedcaptions', 704 // 'desktop', 705 // 'download', 706 // 'embedmeeting', 707 // 'etherpad', 708 // 'feedback', 709 // 'filmstrip', 710 // 'fullscreen', 711 // 'hangup', 712 // 'help', 713 // 'invite', 714 // 'livestreaming', 715 // 'microphone', 716 // 'mute-everyone', 717 // 'mute-video-everyone', 718 // 'participants-pane', 719 // 'profile', 720 // 'raisehand', 721 // 'recording', 722 // 'security', 723 // 'select-background', 724 // 'settings', 725 // 'shareaudio', 726 // 'sharedvideo', 727 // 'shortcuts', 728 // 'stats', 729 // 'tileview', 730 // 'toggle-camera', 731 // 'videoquality', 732 // '__end' 733 // ], 734 735 // Holds values related to toolbar visibility control. 736 // toolbarConfig: { 737 // // Moved from interfaceConfig.INITIAL_TOOLBAR_TIMEOUT 738 // // The initial numer of miliseconds for the toolbar buttons to be visible on screen. 739 // initialTimeout: 20000, 740 // // Moved from interfaceConfig.TOOLBAR_TIMEOUT 741 // // Number of miliseconds for the toolbar buttons to be visible on screen. 742 // timeout: 4000, 743 // // Moved from interfaceConfig.TOOLBAR_ALWAYS_VISIBLE 744 // // Whether toolbar should be always visible or should hide after x miliseconds. 745 // alwaysVisible: false 746 // }, 747 748 // Toolbar buttons which have their click event exposed through the API on 749 // `toolbarButtonClicked` event instead of executing the normal click routine. 750 // buttonsWithNotifyClick: [ 751 // 'camera', 752 // 'chat', 753 // 'closedcaptions', 754 // 'desktop', 755 // 'download', 756 // 'embedmeeting', 757 // 'etherpad', 758 // 'feedback', 759 // 'filmstrip', 760 // 'fullscreen', 761 // 'hangup', 762 // 'help', 763 // 'invite', 764 // 'livestreaming', 765 // 'microphone', 766 // 'mute-everyone', 767 // 'mute-video-everyone', 768 // 'participants-pane', 769 // 'profile', 770 // 'raisehand', 771 // 'recording', 772 // 'security', 773 // 'select-background', 774 // 'settings', 775 // 'shareaudio', 776 // 'sharedvideo', 777 // 'shortcuts', 778 // 'stats', 779 // 'tileview', 780 // 'toggle-camera', 781 // 'videoquality', 782 // '__end' 783 // ], 784 785 // List of pre meeting screens buttons to hide. The values must be one or more of the 5 allowed buttons: 786 // 'microphone', 'camera', 'select-background', 'invite', 'settings' 787 // hiddenPremeetingButtons: [], 788 789 // Stats 790 // 791 792 // Whether to enable stats collection or not in the TraceablePeerConnection. 793 // This can be useful for debugging purposes (post-processing/analysis of 794 // the webrtc stats) as it is done in the jitsi-meet-torture bandwidth 795 // estimation tests. 796 // gatherStats: false, 797 798 // The interval at which PeerConnection.getStats() is called. Defaults to 10000 799 // pcStatsInterval: 10000, 800 801 // To enable sending statistics to callstats.io you must provide the 802 // Application ID and Secret. 803 // callStatsID: '', 804 // callStatsSecret: '', 805
806 // The callstats initialize config params as described in the API: 807 // https://docs.callstats.io/docs/javascript#callstatsinitialize-with-app-secret 808 // callStatsConfigParams: { 809 // disableBeforeUnloadHandler: true, // disables callstats.js's window.onbeforeunload parameter. 810 // applicationVersion: "app_version", // Application version specified by the developer. 811 // disablePrecalltest: true, // disables the pre-call test, it is enabled by default. 812 // siteID: "siteID", // The name/ID of the site/campus from where the call/pre-call test is made. 813 // additionalIDs: { // additionalIDs object, contains application related IDs. 814 // customerID: "Customer Identifier. Example, walmart.", 815 // tenantID: "Tenant Identifier. Example, monster.", 816 // productName: "Product Name. Example, Jitsi.", 817 // meetingsName: "Meeting Name. Example, Jitsi loves callstats.", 818 // serverName: "Server/MiddleBox Name. Example, jvb-prod-us-east-mlkncws12.", 819 // pbxID: "PBX Identifier. Example, walmart.", 820 // pbxExtensionID: "PBX Extension Identifier. Example, 5625.", 821 // fqExtensionID: "Fully qualified Extension Identifier. Example, +71 (US) +5625.", 822 // sessionID: "Session Identifier. Example, session-12-34" 823 // }, 824 // collectLegacyStats: true, //enables the collection of legacy stats in chrome browser 825 // collectIP: true //enables the collection localIP address 826 // }, 827 828 // Enables sending participants' display names to callstats 829 // enableDisplayNameInStats: false, 830 831 // Enables sending participants' emails (if available) to callstats and other analytics 832 // enableEmailInStats: false, 833 834 // Controls the percentage of automatic feedback shown to participants when callstats is enabled. 835 // The default value is 100%. If set to 0, no automatic feedback will be requested 836 // feedbackPercentage: 100, 837 838 // Privacy 839 // 840 841 // If third party requests are disabled, no other server will be contacted. 842 // This means avatars will be locally generated and callstats integration 843 // will not function. 844 // disableThirdPartyRequests: false, 845 846 847 // Peer-To-Peer mode: used (if enabled) when there are just 2 participants. 848 // 849 850 p2p: { 851 // Enables peer to peer mode. When enabled the system will try to 852 // establish a direct connection when there are exactly 2 participants 853 // in the room. If that succeeds the conference will stop sending data 854 // through the JVB and use the peer to peer connection instead. When a 855 // 3rd participant joins the conference will be moved back to the JVB 856 // connection. 857 enabled: true, 858 859 // Enable unified plan implementation support on Chromium for p2p connection. 860 // enableUnifiedOnChrome: false, 861 862 // Sets the ICE transport policy for the p2p connection. At the time 863 // of this writing the list of possible values are 'all' and 'relay', 864 // but that is subject to change in the future. The enum is defined in 865 // the WebRTC standard: 866 // https://www.w3.org/TR/webrtc/#rtcicetransportpolicy-enum. 867 // If not set, the effective value is 'all'. 868 // iceTransportPolicy: 'all', 869 870 // If set to true, it will prefer to use H.264 for P2P calls (if H.264 871 // is supported). This setting is deprecated, use preferredCodec instead. 872 // preferH264: true, 873 874 // Provides a way to set the video codec preference on the p2p connection. Acceptable 875 // codec values are 'VP8', 'VP9' and 'H264'. 876 // preferredCodec: 'H264', 877 878 // If set to true, disable H.264 video codec by stripping it out of the 879 // SDP. This setting is deprecated, use disabledCodec instead. 880 // disableH264: false, 881 882 // Provides a way to prevent a video codec from being negotiated on the p2p connection. 883 // disabledCodec: '', 884 885 // How long we're going to wait, before going back to P2P after the 3rd 886 // participant has left the conference (to filter out page reload). 887 // backToP2PDelay: 5, 888 889 // The STUN servers that will be used in the peer to peer connections 890 stunServers: [ 891 892 // { urls: 'stun:jitsi-meet.example.com:3478' }, 893 { urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' } 894 ] 895 }, 896 897 analytics: { 898 // True if the analytics should be disabled 899 // disabled: false, 900 901 // The Google Analytics Tracking ID: 902 // googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1' 903 904 // Matomo configuration: 905 // matomoEndpoint: 'https://your-matomo-endpoint/', 906 // matomoSiteID: '42', 907 908 // The Amplitude APP Key: 909 // amplitudeAPPKey: '<APP_KEY>' 910 911 // Configuration for the rtcstats server: 912 // By enabling rtcstats server every time a conference is joined the rtcstats 913 // module connects to the provided rtcstatsEndpoint and sends statistics regarding 914 // PeerConnection states along with getStats metrics polled at the specified 915 // interval. 916 // rtcstatsEnabled: true, 917 918 // In order to enable rtcstats one needs to provide a endpoint url. 919 // rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/, 920 921 // The interval at which rtcstats will poll getStats, defaults to 1000ms. 922 // If the value is set to 0 getStats won't be polled and the rtcstats client 923 // will only send data related to RTCPeerConnection events. 924 // rtcstatsPolIInterval: 1000, 925
926 // Array of script URLs to load as lib-jitsi-meet "analytics handlers". 927 // scriptURLs: [ 928 // "libs/analytics-ga.min.js", // google-analytics 929 // "https://example.com/my-custom-analytics.js" 930 // ], 931 }, 932 933 // Logs that should go be passed through the 'log' event if a handler is defined for it 934 // apiLogLevels: ['warn', 'log', 'error', 'info', 'debug'], 935 936 // Information about the jitsi-meet instance we are connecting to, including 937 // the user region as seen by the server. 938 deploymentInfo: { 939 // shard: "shard1", 940 // region: "europe", 941 // userRegion: "asia" 942 }, 943 944 // Array<string> of disabled sounds. 945 // Possible values: 946 // - 'ASKED_TO_UNMUTE_SOUND' 947 // - 'E2EE_OFF_SOUND' 948 // - 'E2EE_ON_SOUND' 949 // - 'INCOMING_MSG_SOUND' 950 // - 'KNOCKING_PARTICIPANT_SOUND' 951 // - 'LIVE_STREAMING_OFF_SOUND' 952 // - 'LIVE_STREAMING_ON_SOUND' 953 // - 'NO_AUDIO_SIGNAL_SOUND' 954 // - 'NOISY_AUDIO_INPUT_SOUND' 955 // - 'OUTGOING_CALL_EXPIRED_SOUND' 956 // - 'OUTGOING_CALL_REJECTED_SOUND' 957 // - 'OUTGOING_CALL_RINGING_SOUND' 958 // - 'OUTGOING_CALL_START_SOUND' 959 // - 'PARTICIPANT_JOINED_SOUND' 960 // - 'PARTICIPANT_LEFT_SOUND' 961 // - 'RAISE_HAND_SOUND' 962 // - 'REACTION_SOUND' 963 // - 'RECORDING_OFF_SOUND' 964 // - 'RECORDING_ON_SOUND' 965 // - 'TALK_WHILE_MUTED_SOUND' 966 // disabledSounds: [], 967 968 // DEPRECATED! Use `disabledSounds` instead. 969 // Decides whether the start/stop recording audio notifications should play on record. 970 // disableRecordAudioNotification: false, 971 972 // DEPRECATED! Use `disabledSounds` instead. 973 // Disables the sounds that play when other participants join or leave the 974 // conference (if set to true, these sounds will not be played). 975 // disableJoinLeaveSounds: false, 976 977 // DEPRECATED! Use `disabledSounds` instead. 978 // Disables the sounds that play when a chat message is received. 979 // disableIncomingMessageSound: false, 980 981 // Information for the chrome extension banner 982 // chromeExtensionBanner: { 983 // // The chrome extension to be installed address 984 // url: 'https://chrome.google.com/webstore/detail/jitsi-meetings/kglhbbefdnlheedjiejgomgmfplipfeb', 985 986 // // Extensions info which allows checking if they are installed or not 987 // chromeExtensionsInfo: [ 988 // { 989 // id: 'kglhbbefdnlheedjiejgomgmfplipfeb', 990 // path: 'jitsi-logo-48x48.png' 991 // } 992 // ] 993 // }, 994 995 // Local Recording 996 // 997 998 // localRecording: { 999 // Enables local recording. 1000 // Additionally, 'localrecording' (all lowercase) needs to be added to 1001 // the `toolbarButtons`-array for the Local Recording button to show up 1002 // on the toolbar. 1003 // 1004 // enabled: true, 1005 // 1006 1007 // The recording format, can be one of 'ogg', 'flac' or 'wav'. 1008 // format: 'flac' 1009 // 1010 1011 // }, 1012 1013 // Options related to end-to-end (participant to participant) ping. 1014 // e2eping: { 1015 // // The interval in milliseconds at which pings will be sent. 1016 // // Defaults to 10000, set to <= 0 to disable. 1017 // pingInterval: 10000, 1018 // 1019 // // The interval in milliseconds at which analytics events 1020 // // with the measured RTT will be sent. Defaults to 60000, set 1021 // // to <= 0 to disable. 1022 // analyticsInterval: 60000, 1023 // }, 1024 1025 // If set, will attempt to use the provided video input device label when 1026 // triggering a screenshare, instead of proceeding through the normal flow 1027 // for obtaining a desktop stream. 1028 // NOTE: This option is experimental and is currently intended for internal 1029 // use only. 1030 // _desktopSharingSourceDevice: 'sample-id-or-label', 1031 1032 // If true, any checks to handoff to another application will be prevented 1033 // and instead the app will continue to display in the current browser. 1034 // disableDeepLinking: false, 1035 1036 // A property to disable the right click context menu for localVideo 1037 // the menu has option to flip the locally seen video for local presentations 1038 // disableLocalVideoFlip: false, 1039 1040 // A property used to unset the default flip state of the local video. 1041 // When it is set to 'true', the local(self) video will not be mirrored anymore. 1042 // doNotFlipLocalVideo: false, 1043 1044 // Mainly privacy related settings 1045 1046 // Disables all invite functions from the app (share, invite, dial out...etc) 1047 // disableInviteFunctions: true, 1048 1049 // Disables storing the room name to the recents list 1050 // doNotStoreRoom: true, 1051 1052 // Deployment specific URLs.
1053 // deploymentUrls: { 1054 // // If specified a 'Help' button will be displayed in the overflow menu with a link to the specified URL for 1055 // // user documentation. 1056 // userDocumentationURL: 'https://docs.example.com/video-meetings.html', 1057 // // If specified a 'Download our apps' button will be displayed in the overflow menu with a link 1058 // // to the specified URL for an app download page. 1059 // downloadAppsUrl: 'https://docs.example.com/our-apps.html' 1060 // }, 1061 1062 // Options related to the remote participant menu. 1063 // remoteVideoMenu: { 1064 // // If set to true the 'Kick out' button will be disabled. 1065 // disableKick: true, 1066 // // If set to true the 'Grant moderator' button will be disabled. 1067 // disableGrantModerator: true 1068 // }, 1069 1070 // If set to true all muting operations of remote participants will be disabled. 1071 // disableRemoteMute: true, 1072 1073 // Enables support for lip-sync for this client (if the browser supports it). 1074 // enableLipSync: false 1075 1076 /** 1077 External API url used to receive branding specific information. 1078 If there is no url set or there are missing fields, the defaults are applied. 1079 The config file should be in JSON. 1080 None of the fields are mandatory and the response must have the shape: 1081 { 1082 // The domain url to apply (will replace the domain in the sharing conference link/embed section) 1083 inviteDomain: 'example-company.org, 1084 // The hex value for the colour used as background 1085 backgroundColor: '#fff', 1086 // The url for the image used as background 1087 backgroundImageUrl: 'https://example.com/background-img.png', 1088 // The anchor url used when clicking the logo image 1089 logoClickUrl: 'https://example-company.org', 1090 // The url used for the image used as logo 1091 logoImageUrl: 'https://example.com/logo-img.png', 1092 // Overwrite for pool of background images for avatars 1093 avatarBackgrounds: ['url(https://example.com/avatar-background-1.png)', '#FFF'], 1094 // The lobby/prejoin screen background
1095 premeetingBackground: 'url(https://example.com/premeeting-background.png)' 1096 } 1097 */ 1098 // dynamicBrandingUrl: '', 1099 1100 // When true the user cannot add more images to be used as virtual background. 1101 // Only the default ones from will be available. 1102 // disableAddingBackgroundImages: false, 1103 1104 // Sets the background transparency level. '0' is fully transparent, '1' is opaque. 1105 // backgroundAlpha: 1, 1106 1107 // The URL of the moderated rooms microservice, if available. If it 1108 // is present, a link to the service will be rendered on the welcome page, 1109 // otherwise the app doesn't render it. 1110 // moderatedRoomServiceUrl: 'https://moderated.jitsi-meet.example.com', 1111 1112 // If true, tile view will not be enabled automatically when the participants count threshold is reached. 1113 // disableTileView: true, 1114 1115 // Controls the visibility and behavior of the top header conference info labels. 1116 // If a label's id is not in any of the 2 arrays, it will not be visible at all on the header. 1117 // conferenceInfo: { 1118 // // those labels will not be hidden in tandem with the toolbox. 1119 // alwaysVisible: ['recording', 'local-recording'], 1120 // // those labels will be auto-hidden in tandem with the toolbox buttons. 1121 // autoHide: [ 1122 // 'subject', 1123 // 'conference-timer', 1124 // 'participants-count', 1125 // 'e2ee', 1126 // 'transcribing', 1127 // 'video-quality', 1128 // 'insecure-room' 1129 // ] 1130 // }, 1131 1132 // Hides the conference subject 1133 // hideConferenceSubject: true, 1134 1135 // Hides the conference timer. 1136 // hideConferenceTimer: true, 1137 1138 // Hides the recording label 1139 // hideRecordingLabel: false, 1140 1141 // Hides the participants stats 1142 // hideParticipantsStats: true, 1143 1144 // Sets the conference subject 1145 // subject: 'Conference Subject', 1146 1147 // This property is related to the use case when jitsi-meet is used via the IFrame API. When the property is true 1148 // jitsi-meet will use the local storage of the host page instead of its own. This option is useful if the browser 1149 // is not persisting the local storage inside the iframe. 1150 // useHostPageLocalStorage: true, 1151 1152 // etherpad ("shared document") integration. 1153 // 1154 1155 // If set, add a "Open shared document" link to the bottom right menu that 1156 // will open an etherpad document. 1157 // etherpad_base: 'https://your-etherpad-installati.on/p/', 1158 1159 // If etherpad_base is set, and useRoomAsSharedDocumentName is set to true, 1160 // open a pad with the name of the room (lowercased) instead of a pad with a 1161 // random UUID. 1162 // useRoomAsSharedDocumentName: true, 1163 1164 // List of undocumented settings used in jitsi-meet 1165 /** 1166 _immediateReloadThreshold 1167 debug 1168 debugAudioLevels 1169 deploymentInfo 1170 dialInConfCodeUrl 1171 dialInNumbersUrl 1172 dialOutAuthUrl 1173 dialOutCodesUrl 1174 disableRemoteControl 1175 displayJids 1176 externalConnectUrl 1177 e2eeLabels 1178 firefox_fake_device 1179 googleApiApplicationClientID 1180 iAmRecorder 1181 iAmSipGateway 1182 microsoftApiApplicationClientID 1183 peopleSearchQueryTypes 1184 peopleSearchUrl 1185 requireDisplayName 1186 tokenAuthUrl 1187 */ 1188 1189 /** 1190 * This property can be used to alter the generated meeting invite links (in combination with a branding domain 1191 * which is retrieved internally by jitsi meet) (e.g. https://meet.jit.si/someMeeting 1192 * can become https://brandedDomain/roomAlias) 1193 */ 1194 // brandingRoomAlias: null, 1195 1196 // List of undocumented settings used in lib-jitsi-meet 1197 /** 1198 _peerConnStatusOutOfLastNTimeout 1199 _peerConnStatusRtcMuteTimeout 1200 abTesting 1201 avgRtpStatsN 1202 callStatsConfIDNamespace 1203 callStatsCustomScriptUrl 1204 desktopSharingSources 1205 disableAEC 1206 disableAGC 1207 disableAP 1208 disableHPF 1209 disableNS 1210 enableTalkWhileMuted 1211 forceJVB121Ratio 1212 forceTurnRelay 1213 hiddenDomain 1214 ignoreStartMuted 1215 websocketKeepAlive 1216 websocketKeepAliveUrl 1217 */ 1218 1219 /** 1220 * Default interval (milliseconds) for triggering mouseMoved iframe API event 1221 */ 1222 mouseMoveCallbackInterval: 1000, 1223 1224 /** 1225 Use this array to configure which notifications will be shown to the user 1226 The items correspond to the title or description key of that notification
1227 Some of these notifications also depend on some other internal logic to be displayed or not, 1228 so adding them here will not ensure they will always be displayed 1229 1230 A falsy value for this prop will result in having all notifications enabled (e.g null, undefined, false) 1231 */ 1232 // notifications: [ 1233 // 'connection.CONNFAIL', // shown when the connection fails, 1234 // 'dialog.cameraNotSendingData', // shown when there's no feed from user's camera 1235 // 'dialog.kickTitle', // shown when user has been kicked 1236 // 'dialog.liveStreaming', // livestreaming notifications (pending, on, off, limits) 1237 // 'dialog.lockTitle', // shown when setting conference password fails 1238 // 'dialog.maxUsersLimitReached', // shown when maximmum users limit has been reached 1239 // 'dialog.micNotSendingData', // shown when user's mic is not sending any audio 1240 // 'dialog.passwordNotSupportedTitle', // shown when setting conference password fails due to password format 1241 // 'dialog.recording', // recording notifications (pending, on, off, limits) 1242 // 'dialog.remoteControlTitle', // remote control notifications (allowed, denied, start, stop, error) 1243 // 'dialog.reservationError', 1244 // 'dialog.serviceUnavailable', // shown when server is not reachable 1245 // 'dialog.sessTerminated', // shown when there is a failed conference session 1246 // 'dialog.sessionRestarted', // show when a client reload is initiated because of bridge migration 1247 // 'dialog.tokenAuthFailed', // show when an invalid jwt is used 1248 // 'dialog.transcribing', // transcribing notifications (pending, off) 1249 // 'dialOut.statusMessage', // shown when dial out status is updated. 1250 // 'liveStreaming.busy', // shown when livestreaming service is busy 1251 // 'liveStreaming.failedToStart', // shown when livestreaming fails to start 1252 // 'liveStreaming.unavailableTitle', // shown when livestreaming service is not reachable 1253 // 'lobby.joinRejectedMessage', // shown when while in a lobby, user's request to join is rejected 1254 // 'lobby.notificationTitle', // shown when lobby is toggled and when join requests are allowed / denied 1255 // 'localRecording.localRecording', // shown when a local recording is started 1256 // 'notify.disconnected', // shown when a participant has left 1257 // 'notify.connectedOneMember', // show when a participant joined 1258 // 'notify.connectedTwoMembers', // show when two participants joined simultaneously 1259 // 'notify.connectedThreePlusMembers', // show when more than 2 participants joined simultaneously 1260 // 'notify.grantedTo', // shown when moderator rights were granted to a participant 1261 // 'notify.invitedOneMember', // shown when 1 participant has been invited 1262 // 'notify.invitedThreePlusMembers', // shown when 3+ participants have been invited 1263 // 'notify.invitedTwoMembers', // shown when 2 participants have been invited 1264 // 'notify.kickParticipant', // shown when a participant is kicked 1265 // 'notify.moderationStartedTitle', // shown when AV moderation is activated 1266 // 'notify.moderationStoppedTitle', // shown when AV moderation is deactivated 1267 // 'notify.moderationInEffectTitle', // shown when user attempts to unmute audio during AV moderation 1268 // 'notify.moderationInEffectVideoTitle', // shown when user attempts to enable video during AV moderation 1269 // 'notify.moderationInEffectCSTitle', // shown when user attempts to share content during AV moderation 1270 // 'notify.mutedRemotelyTitle', // shown when user is muted by a remote party 1271 // 'notify.mutedTitle', // shown when user has been muted upon joining, 1272 // 'notify.newDeviceAudioTitle', // prompts the user to use a newly detected audio device 1273 // 'notify.newDeviceCameraTitle', // prompts the user to use a newly detected camera 1274 // 'notify.passwordRemovedRemotely', // shown when a password has been removed remotely 1275 // 'notify.passwordSetRemotely', // shown when a password has been set remotely 1276 // 'notify.raisedHand', // shown when a partcipant used raise hand, 1277 // 'notify.startSilentTitle', // shown when user joined with
1277no audio 1278 // 'notify.unmute', // shown to moderator when user raises hand during AV moderation 1279 // 'prejoin.errorDialOut', 1280 // 'prejoin.errorDialOutDisconnected', 1281 // 'prejoin.errorDialOutFailed', 1282 // 'prejoin.errorDialOutStatus', 1283 // 'prejoin.errorStatusCode', 1284 // 'prejoin.errorValidation', 1285 // 'recording.busy', // shown when recording service is busy 1286 // 'recording.failedToStart', // shown when recording fails to start 1287 // 'recording.unavailableTitle', // shown when recording service is not reachable 1288 // 'toolbar.noAudioSignalTitle', // shown when a broken mic is detected 1289 // 'toolbar.noisyAudioInputTitle', // shown when noise is detected for the current microphone 1290 // 'toolbar.talkWhileMutedPopup', // shown when user tries to speak while muted 1291 // 'transcribing.failedToStart' // shown when transcribing fails to start 1292 // ], 1293 1294 // Prevent the filmstrip from autohiding when screen width is under a certain threshold 1295 // disableFilmstripAutohiding: false, 1296 1297 // Specifies whether the chat emoticons are disabled or not 1298 // disableChatSmileys: false, 1299 1300 // Allow all above example options to include a trailing comma and 1301 // prevent fear when commenting out the last value. 1302 makeJsonParserHappy: 'even if last key had a trailing comma' 1303 1304 // no configuration value should follow this line. 1305}; 1306 1307/* eslint-enable no-unused-vars, no-var */ 1308 1309// Begin default config overrides. 1310 1311if (!config.hasOwnProperty('hosts')) config.hosts = {}; 1312 1313config.hosts.domain = 'jitsi-video.inseciacloud.com'; 1314config.focusUserJid = '[email protected]'; 1315 1316config.hosts.muc = 'muc.jitsi-video.inseciacloud.com'; 1317config.bosh = '/http-bind'; 1318config.websocket = 'wss://jitsi-video.inseciacloud.com/xmpp-websocket'; 1319// Video configuration. 1320// 1321 1322if (!config.hasOwnProperty('constraints')) config.constraints = {}; 1323if (!config.constraints.hasOwnProperty('video')) config.constraints.video = {}; 1324 1325config.resolution = 720; 1326config.constraints.video.height = { ideal: 720, max: 720, min: 180 }; 1327config.constraints.video.width = { ideal: 1280, max: 1280, min: 320}; 1328config.disableSimulcast = false; 1329config.startVideoMuted = 10; 1330config.startWithVideoMuted = false; 1331 1332// ScreenShare Configuration. 1333// 1334config.desktopSharingFrameRate = { min: 5, max: 5 }; 1335 1336// Audio configuration. 1337// 1338 1339config.enableNoAudioDetection = true; 1340config.enableTalkWhileMuted = false; 1341config.disableAP = false; 1342config.stereo = false; 1343config.startAudioOnly = false; 1344config.startAudioMuted = 10; 1345config.startWithAudioMuted = false; 1346config.startSilent = false; 1347config.disableAudioLevels = false; 1348config.enableNoisyMicDetection = true; 1349 1350 1351// Peer-to-Peer options. 1352// 1353 1354if (!config.hasOwnProperty('p2p')) config.p2p = {}; 1355 1356config.p2p.enabled = true; 1357 1358 1359// Etherpad 1360// 1361 1362// Recording. 1363// 1364 1365// Analytics. 1366// 1367 1368if (!config.hasOwnProperty('analytics')) config.analytics = {}; 1369 1370// Enables callstatsUsername to be reported as statsId and used 1371// by callstats as repoted remote id. 1372config.enableStatsID = false; 1373 1374 1375// Dial in/out services. 1376// 1377 1378// Calendar service integration. 1379// 1380 1381config.enableCalendarIntegration = false; 1382 1383// Invitation service. 1384// 1385 1386// Miscellaneous. 1387// 1388 1389// Prejoin page. 1390config.prejoinPageEnabled = true; 1391 1392// Welcome page. 1393config.enableWelcomePage = true; 1394 1395// Close page. 1396config.enableClosePage = false; 1397 1398// Default language. 1399// Require users to always specify a display name. 1400config.requireDisplayName = false; 1401 1402// Chrome extension banner. 1403// Advanced. 1404// 1405 1406// Lipsync hack in jicofo, may not be safe. 1407config.enableLipSync = false; 1408 1409config.enableRemb = true; 1410config.enableTcc = true; 1411 1412// Enable IPv6 support. 1413config.useIPv6 = true; 1414 1415// Transcriptions (subtitles and buttons can be configured in interface_config) 1416config.transcribingEnabled = false; 1417 1418// Deployment information. 1419// 1420 1421if (!config.hasOwnProperty('deploymentInfo')) config.deploymentInfo = {}; 1422 1423// Testing 1424// 1425 1426if (!config.hasOwnProperty('testing')) config.testing = {}; 1427if (!config.testing.hasOwnProperty('octo')) config.testing.octo = {}; 1428 1429config.testing.capScreenshareBitrate = 1; 1430config.testing.octo.probability = 0; 1431 1432// Deep Linking 1433config.disableDeepLinking = false;
1434 1435// P2P preferred codec 1436// enable preffered video Codec 1437if (!config.hasOwnProperty('videoQuality')) config.videoQuality = {}; 1438config.videoQuality.enforcePreferredCodec = false; 1439 1440if (!config.videoQuality.hasOwnProperty('maxBitratesVideo')) config.videoQuality.maxBitratesVideo = {}; 1441// Reactions 1442config.disableReactions = false; 1443 1444// Polls 1445config.disablePolls = false; 1446</script>
1446<!-- adapt to your needs, i.e. set hosts and bosh path --> 1447 1448
1448<script src="libs/do_external_connect.min.js?v=1"></script>
1448 1449
1449<script>/* eslint-disable no-unused-vars, no-var, max-len */ 1450/* eslint sort-keys: ["error", "asc", {"caseSensitive": false}] */ 1451 1452/** 1453 * !!!IMPORTANT!!! 1454 * 1455 * This file is considered deprecated. All options will eventually be moved to 1456 * config.js, and no new options should be added here. 1457 */ 1458 1459var interfaceConfig = { 1460 APP_NAME: 'Jitsi Meet', 1461 AUDIO_LEVEL_PRIMARY_COLOR: 'rgba(255,255,255,0.4)', 1462 AUDIO_LEVEL_SECONDARY_COLOR: 'rgba(255,255,255,0.2)', 1463 1464 /** 1465 * A UX mode where the last screen share participant is automatically 1466 * pinned. Valid values are the string "remote-only" so remote participants 1467 * get pinned but not local, otherwise any truthy value for all participants, 1468 * and any falsy value to disable the feature. 1469 * 1470 * Note: this mode is experimental and subject to breakage. 1471 */ 1472 AUTO_PIN_LATEST_SCREEN_SHARE: 'remote-only', 1473 BRAND_WATERMARK_LINK: '', 1474 1475 CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it 1476 1477 DEFAULT_BACKGROUND: '#474747', 1478 DEFAULT_LOCAL_DISPLAY_NAME: 'me', 1479 DEFAULT_LOGO_URL: 'images/watermark.svg', 1480 DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster', 1481 DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.svg', 1482 1483 DISABLE_DOMINANT_SPEAKER_INDICATOR: false, 1484 1485 /** 1486 * If true, notifications regarding joining/leaving are no longer displayed. 1487 */ 1488 DISABLE_JOIN_LEAVE_NOTIFICATIONS: false, 1489 1490 /** 1491 * If true, presence status: busy, calling, connected etc. is not displayed. 1492 */ 1493 DISABLE_PRESENCE_STATUS: false, 1494 1495 /** 1496 * Whether the ringing sound in the call/ring overlay is disabled. If 1497 * {@code undefined}, defaults to {@code false}. 1498 * 1499 * @type {boolean} 1500 */ 1501 DISABLE_RINGING: false, 1502 1503 /** 1504 * Whether the speech to text transcription subtitles panel is disabled. 1505 * If {@code undefined}, defaults to {@code false}. 1506 * 1507 * @type {boolean} 1508 */ 1509 DISABLE_TRANSCRIPTION_SUBTITLES: false, 1510 1511 /** 1512 * Whether or not the blurred video background for large video should be 1513 * displayed on browsers that can support it. 1514 */ 1515 DISABLE_VIDEO_BACKGROUND: false, 1516 1517 DISPLAY_WELCOME_FOOTER: true, 1518 DISPLAY_WELCOME_PAGE_ADDITIONAL_CARD: false, 1519 DISPLAY_WELCOME_PAGE_CONTENT: false, 1520 DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: false, 1521 1522 ENABLE_DIAL_OUT: true, 1523 1524 ENABLE_FEEDBACK_ANIMATION: false, // Enables feedback star animation. 1525 1526 FILM_STRIP_MAX_HEIGHT: 120, 1527 1528 GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true, 1529 1530 /** 1531 * Hide the logo on the deep linking pages. 1532 */ 1533 HIDE_DEEP_LINKING_LOGO: false, 1534 1535 /** 1536 * Hide the invite prompt in the header when alone in the meeting. 1537 */ 1538 HIDE_INVITE_MORE_HEADER: false, 1539 1540 JITSI_WATERMARK_LINK: 'https://jitsi.org', 1541 1542 LANG_DETECTION: true, // Allow i18n to detect the system language 1543 LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live', // Documentation reference for the live streaming feature. 1544 LOCAL_THUMBNAIL_RATIO: 16 / 9, // 16:9 1545 1546 /** 1547 * Maximum coefficient of the ratio of the large video to the visible area 1548 * after the large video is scaled to fit the window. 1549 * 1550 * @type {number} 1551 */ 1552 MAXIMUM_ZOOMING_COEFFICIENT: 1.3, 1553 1554 /** 1555 * Whether the mobile app Jitsi Meet is to be promoted to participants 1556 * attempting to join a conference in a mobile Web browser. If 1557 * {@code undefined}, defaults to {@code true}. 1558 * 1559 * @type {boolean} 1560 */ 1561 MOBILE_APP_PROMO: true, 1562 1563 /** 1564 * Specify custom URL for downloading android mobile app. 1565 */ 1566 MOBILE_DOWNLOAD_LINK_ANDROID: 'https://play.google.com/store/apps/details?id=org.jitsi.meet', 1567 1568 /** 1569 * Specify custom URL for downloading f droid app. 1570 */ 1571 MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/en/packages/org.jitsi.meet/', 1572 1573 /** 1574 * Specify URL for downloading ios mobile app. 1575 */ 1576 MOBILE_DOWNLOAD_LINK_IOS: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905', 1577 1578 NATIVE_APP_NAME: 'Jitsi Meet', 1579 1580 // Names of browsers which should show a warning stating the current browser 1581 // has a suboptimal experience. Browsers which are not listed as optimal or 1582 // unsupported are considered suboptimal. Valid values are: 1583 // chrome, chromium, edge, electron, firefox, nwjs, opera, safari 1584 OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'firefox', 'nwjs', 'electron', 'safari' ], 1585 1586 POLICY_LOGO: null, 1587 PROVIDER_NAME: 'Jitsi', 1588 1589 /** 1590 * If true, will display recent list 1591 * 1592 * @type {boolean} 1593 */ 1594 RECENT_LIST_ENABLED: true, 1595 REMOTE_THUMBNAIL_RATIO: 1, // 1:1 1596 1597 SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'sounds' ], 1598 1599 /** 1600 * Specify which sharing features should be displayed. If the value is not set 1601 * all sharing features will be shown. You can set [] to disable all. 1602 */ 1603 // SHARING_FEATURES: ['email', 'url', 'dial-in', 'embed'], 1604 1605 SHOW_BRAND_WATERMARK: false, 1606 1607 /** 1608 * Decides whether the chrome extension banner should be rendered on the landing page and during the meeting. 1609 * If this is set to false, the banner will not be rendered at all. If set to true, the check for extension(s) 1610 * being already installed is done before rendering. 1611 */ 1612 SHOW_CHROME_EXTENSION_BANNER: false, 1613 1614 SHOW_DEEP_LINKING_IMAGE: false, 1615 SHOW_JITSI_WATERMARK: true, 1616 SHOW_POWERED_BY: false, 1617 SHOW_PROMOTIONAL_CLOSE_PAGE: false, 1618 1619 /* 1620 * If indicated some of the error dialogs may point to the support URL for 1621 * help. 1622 */ 1623 SUPPORT_URL: 'https://community.jitsi.org/', 1624 1625 // Browsers, in addition to those which do not fully support WebRTC, that 1626 // are not supported and should show the unsupported browser page. 1627 UNSUPPORTED_BROWSERS: [], 1628 1629 /** 1630 * Whether to show thumbnails in filmstrip as a column instead of as a row. 1631 */ 1632 VERTICAL_FILMSTRIP: true, 1633 1634 // Determines how the video would fit the screen. 'both' would fit the whole 1635 // screen, 'height' would fit the original video height to the height of the 1636 // screen, 'width' would fit the original video width to the width of the 1637 // screen respecting ratio, 'nocrop' would make the video as large as 1638 // possible and preserve aspect ratio without cropping. 1639 VIDEO_LAYOUT_FIT: 'both', 1640 1641 /** 1642 * If true, hides the video quality label indicating the resolution status 1643 * of the current large video. 1644 * 1645 * @type {boolean} 1646 */ 1647 VIDEO_QUALITY_LABEL_DISABLED: false, 1648 1649 /** 1650 * How many columns the tile view can expand to. The respected range is 1651 * between 1 and 5. 1652 */ 1653 // TILE_VIEW_MAX_COLUMNS: 5, 1654 1655 /** 1656 * Specify Firebase dynamic link properties for the mobile apps. 1657 */ 1658 // MOBILE_DYNAMIC_LINK: { 1659 // APN: 'org.jitsi.meet', 1660 // APP_CODE: 'w2atb', 1661 // CUSTOM_DOMAIN: undefined, 1662 // IBI: 'com.atlassian.JitsiMeet.ios', 1663 // ISI: '1165103905' 1664 // }, 1665 1666 /** 1667 * Specify mobile app scheme for opening the app from the mobile browser. 1668 */ 1669 // APP_SCHEME: 'org.jitsi.meet', 1670 1671 /** 1672 * Specify the Android app package name. 1673 */
1674 // ANDROID_APP_PACKAGE: 'org.jitsi.meet', 1675 1676 /** 1677 * Override the behavior of some notifications to remain displayed until 1678 * explicitly dismissed through a user action. The value is how long, in 1679 * milliseconds, those notifications should remain displayed. 1680 */ 1681 // ENFORCE_NOTIFICATION_AUTO_DISMISS_TIMEOUT: 15000, 1682 1683 // List of undocumented settings 1684 /** 1685 INDICATOR_FONT_SIZES 1686 PHONE_NUMBER_REGEX 1687 */ 1688 1689 // -----------------DEPRECATED CONFIGS BELOW THIS LINE----------------------------- 1690 1691 // Connection indicators ( 1692 // CONNECTION_INDICATOR_AUTO_HIDE_ENABLED, 1693 // CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT, 1694 // CONNECTION_INDICATOR_DISABLED) got moved to config.js. 1695 1696 // Please use disableModeratorIndicator from config.js 1697 // DISABLE_FOCUS_INDICATOR: false, 1698 1699 // Moved to config.js as `toolbarConfig.initialTimeout`. 1700 // INITIAL_TOOLBAR_TIMEOUT: 20000, 1701 1702 // Moved to config.js as `toolbarConfig.alwaysVisible`. 1703 // TOOLBAR_ALWAYS_VISIBLE: false, 1704 1705 // This config was moved to config.js as `toolbarButtons`. 1706 // TOOLBAR_BUTTONS: [], 1707 1708 // Moved to config.js as `toolbarConfig.timeout`. 1709 // TOOLBAR_TIMEOUT: 4000, 1710 1711 // Allow all above example options to include a trailing comma and 1712 // prevent fear when commenting out the last value. 1713 // eslint-disable-next-line sort-keys 1714 makeJsonParserHappy: 'even if last key had a trailing comma' 1715 1716 // No configuration value should follow this line. 1717}; 1718 1719/* eslint-enable no-unused-vars, no-var, max-len */ 1720</script>
1720 1721
1721<script>/* eslint-disable no-unused-vars, no-var */ 1722 1723// Logging configuration 1724var loggingConfig = { 1725 // default log level for the app and lib-jitsi-meet 1726 defaultLogLevel: 'trace', 1727 1728 // Option to disable LogCollector (which stores the logs on CallStats) 1729 // disableLogCollector: true, 1730 1731 // The following are too verbose in their logging with the 1732 // {@link #defaultLogLevel}: 1733 'modules/RTC/TraceablePeerConnection.js': 'info', 1734 'modules/statistics/CallStats.js': 'info', 1735 'modules/xmpp/strophe.util.js': 'log' 1736}; 1737 1738/* eslint-enable no-unused-vars, no-var */ 1739 1740// XXX Web/React server-includes logging_config.js into index.html. 1741// Mobile/react-native requires it in react/features/base/logging. For the 1742// purposes of the latter, (try to) export loggingConfig. The following 1743// detection of a module system is inspired by webpack. 1744typeof module === 'object' 1745 && typeof exports === 'object' 1746 && (module.exports = loggingConfig); 1747</script>
1747 1748
1748<script src="libs/lib-jitsi-meet.min.js?v=5415"></script>
1748 1749
1749<script src="libs/app.bundle.min.js?v=5415"></script>
1749 1750 <title>Jitsi Meet</title> 1751<meta property="og:title" content="Jitsi Meet"/> 1752<meta property="og:image" content="images/jitsilogo.png?v=1"/> 1753<meta property="og:description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/> 1754<meta description="Join a WebRTC video conference powered by the Jitsi Videobridge"/> 1755<meta itemprop="name" content="Jitsi Meet"/> 1756<meta itemprop="description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/> 1757<meta itemprop="image" content="images/jitsilogo.png?v=1"/> 1758<link rel="icon" type="image/png" href="images/favicon.ico?v=1"/> 1759 1760 1761 <template id = "welcome-page-additional-content-template"></template> 1762 1763 <template id = "welcome-page-additional-card-template"></template> 1764 1765 <template id="settings-toolbar-additional-content-template"></template> 1766 1767 </head> 1768 <body> 1769 <noscript aria-hidden="true"> 1770 <div>JavaScript is disabled. </br>For this site to work you have to enable JavaScript.</div> 1771 </noscript> 1772 1773 <div id="react" role="main"></div> 1774 </body> 1775</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.