跳到正文
北京时间
原文
Hacker News 热门(buzzing.cc 中文翻译)· cortexosmain·· 2026-07-03精选AI 评分81

claude-real-video ─ 让任何大语言模型(LLM)都能观看视频

Claude-real-video - 任何大型语言模型(LLM)都能观看视频

AI 导读

claude-real-video 是一个开源工具,让大语言模型基于视频画面而非字幕进行理解。它通过场景变化检测提取关键帧、滑动窗口去重并转录音频,生成干净的本地文件夹供模型读取。支持 YouTube 链接或本地文件,依赖 ffmpeg 和 Whisper,通过 pip 安装。全部处理在本地完成,不上传云端。

推荐理由

这个工具把视频喂给 LLM 的过程从「固定采样 + 上传云」变成了「场景感知 + 本地去重」,大幅节省 token 且避免隐私泄露,用 Whisper 转录也更完整。是让任何 LLM 真正「看」视频的实用方案。

正文 · AI 翻译

60 秒真实演示——真实安装、真实运行、真实查看器。

让 Claude——或任何 LLM——真正观看一段视频。

pip install "claude-real-video[whisper]"
npx skills add HUANGCHIHHUNGLeo/claude-real-video   # one command, installs the skill into Claude Code, Cursor, Codex, Copilot, Gemini CLI & 50+ agent hosts

然后把视频链接粘贴到你的智能体里,向它提问。(仅用 CLI?crv "<url>" 只需 pip install 即可使用。)

命名: crv 是 claude-real-video(PyPI 包)的简称。付费附加组件 crv Pro 在 Capafy 上以商品名 "llm-real-video Pro" 出售。

同一段 58 秒的片段:固定 1 fps 采样 = 58 帧。crv 只保留真正有差异的 26 帧——并且 --grid 将它们打包成 3 张拼图。更少的 token,什么都没漏掉。

这个免费版本让你的 AI 看到视频。 crv Pro 则让它理解视频——它是如何拍摄的(剪辑节奏、镜头运动),以及一份带时间戳的时间线,呈现画面无法展示的内容:手势、表情、音高变化、情绪、声音事件。7 月 31 日前创始人一次性优惠价 $19(8 月 1 日起 $29)——在 Capafy 上获取或通过 Lemon Squeezy 用卡购买。

大多数 AI 工具其实并不能真正看懂视频。把 YouTube 链接粘贴进 ChatGPT,它读的是字幕文本,而不是画面。Claude 根本不接受视频文件。即便是能够原生读取视频的 Gemini,也必须把视频上传到 Google,并以固定间隔采样帧(默认 1 fps),因此快速剪辑的镜头会被漏掉。

claude-real-video 的做法不同,处理在本地运行:给它一个 URL 或文件,它会提取真正重要的帧(每一次场景切换,而非固定配额),丢弃近乎重复的帧,转录音频,然后交给你一个任何 LLM 都能读取的干净文件夹。所有处理都在你自己的机器上完成——发送到任何地方的内容,只有你之后选择粘贴进 LLM 的那些帧/文本你。

crv "https://www.youtube.com/watch?v=..."
# → crv-out/frames/*.jpg  +  frames.json (per-frame timestamps)  +  transcript.txt/.json  +  MANIFEST.txt

然后把这些帧 + MANIFEST.txt 丢进 Claude / ChatGPT / Gemini,随便问。

无需终端——运行 crv-web,会打开一个本地页面(繁体中文 / 简体中文 / 英文):粘贴 YouTube 或 Reels 链接或文件路径,点击 Analyze,打开结果查看器。视频分析和输出生成都在你的机器上运行——源视频永远不会被上传。(如果你随后把提取出的帧或转录文本粘贴到云端 LLM,那这些数据会发送给该服务商。)

想先亲眼看看模型会看到什么?加上 --viewer —— 它会写出一份本地的 viewer.html(视频 + 关键帧网格 + 转录文本),你可以双击打开。无需联网,无需额外安装。

变化缓慢的内容(动画教程、渐变变形、缓慢平移):加上 --adaptive —— 帧的挑选是相对于其滚动邻域进行的,而不是基于固定阈值,因此一段 2-3 秒的挤压拉伸即使从未让任何单帧出现峰值,也仍会被捕捉到。

