讓 LLM「看」影片的三條路,我全走過一輪,其中一條被一位用戶拿 2,181 支影片壓力測試過。講結果。
最短路徑,而且要公平講:問「這支影片在幹嘛」,Gemini 是真的強。代價在結構上:影片要離開你的機器、每次跑結果不保證一樣、同一份證據沒辦法拿去給別的模型。答案看起來怪的時候,你沒有東西可以核對,只能重跑一次碰運氣。
設計很誠實:OpenCV 抽關鍵格、Whisper 轉錄、本地視覺模型(Llama 3.2 11B)逐格描述,最後給你一份重建出來的說明。問題是你的 LLM 從頭到尾沒看過影片——它看的是另一個模型對影片的意見。視覺模型看錯的每一格,都會變成你的 LLM 自信轉述的事實。而且迴圈裡多養一個模型。
這條就是被低估的那個,對,是我做的——看論點,別看作者。crv 把影片變成 LLM 讀得懂的東西:場景感知抽格、帶真實來源時間戳、含說話人標記的逐字稿,加一份告訴 agent 怎麼讀資料夾的 MANIFEST。中間沒有第二個模型。Claude(或 GPT、或本地模型)看的是真的畫面,引用的是 frame_012 @ 00:03:41。全程在你機器上跑。
一位用戶用 crv 掃完他整個相簿——四天 2,181 支——把出錯清單照嚴重度寄給我。其中兩個 bug 改變了我對整個品類的看法:
小物體穿過靜止畫面,整格變化率動都不動,就被當重複格丟掉。飛過天空的鳥、伸進畫面的手——恰好是人類會留的那幾格。所有用「整格差異」去重的工具都有這個盲點。crv 改成看局部區塊的變化;均勻抽格的工具靠「什麼都留」躲過這個 bug,然後由你的 context window 付帳。
抽格、去重、改名之後,多數管線就對不回原片時間了。模型能描述那張投影片,卻說不出它幾分幾秒出現。crv 直接解析 ffmpeg 的真實 PTS 寫進 frames.json;同一位用戶拿 22 分鐘的課程重驗,60 格對回原片,60 中 60。
這兩個修正都沒被我自己的測試抓到,是一個有大量真實影片的用戶抓到的。這個品類的真相就是:難的 bug 都住在 demo 不會去的地方。
pip install "claude-real-video[fast]" npx skills add HUANGCHIHHUNGLeo/claude-real-video