From 0669f29a4ae24d1f0c0a6b410329e0b6099feda9 Mon Sep 17 00:00:00 2001 From: legop3 Date: Thu, 8 Oct 2026 00:33:12 -0400 Subject: [PATCH] add webrtc port config so i can test it right lol --- server/src/services/mediaMtxService/config.js | 7 ++++--- server/src/services/mediaMtxService/configuration.js | 12 +++++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/server/src/services/mediaMtxService/config.js b/server/src/services/mediaMtxService/config.js index 175206ab..b414fb47 100644 --- a/server/src/services/mediaMtxService/config.js +++ b/server/src/services/mediaMtxService/config.js @@ -20,6 +20,7 @@ function normalizeAdditionalHosts(rawHosts) { function buildMediaMtxConfig({ config, serverPort, snapshotWriterPath }) { const media = config?.media || {}; + const webrtcPort = media.webrtcPort ?? 8189; const configuredHosts = normalizeAdditionalHosts(media.additionalHosts); let publicHostname = ''; try { @@ -55,10 +56,10 @@ function buildMediaMtxConfig({ config, serverPort, snapshotWriterPath }) { webrtc: true, // WHEP and WHIP signaling is public only through the Node /video proxy. - // ICE transport on 8189 remains directly reachable by browsers. + // The configured ICE transport port remains directly reachable by browsers. webrtcAddress: '127.0.0.1:8889', - webrtcLocalUDPAddress: ':8189', - webrtcLocalTCPAddress: ':8189', + webrtcLocalUDPAddress: `:${webrtcPort}`, + webrtcLocalTCPAddress: `:${webrtcPort}`, webrtcAdditionalHosts: additionalHosts, webrtcICEServers2: [ { url: 'stun:stun.l.google.com:19302' }, diff --git a/server/src/services/mediaMtxService/configuration.js b/server/src/services/mediaMtxService/configuration.js index 0c2d384f..74ca93cd 100644 --- a/server/src/services/mediaMtxService/configuration.js +++ b/server/src/services/mediaMtxService/configuration.js @@ -1,18 +1,24 @@ // Media Transport Configuration -// Purpose: Defines additional MediaMTX ICE hosts not already derived from the server's public URL. +// Purpose: Defines the WebRTC media port and additional ICE hosts. // Scope: Contains configuration metadata only and never starts MediaMTX. -const { strictObject, stringArray } = require('../../configuration/schemaHelpers'); +const { strictObject, stringArray, integer } = require('../../configuration/schemaHelpers'); module.exports = { key: 'media', defaultValue: { + webrtcPort: 8189, additionalHosts: [], }, schema: strictObject({ + webrtcPort: integer({ + title: 'WebRTC port', + description: 'UDP and TCP port for live media. Forward the same external port to this server; HTTPS signaling continues through the web UI.', + minimum: 1, maximum: 65535, + }), additionalHosts: stringArray({ title: 'Additional ICE hosts', item: { description: 'Hostname or IP address MediaMTX advertises as a WebRTC ICE candidate.', examples: ['rover.example.com', 'media-server.local'], minLength: 1, maxLength: 255 }, array: { description: 'Extra public or LAN hostnames and addresses browsers may use in addition to the hostname derived from the top-level public URL.', uniqueItems: true }, }), - }, { title: 'Media', description: 'Adds optional WebRTC network candidates to the public hostname and local interfaces generated automatically for MediaMTX.', required: ['additionalHosts'] }), + }, { title: 'Media', description: 'Configures the WebRTC media port and additional network candidates.', required: ['webrtcPort', 'additionalHosts'] }), };