gstreamer.rs — Video Streaming
Receives H.264 video from the rover over UDP, decodes it, and serves it as MJPEG over HTTP so the frontend can display it in
tags.
Pipeline per camera
udpsrc (UDP port) → rtpjitterbuffer → rtph264depay → avdec_h264 → videoconvert → jpegenc → appsink
Each decoded JPEG frame is placed into a shared FrameBuffer ( Arc>> ). A separate async HTTP server (using warp ) reads from that buffer and streams it as multipart/x-mixed-replace — the standard MJPEG format.
Port mapping
UDP input port HTTP output port Camera 4500 5000 Depth / front camera 4501 5001 Secondary camera 4502 5002 Arm camera
Feed health monitoring
A background task ( watch_feed_health ) polls each stream every 500ms. If no frame has been received within 2 seconds, the stream is considered stale. The backend emits a camera-feed-status Tauri event to the frontend with the payload:
{ "port": 5000, "stale": true }
The frontend listens for this event to show feed status indicators.
For development without rover hardware , run the fake_camera_gstreamer . For instructions see Common Operations .