About the Project

one thing that stuck with me: in a recent murder investigation in Panchkula,India , police reportedly went through footage from 400+ CCTV cameras over 120 hours to piece together what happened.

this made me think: why are we still searching video like this? if you have 100 hours of footage, finding one moment shouldn't mean watching 100 hours of footage.

so i built Recall. you give it your local videos and ask what you're looking for.

→ “when does this person enter?” → “find the car leaving” → “where does this object appear?”

Recall finds the relevant video and timestamp, then lets you open that exact part. segments, timing, tracks, events and frames are all there too. and everything runs locally.

Inspiration

CCTV cameras record everything, but finding one specific moment in hours of footage is still painfully manual. ReCall was built around the idea of turning CCTV footage into searchable memory .. allowing users to ask what happened in a video instead of manually scrubbing through recordings.

What it does

ReCall transforms locally stored CCTV footage into a searchable timeline of people, objects, scenes, and events. Users can search using natural language, such as “When did someone enter the room?” or “Find when a person left a package near the door,” and retrieve the relevant moments from hours of footage.

How we built it

ReCall uses a multi-stage local video-processing pipeline combining FFmpeg, YOLO, object tracking, VLM-based scene understanding, embeddings, and semantic search. Detection identifies objects and people, tracking maintains entity continuity across time, and Gemini/VLMs describe meaningful scenes. These descriptions are converted into embeddings and indexed for natural-language retrieval.

Current Stats

Our first major optimization, single-process streaming FFmpeg, reduced total processing time from 59.699s to 23.682s — a 60.3% improvement. Frame extraction improved by 72.3%, YOLO by 59.4%, embeddings by 64.7%, and FFprobe by 68.7%.

The benchmark video was 960 seconds of 4K (3840×2160), H.264, 15 FPS, and ~4.99 GB. The optimized pipeline processed it in 123.682 seconds, establishing this as the current baseline.

Challenges we ran into

The biggest challenge is processing hours of CCTV footage efficiently on local hardware. Running expensive models across every frame creates significant processing time and resource usage. We also encountered repeated FFmpeg initialization, unnecessary frame I/O, long-running process failures, redundant VLM calls, and maintaining entity continuity across video segments.

Accomplishments that we're proud of

We built a complete local pipeline that converts raw CCTV footage into searchable semantic events rather than simply providing a video player with search. We have also established a clear separation of responsibilities: YOLO handles detection, tracking handles entity continuity, and Gemini/VLM handles scene understanding. Our first processing optimization has already reduced total pipeline time by over 60%.

What we learned

We learned that making video searchable isn't just about choosing a powerful vision model. The processing architecture matters just as much. Expensive computation needs to be minimized, tracking should handle identity continuity, and VLMs should focus on semantic understanding rather than identity tracking.

What's next for ReCall

Once the optimization phase is complete, ReCall will be a fully optimized local video-memory system capable of efficiently processing large amounts of CCTV footage and making it searchable through natural language. The next step will be to build on this foundation with more advanced capabilities such as richer contextual search, cross-video and long-term memory, improved event understanding, and a more powerful interface for exploring everything ReCall has learned from the footage.

Built With

Share this project:

Updates

Submission history