@@ -79,6 +79,10 @@ def __init__(self) -> None:
7979 self ._inference_task : asyncio .Task [None ] | None = None
8080 self ._intrinsics_logged : bool = False
8181
82+ # Dynamic streamer configuration
83+ self ._streamer_url : str | None = None
84+ self ._streamer_url_event = asyncio .Event ()
85+
8286 self .max_consecutive_errors = 5
8387 # adaptive downscaling parameters
8488 self .target_scale_init = config .TARGET_SCALE_INIT
@@ -116,6 +120,21 @@ async def connect(self, websocket: WebSocket) -> None:
116120 if len (self .active_connections ) == 1 :
117121 await self ._start_processing ()
118122
123+ async def set_streamer_url (self , streamer_url : str ) -> None :
124+ """Set the streamer URL and trigger processing startup if needed."""
125+ # Check if URL is changing
126+ url_changed = self ._streamer_url and self ._streamer_url != streamer_url
127+
128+ self ._streamer_url = streamer_url
129+ logger .info (f"Streamer URL configured: { streamer_url } " )
130+ self ._streamer_url_event .set ()
131+
132+ # If URL changed and we have active connections, restart processing
133+ if url_changed and self .active_connections :
134+ logger .info ("Streamer URL changed, restarting processing..." )
135+ await self ._stop_processing ()
136+ await self ._start_processing ()
137+
119138 async def disconnect (self , websocket : WebSocket ) -> None :
120139 """Handle WebSocket disconnection."""
121140 self .active_connections .discard (websocket )
@@ -141,9 +160,16 @@ async def _start_processing(self) -> None:
141160 return # Already running
142161
143162 try :
163+ # Wait for streamer URL to be configured if not already set
164+ if not self ._streamer_url :
165+ logger .info ("Waiting for streamer URL configuration..." )
166+ await asyncio .wait_for (self ._streamer_url_event .wait (), timeout = 30.0 )
167+
168+ if not self ._streamer_url :
169+ raise Exception ("Streamer URL was not configured" )
170+
144171 # Connect to webcam service
145- upstream_url = config .STREAMER_OFFER_URL
146- self ._webcam_session = WebcamSession (upstream_url )
172+ self ._webcam_session = WebcamSession (self ._streamer_url )
147173 source_track = await self ._webcam_session .connect ()
148174
149175 # Start processing task
0 commit comments