jeffsi-meet-docker/config/web/custom-config.js

100 lines
2.6 KiB
JavaScript

// 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"];