文字密集的内容(讲座幻灯片、屏幕录制、口播讲解):加上 --text-anchors —— 会在字幕提示时间戳处强制插入额外帧,因此即使画面几乎不变,每一段语音也都能获得与之匹配的画面。需要配套的 .srt/.vtt 或内嵌字幕轨道 —— 烧录进像素里的字幕无法被检测到。每秒最多强制插入一帧;场景检测不受影响。

多说话人内容(访谈、播客、会议):加上 --speakers —— 每一行转录文本都会带上说话人标签([SPEAKER_00]、[SPEAKER_01]、……),这样模型就能跟上谁说了什么。会运行一个本地说话人分离模型(45 MB,下载一次,无需账号或 token)。用 pip install "claude-real-video[speakers]" 安装。

不做 LLM 相关工作?它也能当作一个通用视频关键帧提取器来用 —— 场景变化检测 + 去重,无需下载任何 ML 模型。

在使用 Claude Code——或任何编码智能体? 一条命令即可安装该技能(适用于 Claude Code、Cursor、Codex、Copilot、Gemini CLI 以及其他兼容 agentskills.io 的宿主):

pip install "claude-real-video[whisper]"
npx skills add HUANGCHIHHUNGLeo/claude-real-video

然后只需把视频链接粘贴到你的智能体里,就能向它提问。

手动安装(克隆 + 复制)

git clone https://github.com/HUANGCHIHHUNGLeo/claude-real-video.git
mkdir -p ~/.claude/skills && cp -r claude-real-video/skills/claude-real-video ~/.claude/skills/

0.3.0 新增功能——告诉它你为什么要看这个视频,并把它发现的内容保存下来:

crv "https://youtu.be/..." --why "find the pricing strategy" --kb ~/notes

--why 让分析聚焦于你关心的内容,而不是泛泛的摘要;--kb 会把结果作为带日期的笔记保存到你自己的笔记文件夹中,这样它就不会死在 crv-out 里。


为什么不直接采样帧呢?

大多数“让 LLM 看视频”的脚本(以及 Gemini 自己的流水线)都是按固定间隔抓取帧——比如每秒一帧。这对静态录屏来说采样过度,而对快切短片来说采样不足。claude-real-video 更聪明:

固定间隔采样 claude-real-video
帧选择 每 N 秒 场景切换检测 + 密度下限
重复镜头(A-B-A 剪辑) 每次都重新发送 滑动窗口去重让每个镜头只发送一次
静态幻灯片(10 分钟) 约 600 帧几乎完全相同 压缩为 1(去重)
快切混剪 漏掉采样间隔之间的帧 捕捉到每一次画面变化
音频 常常被忽略 带语言检测的 Whisper 转录
处理在哪里进行 常常在别人的云端 在你自己的机器上(之后由你决定与 LLM 分享哪些内容)
输入 通常仅限本地文件 URL(yt-dlp)或本地文件

你向模型输入更少、更有意义的帧——上下文更省,理解更好。


安装

pip install "claude-real-video[whisper]"   # recommended: frames + dedup + audio transcription
pip install claude-real-video              # core only (frames + dedup)

pip 附加组件从不会自行安装——没有[whisper]就没有语音转文字(自带字幕的视频仍能获得转录文本)。

系统要求:ffmpeg

ffmpeg / ffprobe用于帧提取和音频处理,无法通过 pip 安装。请一次性安装它们:

操作系统 命令
macOS brew install ffmpeg
Linux sudo apt install ffmpeg(或你所使用发行版的包管理器)
Windows winget install Gyan.FFmpeg — 或者 choco install ffmpeg — 或者 下载一个构建版本,并将其 bin\ 文件夹添加到你的 PATH

验证它已在你的 PATH 上:

ffmpeg -version

转录使用 whisper CLI(由 [whisper] 附加组件安装,或 pip install openai-whisper)。Whisper 还依赖 ffmpeg。

更快且不会产生模型幻觉的转录(推荐): 安装 [fast] 附加组件后,crv 会自动切换到 faster-whisper —— 相同的模型、相同的输出文件,速度快数倍,并由 Silero VAD(语音活动检测)把关:纯音乐或静音音频会给出诚实的"无语音"提示,而不是 whisper 那种经典的凭空编造字幕。无需学习任何新参数:

pip install 'claude-real-video[fast]'

如果两者都已安装,faster-whisper 优先;如果它出现故障,crv 会自行回退到 whisper CLI。

适用于 macOS、Windows 和 Linux —— Python 3.10+。


用法

# 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 ... 也可作为 crv 的别名使用。

选项

参数 默认 含义
-o, --out crv-out 输出目录
--overwrite 关闭 替换输出目录中已有的分析结果(若不使用此选项,非空的输出目录将被拒绝,以避免视频混合)
--scene 0.30 场景变化灵敏度(值越低 = 帧数越多)
--fps-floor 1.0 每 N 秒至少一帧
--max-frames 150 总帧数硬性上限
--adaptive 关闭 自适应场景检测:通过将每一帧与其滚动邻域进行比较,捕捉固定阈值会漏掉的缓慢变化(2-3 秒的挤压/拉伸、渐进平移)
--text-anchors 关闭 在字幕提示时间戳处强制插入额外帧(外挂 .srt/.vtt 或内嵌轨道)——适用于含义变化比画面变化更快的视频;每秒最多强制插入一帧
--speakers 关闭 通过本地说话人分离为每一行转录文本标注说话人([SPEAKER_00] …)——需要 pip install "claude-real-video[speakers]",一次性下载 45 MB 模型
--lang auto Whisper 语言(en、zh、auto……)
--whisper-model base 用于转录的 Whisper 模型(tiny/base/small/medium/large/turbo —— base 速度快;想要更精准的转录?--whisper-model turbo 只差一个参数:接近 large-v2 的准确率,速度约为其 8 倍,一次性下载 1.6GB,内存占用约 6GB)
--dedup-threshold 8 一帧要被算作新帧所需变化的像素百分比;越高 = 帧数越少(settled-local 检测器的门限也随之缩放)
--dedup-window 4 与最近保留的 N 帧进行比较 —— 模型已经看过的镜头在切走后不会再次出现(1 = 仅比较连续帧)
--report 关闭 将丢弃的帧保留在 ./dropped 中 + 写出 report.html,可视化每一次保留/丢弃的决策
--no-transcribe 关闭 跳过音频
--keep-audio 关闭 同时保存完整原声(audio.m4a),这样音频模型就能听到它
--viewer 关闭 同时写入viewer.html——在一个本地页面中浏览视频、关键帧和转录文本(双击打开)
--grid 关闭 同时将保留的帧拼接成 3x3 联系表(./grids)——连续帧并排放置有助于模型理解运动和进展
--why – 你观看的原因,例如 --why "find the pricing strategy"——写入 MANIFEST.txt,这样模型就会以该视角进行分析,而不是给出泛泛的总结
--kb – 同时把分析结果以带日期的 markdown 笔记保存到这个文件夹(你的 Obsidian vault、notes 目录……)——这样它就能加入你的知识库,而不是死在 crv-out 里
--cookies – 用于需要登录才能访问的来源的 Netscape cookie 文件
--cookies-from-browser – 直接从你自己的浏览器读取登录 cookie —— chrome、safari、firefox 或 edge(仅限你自己的账号)

--grid 的输出长什么样

一张联系表 = 九个连续的关键帧,按顺序排列,每个单元格上标注文件名——模型读取的是一个序列,而不是零散的单帧:

从 Python 中使用它

from claude_real_video import process

r = process("https://youtu.be/...", "out", lang="en")
print(r.frame_count, r.)

工作原理

  1. 抓取 —— 对 URL 使用 yt-dlp(可选 cookie),或者复制本地文件。
  2. 提取——一次按时间顺序的ffmpeg select遍历即可捕获每一个场景变化以及一个密度下限(至少每--fps-floor秒一帧),因此快速剪辑和缓慢的屏幕录制都能覆盖到。
  3. 去重——两个检测器,针对一个滑动窗口由最近--dedup-window保留的帧组成,因此一个 A-B-A 式的切回镜头不会重新发送模型已经看过的画面。一个全局通道衡量真实像素差异(降采样的 RGB,而非感知哈希——哈希在纯色和等亮度色相变化上会失灵);--dedup-threshold是其中必须发生变化的比例。一个局部稳定通道(v0.7.4)能捕捉全局通道看不到的东西:细笔画、字幕/文字卡片的切换,以及全局平均下来约 0% 的小幅 UI 更新。它在一个更精细的特征签名上,寻找一个与所有近期保留帧都强烈不同的区域(带有 1px 的位移容差,因此胶片颗粒和帧抖动不会触发)并且不再变化——是一个稳定的新状态,而非运动进行中——并带有冷却时间,因此每秒停顿一次的持续运动(飘动的旗帜、飘移的烟雾)无法反复触发。最后一帧即使仍在运动中也会被评估(因此视频的结束状态绝不会丢失),但它必须像其他任何帧一样通过两道对比度门槛。--report写道report.html展示每一个保留/丢弃决策及其差异百分比(已确定为本地保留的会被标注),以便进行调优。
  4. 文本 — 如果视频已经有字幕(本地文件旁边的 sidecar .srt/.vtt,或内嵌字幕轨道),则直接将其用作转录文本——比重新转录更快也更准确。只有在没有字幕时,才会回退到对音频使用Whisper(如果没有音频则干净地跳过)。
  5. 音频 (可选,--keep-audio) — 保存完整的原始音轨(audio.m4a:音乐 + 语音 + 音效,尽可能无损复制)。转录文本只有文字;音频文件则让能听的模型(Gemini、GPT-4o 等)真正听到音乐和语气。
  6. 时间戳 — 每个保留帧的源视频时间在整个流程中(提取 → 去重 → --max-frames 抽稀 → 重命名)都得以保留,并写入 frames.json(file / timestamp_sec / timestamp / selection_reason)。可将视觉证据引用为 frame_012 @ 00:03:41,将帧与 transcript.json 片段对齐,或将此映射表输入视频 RAG 流程。在 viewer.html 中,点击任意关键帧 →“从此处播放视频”。
  7. 清单 — MANIFEST.txt 为模型汇总一切信息。

所以模型可以看(关键帧)、读(转录文本),并且借助--keep-audio,听(完整音轨)视频。转录文本是任何模型都能读取的纯文本;该工具不会把字幕烧录进视频——烧录是一种呈现方式的选择,并不是让视频可被 AI 读取所必需的东西。

说明

  • 只下载你有权下载的内容。--cookies选项是供你自己获得授权的访问使用——不要把凭据提交到仓库里。
  • 每个视频使用一个输出文件夹。若重新运行到一个已经存有分析结果的文件夹,会被拒绝(这样两个视频永远不会混在一起);传入--overwrite可将其替换。

crv Pro——理解如何拍摄一个视频

这个免费工具为你的 AI 提供关键帧和转录文本——足以了解一个视频讲的是什么。crv Pro 则补上其余一切:如何拍摄、如何剪辑、如何讲述、给人什么感觉。全部在你的机器上计算,写成任何 LLM 都能读取的纯文本。

  • 镜头与节奏(--motion)——每个镜头自动标注:静止、平移、俯仰、变焦、手持。完整镜头表:每个镜头的时长、每分钟剪辑次数、开场/中段/结尾的节奏。高运动镜头会获得间隔 0.2s 的连拍帧。
  • 声音与情感(--senses)——语音情感、语调曲线和音频事件(笑声、音效、环境音)逐段打上时间戳。人声与音乐自动分离:情感分析读取干净的人声,音乐则拥有独立的 BPM + 能量轨道。无对白素材(MV、电影)则回退到从色彩和光线中读取情绪。
  • 交互式查看器(--viewer)——每次分析生成一个自包含的网页:视频、可点击并跳转到对应秒数的事件时间轴、随播放同步高亮的转录文本。支持英语 / 繁体中文 / 简体中文。
  • 两份报告,一个开关(--ai-report)——使用你自己的 API key:一份报告讲它是怎么拍的,一份讲它说了什么。
  • 拆解报告(--breakdown)——钩子分析、节奏曲线、镜头语言,以及一份评分标准,供你自己的 LLM 补全成完整的拆解。

创始人一次性优惠价 $19,截至 7 月 31 日——$29 自 8 月 1 日起:

在关注这个项目的开发过程吗?我正在公开记录从开源工具到第一位付费客户的历程——X 上的 @LeoAidoAI。

来源:Hacker News 热门(buzzing.cc 中文翻译) · github.com