claude-real-video: 透過場景感知幀提取讓 LLM 能夠觀看影片
claude-real-video: 透過場景感知幀提取讓 LLM 能夠觀看影片
概覽
claude-real-video 是一款開源工具,旨在讓 Claude、ChatGPT 和 Gemini 等大型語言模型 (LLMs) 能夠透過將影片轉換為模型易於攝取的格式來「觀看」影片。與許多僅依賴逐字稿或固定間隔幀採樣的 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 以視覺化保留/捨棄的決策 |