Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

在 CLI 上将视频作为 JPEG 帧序列提供给视觉 LLM(也是 LLM 0.25)

Posted on 2025-05-06

新的llm-video-frames插件可以将视频文件转换为 JPEG 帧序列,并将它们直接输入到长上下文视觉 LLM(例如 GPT-4.1)中,即使该 LLM 不直接支持视频输入。这取决于我昨晚发布的LLM 0.25中添加的插件功能。

尝试方法如下:

 brew install ffmpeg #或 apt-get 或您选择的包管理器 uv tool install llm #或 pipx install llm 或 pip install llm llm 安装 llm-视频帧 llm 按键设置openai #将您的 OpenAI API 密钥粘贴到此处  llm -f 视频帧:video.mp4 \   '描述该视频中的关键场景' \   -m gpt-4.1-mini

video-frames:filepath.mp4语法由新插件提供。它获取该视频,将视频的每一秒转换为 JPEG,然后将其转换为可以传递给法学硕士的附件。

这是针对 Cleo视频的演示:

 llm -f video-frames:cleo.mp4 '描述关键时刻' -m gpt-4.1-mini

以及模型的输出(此处为转录本):

这一系列图像捕捉了狗被提供然后享受小零食的关键时刻:

  1. 在第一张图片中,一只手拿着一个带有紫色糖霜的小纸杯蛋糕,靠近一只黑狗的脸。这只狗看起来很渴望,全神贯注地吃着零食。
  2. 第二张图片显示狗开始咬人手指上的纸杯蛋糕。狗张着嘴,轻轻地啃着食物。
  3. 在第三张图片中,狗已经吃完或几乎吃完零食,看起来很满足,带着轻微的微笑和放松的姿势。零食不再在人的手中,表明狗已经吃掉了它。

这一过程凸显了狗对零食的期待、享受和满意度。

总成本:7,072 个输入代币,156 个输出代币 – 对于 GPT-4.1 mini,这是 0.3078 美分(不到三分之一美分)。

在本例中,插件将视频转换为三个图像: frame_00001.jpg 、 frame_00002.jpg和frame_00003.jpg 。

该插件接受额外的参数。您可以使用?fps=2增加每秒帧数 – 例如:

 llm -f ' video-frames:video.mp4?fps=2 ' '总结该视频'

或者您可以添加?timestamps=1以使ffmpeg在每个帧的右下角覆盖时间戳。这使模型有机会在其输出中返回时间戳。

让我们通过 Cleo 视频来尝试一下:

 llm -f '视频帧:cleo.mp4?timestamps=1&fps=5 ' \   '关键时刻,包括时间戳' -m gpt-4.1-mini

这是输出(此处为文字记录):

以下是视频“cleo.mp4”中的关键时刻以及时间戳:

  • 00:00:00.000 – 一只被拴着的狗看着一个人拿着的带有紫色糖霜的小纸杯蛋糕。
  • 00:00:00.800 – 狗仔细地嗅纸杯蛋糕。
  • 00:00:01.400 – 该人将少量纸杯蛋糕糖霜放在手指上。
  • 00:00:01.600 – 狗开始舔人手指上的糖霜。
  • 00:00:02.600 – 狗继续热情地舔着。

如果您需要更多详细信息或任何特定部分的描述,请告诉我。

该程序向 API 发送了 14 张图像,总成本为 32,968 个输入,141 个输出 = 1.3413 美分。

它将 5.9MB 的图像数据发送到 OpenAI 的 API,并在 JSON API 调用中编码为 base64。

GPT-4.1 模型系列最多接受 1,047,576 个代币。除了每个图像 20MB 的大小限制之外,我还没有看到任何关于图像数量限制的文档。您可以在一百万个令牌中容纳大量 JPEG 帧!

以下是其中一帧的样子,时间戳覆盖在角落:

Cleo 从我的手指上拿了点东西,右下角有一个覆盖层,上面写着 cleo.mp4 00:00:01.600

我如何使用 o4-mini 构建插件

这是一个很好的例子,说明了法学硕士的快速原型设计如何帮助展示功能的价值。

当我想到使用ffmpeg将视频分割成帧时,我正在考虑在第 972 期中让片段插件返回图像是否有意义。

从过去的经验中我知道,如果你提供正确的示例,一个好的模型可以为 LLM 编写一个完整的插件,所以我从这个开始(为了可读性而在此处重新格式化):

 llm -m o4-mini -f github:simonw/llm-hacker-news -s '编写一个名为 llm_video_frames.py 的新插件,它采用 video:path-to-video.mp4 并创建一个临时目录,然后使用 ffmpeg 每秒填充该视频的一帧 - 然后它返回 [llm.Attachment(path="path-to-frame1.jpg"), ...] 的列表 - 它还应该支持传递 video:video.mp4?fps=2 以增加到每秒两帧,如果传递 ?timestamps=1 或 &timestamps=1 那么它应该在每个图像的右下角添加一个文本时间戳,其中包含该帧的 mm:ss 时间戳(如果超过一小时则为 hh:mm:ss)以及不带路径的视频文件名。 ' -o 推理努力高

