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.
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.