
场景感知关键帧提取+音频转写,不是固定采样,快剪不漏、静态不重复,本地处理,支持YouTube/Instagram/TikTok链接和本地文件
claude-real-video — 让 LLM 真正"看"视频
让 Claude 或任何 LLM 实际观看视频。从 URL 或本地文件中提取场景感知、去重后的关键帧 + 音频转写,处理全程在本地完成。1.3k Stars,MIT 开源。
解决什么问题?
- ChatGPT 遇到 YouTube 链接只读字幕不看画面
- Claude 不接受视频文件
- Gemini 虽然能读视频,但固定 1fps 采样,快剪画面会漏掉
- 其他方案大多把视频上传到云端处理
核心思路
不同于固定间隔采样(每秒1帧),claude-real-video 用场景变化检测 + 去重:
| 固定间隔采样 | claude-real-video | |
|---|---|---|
| 选帧 | 每N秒一张 | 场景变化检测 + 密度保底 |
| 重复镜头(A-B-A) | 每次重复发送 | 滑动窗口去重,只发一次 |
| 静态PPT(10分钟) | ~600张几乎相同的帧 | 压缩为1张 |
| 快剪视频 | 漏掉采样间的帧 | 每个视觉变化都捕获 |
| 音频 | 经常忽略 | Whisper 转写 + 语言检测 |
| 处理位置 | 通常在云端 | 本机处理,你决定什么发给 LLM |
安装
pip install claude-real-video # 核心(帧提取+去重)
pip install "claude-real-video[whisper]" # + 音频转写
系统依赖:ffmpeg(brew install ffmpeg / sudo apt install ffmpeg)
Python 3.10+,支持 macOS / Windows / Linux。
使用
# YouTube / Instagram / TikTok 链接
crv "https://www.youtube.com/watch?v=..."
# 本地文件,指定语言
crv lecture.mp4 -o out --lang zh
# 只提取帧,不转写音频
crv clip.mp4 --no-transcribe
# 需要登录才能看的视频(传入 cookie)
crv "https://..." --cookies cookies.txt
# 带目的分析 + 保存到笔记目录
crv "https://youtu.be/..." --why "找出定价策略" --kb ~/notes
输出:crv-out/frames/*.jpg + crv-out/transcript.txt + crv-out/MANIFEST.txt
主要参数
| 参数 | 默认值 | 说明 |
|---|---|---|
--scene | 0.30 | 场景变化灵敏度(越低=帧越多) |
--fps-floor | 1.0 | 至少每N秒一帧 |
--max-frames | 150 | 帧数硬上限 |
--dedup-threshold | 8 | 像素差异百分比阈值 |
--dedup-window | 4 | 滑动窗口大小(防A-B-A重复) |
--why | — | 告诉模型你为什么要看 |
--kb | — | 分析结果保存为 Markdown 到指定目录 |
--grid | — | 输出9宫格联系方式图 |
--adaptive | — | 自适应场景检测(动画/慢变内容) |
Claude Code 集成
pip install claude-real-video
mkdir -p ~/.claude/skills && cp -r skills/claude-real-video ~/.claude/skills/
安装后直接在 Claude Code 中粘贴视频链接即可。
工作原理
- 获取:yt-dlp 下载 URL,或复制本地文件
- 提取:ffmpeg 单遍扫描,场景变化 + 密度保底
- 去重:像素级差异对比(非感知哈希),滑动窗口防重复镜头
- 文本:优先用已有字幕(.srt/.vtt),无字幕则 Whisper 转写
- 清单:生成 MANIFEST.txt 供模型理解
GitHub: https://github.com/HUANGCHIHHUNGLeo/claude-real-video
暂无评论