这是文字记录。

新的附件机制从模糊的想法转变为“我应该构建它”,这是法学硕士构建的概念验证的直接结果,该概念证明了新功能的可行性。

它生成的代码大约是我在成品插件中提供的代码的 90%。总成本 5,018 个输入,2,208 个输出 = 1.5235 美分。

LLM 0.25 中其他所有内容的带注释的发行说明

以下是其他所有内容的带注释的发行说明:

  • 新插件功能: register_fragment_loaders(register)插件现在可以返回片段和附件的混合。 llm-video-frames插件是第一个利用此机制的插件。第972章

如上所述。此功能的灵感来自agustif的llm-arxiv插件。

  • 新的 OpenAI 型号: gpt-4.1 、 gpt-4.1-mini 、 gpt-41-nano 、 o3 、 o4-mini 。 #945 , #965 , #976 。

我最初的计划是将这些模型专门留给新的llm-openai插件,因为这允许我在没有完整的 LLM 版本的情况下添加对新模型的支持。我会押注这一点,直到我准备好从 LLM 核心中完全删除 OpenAI 模型。

  • 新的环境变量: LLM_MODEL和LLM_EMBEDDING_MODEL用于设置要使用的模型,而无需每次都指定-m model_id 。第932章

如果您想在不使用全局默认模型的情况下为 LLM 的终端会话设置默认模型,这是一个方便的功能。

  • 新命令: llm fragments loaders ,列出插件提供的所有当前可用的片段加载器前缀。第941章

主要是为了与现有的llm templates loader命令保持一致。这是我在计算机上运行llm fragments loaders时的输出:

 docs: Fetch the latest documentation for the specified package from https://github.com/simonw/docs-for-llms Use '-f docs:' for the documentation of your current version of LLM. docs-preview: Similar to docs: but fetches the latest docs including alpha/beta releases. symbex: Walk the given directory, parse every .py file, and for every top-level function or class-method produce its signature and docstring plus an import line. github: Load files from a GitHub repository as fragments Argument is a GitHub repository URL or username/repository issue: Fetch GitHub issue/pull and comments as Markdown Argument is either "owner/repo/NUMBER" or URL to an issue pr: Fetch GitHub pull request with comments and diff as Markdown Argument is either "owner/repo/NUMBER" or URL to a pull request hn: Given a Hacker News article ID returns the full nested conversation. For example: -f hn:43875136 video-frames: Fragment loader "video-frames:<path>?fps=N&timestamps=1" - extracts frames at `fps` per second (default 1) - if `timestamps=1`, overlays "filename hh:mm:ss" at bottom-right

来自llm-docs 、 llm-fragments-symbex 、 llm-fragments-github 、 llm-hacker-news和llm-video-frames 。

  • llm fragments命令现在显示按首次使用日期排序的片段。第973章

这使得快速调试新的片段插件变得更加容易 – 您可以运行llm fragments并浏览底部的几个条目。

我还为此使用了新的llm-echo调试插件 – 它添加了一个名为“echo”的新假模型,它仅输出传递给模型的任何提示、系统提示、片段和附件:

 llm -f docs:sqlite-utils -m echo '显示上下文'

在这里输出。

  • llm chat现在包含一个!edit命令,用于使用默认终端文本编辑器编辑提示。谢谢,本尼迪克特·威利。第969章

这是对llm chat一个非常好的增强,使得编辑长提示变得更加方便。

其余的:

  • 允许同时使用-t和--system 。第916章
  • 修复了通过别名访问模型将无法遵守为该模型设置的任何默认选项的错误。第968章
  • 改进了extra-openai-models.yaml的文档。谢谢拉希姆·纳斯瓦尼和丹·吉多。第950章,第957章
  • llm -c/--continue现在可以与-d/--database选项一起正常工作。 llm chat现在接受-d/--database选项。谢谢,苏赫宾德·辛格。第933章

标签:视觉 LLMS 、 LLM 、插件、 AI 、 LLMS 、生成式 AI 、项目、 FFMPEG 、人工智能辅助编程

原文: https://simonwillison.net/2025/May/5/llm-video-frames/#atom-everything

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • eighty twenty
  • Elad Gil
  • Ellie Huxtable
  • Ethan Dalool
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Rohit Patel
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Steve Blank
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • Wes Kao
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme