claude-real-video: 通过场景感知帧提取让 LLM 能够观看视频"}],
claude-real-video: 通过场景感知帧提取让 LLM 能够观看视频
概述
claude-real-video 是一个开源工具,旨在通过将视频转换为模型易于摄取的格式,让 Claude、ChatGPT 和 Gemini 等大语言模型 (LLM) "观看"视频。与许多仅依赖字幕或固定间隔帧采样的 AI 工具不同,claude-real-video 只提取重要的帧——特别是场景变化和关键视觉变化——并将其与字幕配对,同时所有操作都在用户的本地机器上运行。
解决固定间隔采样的局限性
大多数现有的视频到 LLM 的流水线(包括 Gemini 的原生视频处理)通常以固定间隔采样帧(例如,每秒 1 帧)。这种方法会产生两个主要的低效问题:
- 过度采样静态内容: 一个 10 分钟的静态屏幕录制将产生 600 帧几乎相同的帧,浪费上下文窗口空间并增加成本。
- 欠采样快速剪辑: 固定采样点之间发生的快速视觉变化往往会被完全忽略。
claude-real-video 通过结合使用场景变化检测和密度底线来解决这个问题。这确保了在捕捉每一个视觉过渡的同时,通过维持最小帧频率(由 --fps-floor 定义)来确保没有长段视频被忽略。
关键技术特性
智能帧去重
为了进一步优化上下文窗口,该工具采用了滑动窗口去重过程。它不使用简单的感知哈希,而是使用缩放后的 RGB 像素差异来确定一帧是否是唯一的。
通过将新帧与最后几个保留帧的滑动窗口(由 --dedup-window 控制)进行比较,该工具可以防止同一镜头被多次发送给 LLM,即使视频使用了 A-B-A 剪辑。用户可以使用 --dedup-threshold 标志来调整此过程的灵敏度。
多模态数据提取
除了视觉内容,claude-real-video 还为 LLM 提供全面的数据包:
- 字幕: 该工具首先尝试使用现有的字幕 (SRT/VTT) 以获得最高准确度。如果不存在,它将回退到使用 OpenAI 的 Whisper 进行本地音频转录。
- 音频提取: 使用
--keep-audio标志,该工具会将完整音轨保存为audio.m4a文件,允许具有原生音频能力的模型(如 GPT-4o 或 Gemini)分析语气和音乐。 - 清单文件: 生成一个
MANIFEST.txt文件来总结提取的内容,为 LLM 提供视频组件的结构化地图。
本地处理与隐私
所有处理(获取、提取和去重)都在本地完成。该工具使用 yt-dlp 进行 URL 处理,并使用 ffmpeg 进行帧和音频提取,从而确保视频数据不会被上传到云服务进行预处理。
安装与使用
系统要求
claude-real-video 需要 Python 3.10+ 并且系统路径中已安装 ffmpeg。
安装
用户可以安装核心功能或包含转录功能的完整套件:
# 核心帧提取与去重
pip install claude-real-video
# 包含音频转录的完整套件
pip install "claude-real-video[whisper]"
基本命令
- 从 URL 开始:
crv "https://www.youtube.com/watch?v=..." - 从本地文件开始:
crv lecture.mp4 -o out --lang en - 仅提取帧:
crv clip.mp4 --no-transcribe - 登录受限内容:
crv "https://..." --cookies cookies.txt
配置选项摘要
| Flag | Default | Description |
|---|---|---|
--scene |
0.30 |
场景变化检测的灵敏度(数值越低 = 帧越多) |
--fps-floor |
1.0 |
最小帧捕捉频率(每 N 秒一帧) |
--max-frames |
150 |
提取的最大总帧数 |
--dedup-threshold |
8 |
被视为新帧所需的像素变化百分比 |
--dedup-window |
4 |
用于去重时对比的先前帧数量 |
--report |
off | 生成 report.html 以可视化保留/丢弃决策 |