← leoaido.com GitHub ★ 1.2k+
free · open source · nothing uploaded

Video to text for LLMs — 100% local AI video analysis

Turn any video into a package an LLM can read — transcript, keyframes, manifest — without the video ever leaving your machine.

Why "video to text" needs more than a transcript

Most video-to-text tools give you a transcript and stop. That carries the words — but a product demo, a tutorial, or a fast-cut reel communicates visually. An LLM reading only the transcript is analyzing a radio show.

And most tools that go further do it in someone's cloud: you upload your footage — client work, unreleased products, internal recordings — to a third-party server just to get frames back.

The alternative: a local pipeline that produces both the text and the visuals, as plain files, on your own hardware.

The local pipeline

claude-real-video (crv) is a free, MIT-licensed command-line tool (1.2k+ GitHub stars). One command produces everything an LLM needs:

# install (Python 3.10+; macOS/Windows/Linux)
brew install ffmpeg
pip install "claude-real-video[whisper]"

crv lecture.mp4 -o out --lang en
→ out/frames/*.jpg        # scene-change keyframes, deduplicated
→ out/transcript.txt      # plain-text transcript (any LLM reads it)
→ out/transcript.json     # timestamped segments for your own tools
→ out/MANIFEST.txt        # tells the model how to read the package

What "local" actually means here

stepwhere it happens
Download / read the videoyour machine (yt-dlp for URLs, or a local file)
Frame extraction + dedupyour machine (ffmpeg)
Transcriptionyour machine (Whisper)
Analysis by the LLMyour choice — paste into a cloud LLM, or feed a self-hosted model and nothing leaves your machine

The source video never gets uploaded. If you later paste frames or transcript into ChatGPT, Claude, or Gemini, only that pasted content goes to that provider — with a self-hosted open-source vision model, the whole loop stays on your hardware.

Feeding the output to any model

The output is deliberately boring: JPEG images and plain text. That's what makes it universal.

Tip: --grid tiles consecutive keyframes into 3x3 contact sheets — the model reads an ordered sequence, and you attach 9x fewer images.

When text + frames still isn't enough

Keyframes and transcript tell a model what is on screen and what was said. They can't carry how the camera moves, how fast the edit cuts, or how the speaker's voice shifts. For that, crv Pro ($19 one-time) adds a motion pass — camera-move classification, editing rhythm, action-burst frame sequences, and a timestamped perception timeline — computed locally like everything else, written into the same manifest as plain text.

FAQ

How do I convert a video to text for an LLM?

One command: crv "url-or-file". You get a transcript, timestamped JSON, deduplicated keyframes and a manifest — all local.

Can I do AI video analysis without uploading the video?

Yes — that's the point. Processing is entirely on your machine; you choose what (if anything) to share with a cloud model.

What formats and sources work?

Local files, plus URLs from YouTube, Instagram, TikTok and other yt-dlp-supported sites. macOS, Windows and Linux.

Is it really free?

The core tool is MIT-licensed and free. The optional Pro motion/emotion analysis is a $19 one-time add-on.

Related guides

Your footage stays yours.

Free, open source, local-first.

Get it on GitHub See crv Pro
Built by Leo Huang · claude-real-video is MIT-licensed open source · Pro version: crv Pro