@Stephen4171127: 最近发现个开源工具Claude-real-video,直接戳中了现在LLM视频分析的死结。 之前全行业都在死卷「把视频能力原生炼进大模型」,相当于每家都要从头造一台带屏幕的手机——要么等大厂挤牙膏更功能,要么自己烧钱炼小模型,普通开发者根…
摘要
介绍开源工具claude-real-video,它通过场景变化检测和音频转录,让任何LLM都能在本地分析视频,解决了固定帧采样和云上传的痛点。
查看缓存全文
缓存时间: 2026/07/03 18:40
最近发现个开源工具Claude-real-video,直接戳中了现在LLM视频分析的死结。
之前全行业都在死卷「把视频能力原生炼进大模型」,相当于每家都要从头造一台带屏幕的手机——要么等大厂挤牙膏更功能,要么自己烧钱炼小模型,普通开发者根本玩不起。
这个倒好,直接做了个通用外接模块:不管你用的是啥LLM,插上去就能直接解析视频内容,相当于给只能听声的功能机直接插了块显示屏。
并不是简单得隔几秒截帧!
更难得的是这项目的社区讨论全是干货,不是那种刷Star的空壳:有人聊真实落地的局限,有人甩替代方案,有人直接晒落地场景,做视频智能体的开发者真的可以直接拉下来试。
HUANGCHIHHUNGLeo/claude-real-video
Source: https://github.com/HUANGCHIHHUNGLeo/claude-real-video
claude-real-video
Let Claude — or any LLM — actually watch a video.
Most AI tools don’t really see a video. Paste a YouTube link into ChatGPT and it reads the transcript, not the picture. Claude won’t take a video file at all. Even Gemini, which can read video natively, has to send it up to Google and samples frames at a fixed interval (1 fps by default), so fast cuts slip past.
claude-real-video does it differently, and locally: point it at a URL or a
file, and it pulls the frames that actually matter (every scene change, not a
fixed quota), throws away the near-duplicates, transcribes the audio, and hands
you a clean folder any LLM can read — on your own machine, nothing uploaded.
crv "https://www.youtube.com/watch?v=..."
# → crv-out/frames/*.jpg + crv-out/transcript.txt + crv-out/MANIFEST.txt
Then drop the frames + MANIFEST.txt into Claude / ChatGPT / Gemini and ask away.
Why not just sample frames?
Most “let an LLM watch a video” scripts (and Gemini’s own pipeline) grab frames
at a fixed interval — e.g. one per second. That over-samples a static
screencast and under-samples a fast-cut reel. claude-real-video is smarter:
| fixed-interval sampling | claude-real-video | |
|---|---|---|
| Frame selection | every N seconds | scene-change detection + density floor |
| Repeated shots (A-B-A cuts) | sent again every time | sliding-window dedup sends each shot once |
| Static slide (10 min) | ~600 near-identical frames | collapses to 1 (dedup) |
| Fast-cut reel | misses frames between samples | catches each visual change |
| Audio | often ignored | Whisper transcript w/ language detect |
| Where the video goes | often uploaded to a cloud | stays on your machine |
| Input | usually local file only | URL (yt-dlp) or local file |
You feed the model fewer, more meaningful frames — cheaper context, better understanding.
Install
pip install claude-real-video # core (frames + dedup)
pip install "claude-real-video[whisper]" # + audio transcription
System requirement: ffmpeg
ffmpeg / ffprobe are used for frame extraction and audio, and aren’t
pip-installable. Install them once:
| OS | command |
|---|---|
| macOS | brew install ffmpeg |
| Linux | sudo apt install ffmpeg (or your distro’s package manager) |
| Windows | winget install Gyan.FFmpeg — or choco install ffmpeg — or download a build and add its bin\ folder to your PATH |
Verify it’s on your PATH:
ffmpeg -version
Transcription uses the whisper CLI (installed by the [whisper] extra, or
pip install openai-whisper). Whisper also relies on ffmpeg.
Works on macOS, Windows, and Linux — Python 3.10+.
Usage
# A YouTube / Instagram / TikTok / ... link
crv "https://www.instagram.com/reel/XXXX/"
# A local file, English transcript, output to ./out
crv lecture.mp4 -o out --lang en
# Frames only, no transcription
crv clip.mp4 --no-transcribe
# A login-gated video (your own / authorised use): pass a Netscape cookie file
crv "https://..." --cookies cookies.txt
python -m claude_real_video ... works as an alias for crv too.
Options
| flag | default | meaning |
|---|---|---|
-o, --out | crv-out | output directory |
--scene | 0.30 | scene-change sensitivity (lower = more frames) |
--fps-floor | 1.0 | at least one frame every N seconds |
--max-frames | 150 | hard cap on total frames |
--lang | auto | Whisper language (en, zh, auto, …) |
--dedup-threshold | 8 | % of pixels that must change for a frame to count as new; higher = fewer frames |
--dedup-window | 4 | compare against the last N kept frames — a shot the model already saw doesn’t come back after a cutaway (1 = consecutive-only) |
--report | off | keep dropped frames in ./dropped + write report.html visualising every keep/drop decision |
--no-transcribe | off | skip audio |
--keep-audio | off | also save the full soundtrack (audio.m4a) so audio models can hear it |
--cookies | – | Netscape cookie file for login-gated sources |
Use it from Python
from claude_real_video import process
r = process("https://youtu.be/...", "out", lang="en")
print(r.frame_count, r.transcript_path)
How it works
- Fetch —
yt-dlpfor URLs (optional cookies), or copy a local file. - Extract — one chronological
ffmpeg selectpass grabs every scene change plus a density floor (at least one frame every--fps-floorseconds), so fast cuts and slow screencasts are both covered. - Dedup — real pixel difference (downscaled RGB, not a perceptual hash — hashes
go blind on flat colours and equal-luma hue changes) against a sliding window
of the last
--dedup-windowkept frames, so an A-B-A cutaway doesn’t re-send a shot the model has already seen.--reportwritesreport.htmlshowing every keep/drop decision with its diff %, for tuning. - Text — if the video already has subtitles (a sidecar
.srt/.vttnext to a local file, or an embedded subtitle track), those are used as the transcript — faster and more accurate than re-transcribing. Only when there are no subtitles does it fall back to Whisper on the audio (skipped cleanly if there’s no audio). - Audio (optional,
--keep-audio) — save the full original soundtrack (audio.m4a: music + speech + effects, copied losslessly when possible). The transcript only has the words; the audio file lets a model that can listen (Gemini, GPT-4o, …) actually hear the music and tone. - Manifest —
MANIFEST.txtsummarises everything for the model.
So the model can see (key frames), read (transcript) and — with --keep-audio —
hear (full soundtrack) the video. The transcript is plain text any model can read;
the tool doesn’t burn subtitles into the video — burning is a presentation choice,
not something needed to make a video AI-readable.
Notes
- Only download content you have the right to. The
--cookiesoption is for your own, authorised access — don’t ship credentials in a repo. - Re-running overwrites the output directory.
License
MIT
相似文章
Claude-real-video - 任何大语言模型都能观看视频
claude-real-video 是一个Python工具,通过场景检测提取关键帧,并在本地生成视频音频转录文本,使任何大语言模型都能在不经云端上传的情况下分析视频内容。
@0xluffy_eth: 有人为Claude Code开发了免费视频编辑工具...太疯狂了。 只需把原始素材和资源放入文件夹。 就这样。 它会处理一切: - 剪辑片段 - 移除冗余词 - 添加字幕 - 应用色彩分级和滤镜 - 处理动画 - 渲染最终视频 无时间线。…
A free, open-source video editing tool built for Claude Code that fully automates editing from raw footage—clipping, filler word removal, subtitles, color grading, animation, and final rendering—all without a timeline or manual edits.
@Easycompany333: 整理了 6 个可以直接试的视频类 Claude Skills: 1. HyperFrames 一句话生成动效视频,文章、推文、产品介绍都能变成 MP4。 适合产品宣发、教程开场、社交短视频。 https://github.com/heyg…
整理了6个可直接使用的视频类Claude Skills,涵盖自动生成动效视频、AI辅助粗剪、React组件渲染视频、多媒体生成工具箱、中文剪辑Agent和视频提示词编写等开源工具。
@369Serena: 如何让 Codex 拥有复刻拆解抖音爆款视频的能力?? Github 上有个近 3K start 的 Skills,叫 claude-video, 可以让 Claude / Codex 这类 Agent 真的“看懂”视频。 如果你是内容创…
介绍 GitHub 上的 claude-video 工具,能让 Claude/Codex 等 AI Agent 分析视频内容,适用于拆解爆款视频、分析广告素材、诊断 bug 等多种场景。
@hank_aibtc: 首个开源agentic视频生产系统,让Claude/Cursor 3分钟就给我做出一部60秒皮克斯级动画短片,只花了1.33美元! OpenMontage 直接把你的AI编程助手(Claude Code、Cursor、Copilot等)变…
OpenMontage是一个开源agentic视频生产系统,能将AI编程助手(如Claude Code、Cursor)变成完整视频制作工作室,只需一句话描述即可自动完成研究、脚本、素材生成、剪辑、配音、字幕和渲染,成本极低(皮克斯级动画仅需1.33美元)。