From fb104ed8bbb68c2caf477a43ac7af85833e1e886 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Wed, 11 Mar 2026 19:18:06 +0000 Subject: [PATCH] Disable deep linking to fix mobile browser video chat Mobile users were being redirected to a "download the app" page instead of loading the web conference. Setting disableDeepLinking=true keeps mobile browsers in the web UI. Also added mobile codec preference order. Co-Authored-By: Claude Opus 4.6 --- config/web/custom-config.js | 99 +++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 config/web/custom-config.js diff --git a/config/web/custom-config.js b/config/web/custom-config.js new file mode 100644 index 0000000..54e2065 --- /dev/null +++ b/config/web/custom-config.js @@ -0,0 +1,99 @@ +// Jeffsi Meet Custom Config - High Quality Video Settings +// This file is appended to config.js to override default settings + +// Higher bitrate limits for better video quality +config.videoQuality.vp9 = { + maxBitratesVideo: { + low: 200000, + standard: 700000, + high: 2500000 + }, + scalabilityModeEnabled: true +}; + +config.videoQuality.vp8 = { + maxBitratesVideo: { + low: 200000, + standard: 500000, + high: 2000000 + } +}; + +config.videoQuality.h264 = { + maxBitratesVideo: { + low: 200000, + standard: 500000, + high: 2000000 + } +}; + +// Quality level thresholds +config.videoQuality.minHeightForQualityLvl = { + 180: 'low', + 360: 'standard', + 720: 'high' +}; + +// Higher resolution constraints +config.constraints = { + video: { + height: { ideal: 720, max: 1080, min: 180 }, + width: { ideal: 1280, max: 1920, min: 320 }, + frameRate: { ideal: 30, max: 30, min: 15 } + } +}; + +// STUN + TURN servers for NAT traversal (critical for mobile) +config.p2p.stunServers = [ + { urls: 'stun:159.195.32.209:3478' }, + { urls: 'stun:stun.l.google.com:19302' }, + { urls: 'stun:stun1.l.google.com:19302' } +]; + +// P2P ICE transport policy - use 'all' to allow both relay and direct +config.p2p.iceTransportPolicy = 'all'; + +// TURN servers for P2P (relay fallback for symmetric NAT / mobile) +config.p2p.iceServers = [ + { + urls: ['turn:159.195.32.209:3478?transport=udp', 'turn:159.195.32.209:3478?transport=tcp'], + username: 'turnuser', + credential: 'jeffsi-turn-secret-2025' + } +]; + +// Increase last N (max participants with video showing) +config.channelLastN = 25; + +// Enable layer suspension for bandwidth adaptation +config.enableLayerSuspension = true; + +// Start in tile/gallery view by default (show all participants) +config.startInTileView = true; + +// Disable auto-pinning of screen shares and dominant speaker +config.disableSelfView = false; +config.disableSelfViewSettings = false; + +// Enable "End meeting for all" button +config.disableRemoteMute = false; +config.remoteVideoMenu = { + disableKick: false, + disableGrantModerator: false +}; + +// Security UI options +config.securityUi = { + disableLobbyPassword: false, + hideLobbyButton: false +}; + +// Enable close page after meeting ends +config.enableClosePage = true; + +// Disable deep linking - keep mobile users in the web browser +// instead of redirecting to the native Jitsi Meet app +config.disableDeepLinking = true; + +// Mobile-friendly: prefer VP8 (better hardware decode support on mobile) +config.videoQuality.mobileCodecPreferenceOrder = ["VP8", "H264", "VP9", "AV1"];