Skip to content
RoadGuard AI
Live Demo

Live demo

Run it on your own clip

Upload an MP4 and the system returns event segments and a risk curve, in the same interface the sample clips use. The model service is not connected yet, so this page runs a deterministic placeholder analyser — everything except the numbers is real.

Mock modePOST /analyze

Upload a traffic video

Drop an MP4 here, or choose a file. The clip is analysed and the result opens in the same interface the sample clips use.

Format
MP4
Max size
100 MB
Max length
02:00

These limits exist to keep the public demo responsive. Official offline evaluation runs without them.

No clip to hand? Open the sample results — same interface, four clips already analysed.

What happens to your video

Worth stating plainly, since the page asks for a file.

  • The clip is read in your browser first, to check its format, size and length before anything is sent anywhere.
  • In mock mode nothing is uploaded at all — the analysis runs locally against a placeholder.
  • No account, no sign-in, no tracking. Refreshing the page discards everything.
  • Demo limits — 100 MB and 2 minutes — exist to keep this page responsive, and do not apply to offline evaluation.

API contract

The frontend supports both transports. Switching is configuration, not a code change.

Synchronous

POST /analyze        (multipart/form-data, field: video)

{
  "videoId": "abc123",
  "duration": 63.4,
  "fps": 25,
  "events": [
    { "start": 12.4, "end": 18.9, "label": "jaywalking" }
  ],
  "risk": [ { "time": 0.0, "score": 0.01 } ]
}

Async jobs

POST /jobs           -> { "jobId": "abc123" }
GET  /jobs/abc123    -> { "status": "processing",
                          "stage": "tracking",
                          "progress": 45 }
                     -> { "status": "completed", "result": { ... } }
                     -> { "status": "failed", "error": "..." }

Set NEXT_PUBLIC_API_BASE_URL, NEXT_PUBLIC_USE_MOCK_API=false and optionally NEXT_PUBLIC_API_MODE=jobs.