爱意满满的作品展示区。
liaocaoxuezhe

[开源] 让 Agent 真正「看懂」视频: Gemini 主动视频理解 MCP + Skill,附 FFmpeg 抽帧实测对比

  •  
  •   liaocaoxuezhe · 23h 4m ago · 771 views

    9 月初 Google 发了篇博客介绍 agentic video understanding:视频理解不再是「按固定帧率抽帧 → 全部塞进上下文」,核心思路是淘汰以前用平均地抽帧来理解视频,而是让 agent 自己去决定看哪一帧。

    我照着这个思路做了个开源项目 gemini-agentic-video:一个 MCP 服务 + Agent Skill ,让 Agent 能直接理解本地视频和 YouTube 链接。

    它能做什么

    • 标准 MCP 服务,只暴露一个工具 analyze_video_agentic ,可接入 Claude Desktop / Cursor / Windsurf / Google Antigravity
    • 也能当 CLI 用:gemini-agentic-video --video ./match.mp4 --prompt "统计所有进球时间戳"
    • 附带标准 SKILL.md ,复制到 skills 目录就能用(这也是我在 Antigravity 里的实际用法)
    • 本地文件和 YouTube 链接都支持
    • 内置 configure 向导,自动验证并写入 API Key ( AI Studio 有免费额度,个人开发者不用绑卡)

    和传统抽帧的区别

    传统方案:长视频 → 固定 1fps 抽帧 → 几千张图全量进上下文 → Token 爆炸,还容易漏掉瞬时动作。

    Agentic 方案:模型先粗筛定位,再按问题主动回看关键片段,必要时局部提高帧率复查。最终产物是一段带时间戳的分析,而不是一堆中间帧。

    实测:Gemini Agentic vs FFmpeg 抽帧

    我拿两个视频做了端到端对比( 20 秒足球片段 + 204 秒产品介绍视频),完整数据也放在了仓库 docs 里。

    对比的结果发现:

    • Gemini 能准确捕捉到进球时刻,FFmpeg 不行:Gemini 明显更强。20 秒足球片段它准确抓到 14-15 秒的进球和随后的庆祝; FFmpeg 那组抽了 147 帧,却因为球被遮挡,最后保守地写成「无法确认进球」。

    • FFmpeg 的优势是用于截图取证。元数据、逐帧图片、接触表都能存下来,缺点是磁盘占用大(简单组 23MB ),而且它本身不理解画面和音频语义。

    • 复杂产品视频:两组都还原了主结构,Gemini 额外给出了十几段口播、英文解说、BGM 和转场描述; FFmpeg 只能确认音轨、音量、静音,理解不了内容。

    • 耗时上看,Gemini 理解视频的时间会长一些,但理解的效果好的多。:

      • 20 秒视频 Gemini 363 秒 vs FFmpeg 1232 秒( FFmpeg 组明显过采样了);
      • 204 秒视频反过来 FFmpeg 532 秒 vs Gemini 1179 秒,但 Gemini 那 1179 秒里包含 3 次失败重试,成功链路实际约 413 秒。

    目前的坑(先说清楚)

    1. 必须上传到 Google 云端处理,隐私敏感素材请慎用
    2. 模型内部看了哪些帧是不可见的,重要结论建议再用 FFmpeg 抽关键帧复核

    所以我自己的用法是:Agentic 负责定位和理解,FFmpeg 按它给的时间点取证复核,而不是二选一。

    地址

    GitHub: https://github.com/liaocaoxuezhe/gemini-agentic-video

    Google 那篇博客: https://blog.google/innovation-and-ai/models-and-research/gemini-models/introducing-agentic-video-in-gemini/

    演示:我用它在 Antigravity 里一句 prompt 直出了一段 42 秒的足球进球集锦(剪辑用的是 ChatCut ,视频理解走 gemini-agentic-video ): https://x.com/liaocaoxuezhe/status/2099342875456872930

    Apache-2.0 开源,欢迎试用、提 issue ,也欢迎拍砖。

    9 replies    2026-09-16 13:54:34 +08:00
    liaocaoxuezhe
        1
    liaocaoxuezhe  
    OP
       23h 3m ago
    大家可以试用看看,加上这个 skills, 搭配 google 的 api key ,视频理解好用了很多。
    Loker
        2
    Loker  
       22h 52m ago
    一定要 gemini 吗? 其他 llm 有测试结果不?
    liaocaoxuezhe
        3
    liaocaoxuezhe  
    OP
       21h 57m ago
    @Loker 目前只有 gemini 有 agentic 理解的能力,像豆包千问等等,都还是平均地抽帧。
    liaocaoxuezhe
        4
    liaocaoxuezhe  
    OP
       20h 48m ago
    @liaocaoxuezhe 也不是平均地,就是算法决定抽哪些帧。视频变化快的地方,提高抽帧率;变化慢的地方,降低抽帧率;
    McGrady222
        5
    McGrady222  
       20h 14m ago
    用谷歌的 agy 可以吗?
    laurent
        6
    laurent  
       18h 4m ago
    实际上任何一个能读图像的模型应该都可以
    不需要自己提供截图,直接在 AI Agent 上 prompt: "用 ffmpeg 提取 @video_file.mkv 中的...."就行了
    AI Agent 会自己通过字幕提示/二分搜索等等方法,找到想看的帧,自己截图的理解的。

    Google 只是把这个过程封装成一个 API 而已。就相当于开一个 subagent 处理这个 task 。
    ddoyou
        7
    ddoyou  
       13h 58m ago via Android
    如果是在大量视频里找一个场景呢,例如闪过的红色房子
    youwink
        8
    youwink  
       13h 15m ago
    codex 已经支持用剪影剪辑了
    jybox
        9
    jybox  
       2 mins ago
    我最近做了一个 AI 视频剪辑的完整 Agent
    https://github.com/jysperm/Montai

    采用的方式主要是先完整分析一个视频( 1 fps ),形成分时间段的文字描述(例如 1:20 - 1:35 蓝色球衣的队伍经过三次传球后进球)保存下来。后续剪辑时 Agent 在基于这个描述调用工具,把关心的视频片段加入上下文(这时 agent 可以在 1 - 5 之间选择 fps )。

    估计这个就和 Agentic Process 背后的实现差不多,Gemini 效果比较好主要是它有原生的视频支持,可以基于时间戳对视频进行描述不容易出错。至于 token 爆炸我觉得不是这个方案解决的关键点,因为其实视频输入的 token 用量并不大,一帧只要 300 token 左右,除非是看监控视频这种极其冗长的,否则我觉得读视频的 token 量并不是很夸张。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5241 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 05:57 · PVG 13:57 · LAX 22:57 · JFK 01:57
    ♥ Do have faith in what you're doing.