Fix: got data from backend
This commit is contained in:
parent
42a8325faf
commit
086ba0e4d3
4 changed files with 107 additions and 12 deletions
|
@ -134,8 +134,13 @@ class StreamManager:
|
|||
camera_id: str,
|
||||
rtsp_url: Optional[str] = None,
|
||||
snapshot_url: Optional[str] = None,
|
||||
snapshot_interval: Optional[int] = None) -> StreamInfo:
|
||||
"""Create StreamInfo object based on stream type."""
|
||||
snapshot_interval: Optional[int] = None,
|
||||
subscription_metadata: Optional[Dict[str, Any]] = None) -> StreamInfo:
|
||||
"""Create StreamInfo object based on stream type with subscription metadata."""
|
||||
|
||||
# Extract subscription metadata if provided
|
||||
metadata = subscription_metadata or {}
|
||||
|
||||
if snapshot_url and snapshot_interval:
|
||||
return StreamInfo(
|
||||
camera_id=camera_id,
|
||||
|
@ -143,7 +148,15 @@ class StreamManager:
|
|||
stream_type="snapshot",
|
||||
snapshot_interval=snapshot_interval,
|
||||
buffer=queue.Queue(maxsize=SHARED_STREAM_BUFFER_SIZE),
|
||||
stop_event=threading.Event()
|
||||
stop_event=threading.Event(),
|
||||
# Add subscription metadata
|
||||
subscriptionIdentifier=metadata.get("subscriptionIdentifier"),
|
||||
modelId=metadata.get("modelId"),
|
||||
modelName=metadata.get("modelName"),
|
||||
cropX1=metadata.get("cropX1"),
|
||||
cropY1=metadata.get("cropY1"),
|
||||
cropX2=metadata.get("cropX2"),
|
||||
cropY2=metadata.get("cropY2")
|
||||
)
|
||||
elif rtsp_url:
|
||||
return StreamInfo(
|
||||
|
@ -151,7 +164,15 @@ class StreamManager:
|
|||
stream_url=rtsp_url,
|
||||
stream_type="rtsp",
|
||||
buffer=queue.Queue(maxsize=SHARED_STREAM_BUFFER_SIZE),
|
||||
stop_event=threading.Event()
|
||||
stop_event=threading.Event(),
|
||||
# Add subscription metadata
|
||||
subscriptionIdentifier=metadata.get("subscriptionIdentifier"),
|
||||
modelId=metadata.get("modelId"),
|
||||
modelName=metadata.get("modelName"),
|
||||
cropX1=metadata.get("cropX1"),
|
||||
cropY1=metadata.get("cropY1"),
|
||||
cropX2=metadata.get("cropX2"),
|
||||
cropY2=metadata.get("cropY2")
|
||||
)
|
||||
else:
|
||||
raise ValueError("Must provide either RTSP URL or snapshot URL with interval")
|
||||
|
@ -162,7 +183,8 @@ class StreamManager:
|
|||
subscriber_id: str,
|
||||
rtsp_url: Optional[str] = None,
|
||||
snapshot_url: Optional[str] = None,
|
||||
snapshot_interval: Optional[int] = None) -> bool:
|
||||
snapshot_interval: Optional[int] = None,
|
||||
subscription_metadata: Optional[Dict[str, Any]] = None) -> bool:
|
||||
"""
|
||||
Create a stream subscription.
|
||||
|
||||
|
@ -194,7 +216,7 @@ class StreamManager:
|
|||
# Create or get existing stream
|
||||
if camera_id not in self._streams:
|
||||
stream_info = self._create_stream_info(
|
||||
camera_id, rtsp_url, snapshot_url, snapshot_interval
|
||||
camera_id, rtsp_url, snapshot_url, snapshot_interval, subscription_metadata
|
||||
)
|
||||
self._streams[camera_id] = stream_info
|
||||
|
||||
|
@ -642,6 +664,19 @@ class StreamManager:
|
|||
# Create a subscriber_id (for WebSocket compatibility, use the subscription_id)
|
||||
subscriber_id = f"websocket_{int(time.time() * 1000)}"
|
||||
|
||||
# Extract subscription metadata from payload
|
||||
subscription_metadata = {
|
||||
"subscriptionIdentifier": payload.get("subscriptionIdentifier"),
|
||||
"modelId": payload.get("modelId"),
|
||||
"modelName": payload.get("modelName"),
|
||||
"cropX1": payload.get("cropX1"),
|
||||
"cropY1": payload.get("cropY1"),
|
||||
"cropX2": payload.get("cropX2"),
|
||||
"cropY2": payload.get("cropY2")
|
||||
}
|
||||
|
||||
logger.info(f"Extracted subscription metadata for camera {camera_id}: {subscription_metadata}")
|
||||
|
||||
# Create subscription based on available URL type
|
||||
if rtsp_url and rtsp_url.strip():
|
||||
logger.info(f"Creating RTSP stream for camera {camera_id}: {rtsp_url}")
|
||||
|
@ -649,7 +684,8 @@ class StreamManager:
|
|||
subscription_id=subscription_id,
|
||||
camera_id=camera_id,
|
||||
subscriber_id=subscriber_id,
|
||||
rtsp_url=rtsp_url.strip()
|
||||
rtsp_url=rtsp_url.strip(),
|
||||
subscription_metadata=subscription_metadata
|
||||
)
|
||||
elif snapshot_url and snapshot_url.strip():
|
||||
logger.info(f"Creating snapshot stream for camera {camera_id}: {snapshot_url}")
|
||||
|
@ -658,7 +694,8 @@ class StreamManager:
|
|||
camera_id=camera_id,
|
||||
subscriber_id=subscriber_id,
|
||||
snapshot_url=snapshot_url.strip(),
|
||||
snapshot_interval=snapshot_interval
|
||||
snapshot_interval=snapshot_interval,
|
||||
subscription_metadata=subscription_metadata
|
||||
)
|
||||
else:
|
||||
logger.error(f"No valid stream URL provided for camera {camera_id}. "
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue