Gate Video Stream
Use this service when an app needs historical HLS playlists or on-demand Entrance Observer live-stream control. web-app should talk only to graphql-router and gate-video-stream; it must not access Jetson private URLs.
gate-video-stream now owns:
- stored entrance video upload and HLS playback
- server-side landing board heatmap generation from Entrance Observer trajectories
- GraphQL live session lifecycle for
startEntranceLiveStream,keepEntranceLiveStreamAlive,stopEntranceLiveStream, andentranceLiveStreamSession - device-facing polling/status/event endpoints for
entrance-observer - service-owned relay/playback endpoint issuance placeholders for the live MVP
- optional handoff from live sessions back into the stored clip flow via the existing
uploadGateVideopath
For REST consumers such as entrance-observer:
Contract notes for the current live-control MVP:
- Browser clients start, keep alive, inspect, and stop live sessions through GraphQL, not REST.
entrance-observerreports device heartbeat/status withPOST /api/entrance-live/device/status.entrance-observerpollsPOST /api/entrance-live/device/pollfor pendingSTART_STREAMandSTOP_STREAMcommands.- The poll request doubles as a heartbeat update because it carries the latest
cameraStatus,publisherState, and optional diagnostics payload. - Devices acknowledge command handling through
POST /api/entrance-live/device/command-ack. - Devices report lifecycle transitions such as
DEVICE_ONLINE,STREAM_STARTING,STREAM_ACTIVE,STREAM_FAILED, andSTREAM_STOPPEDthroughPOST /api/entrance-live/device/event. entrance-observeruploads tracked bee trajectories withPOST /api/entrance-heatmaps/trajectories;gate-video-streamaggregates them into daily heatmap images and stores them beside video assets.- Browser clients list stored heatmaps through the
entranceHeatmaps(boxIds, date, limit)GraphQL query viagraphql-router. DEVICE_ONLINErefreshes device presence and status payload but does not, by itself, move a session intoSTARTINGorACTIVE.
For browser clients, use GraphQL through graphql-router, not direct device URLs.