ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

OpenMontage:用自然语言和AI编程助手生成Remotion视频工程

OpenMontage:用自然语言和AI编程助手生成Remotion视频工程

1. 从“剪辑地狱”到“一句话出片”:OpenMontage 到底在解决什么问题

如果你做过短视频,或者哪怕只是帮公司剪过一条三分钟的产品宣传片,你一定经历过那种“素材堆成山、时间线拉到吐”的绝望。一个典型的项目流程是这样的:先写脚本,再找素材,然后配音、配乐、加字幕、调节奏、导出、改一版、再改一版。整个过程中,真正“有创意”的部分可能只占两成,剩下八成全是重复劳动。而 OpenMontage 这个项目,瞄准的就是这八成。

OpenMontage 是一个开源的、面向 AI 编程助手的视频合成框架。它的核心思路非常直接:把视频制作这件事,从“手动拖时间线”变成“用自然语言描述需求,让 AI 生成可编程的视频工程”。你告诉它“我要一个 30 秒的产品介绍,节奏轻快,开头用动态文字,中间穿插三张产品图,结尾带一个行动号召按钮”,它就能基于 Remotion 这套 React 视频框架,生成对应的代码结构,再调用 Veo 这类视频生成模型补齐动态素材,最后渲染出成片。

这里有几个关键词需要先拆开讲清楚,不然后面没法聊。

Remotion是一个用 React 写视频的框架。它的核心思想是:视频就是“随时间变化的 UI”。你写 React 组件,Remotion 负责在每一帧上渲染这个组件,最后合成视频。这意味着你可以用写网页的方式写视频,用 CSS 做动画,用 JavaScript 控制逻辑,用 npm 装依赖。对于有前端背景的人来说,这几乎是零学习成本。

Veo是视频生成模型,你可以把它理解成“文生视频”或“图生视频”的能力。OpenMontage 并不自己训练模型,而是把 Veo 这类能力当作一个“素材生成器”来调用。你需要一段“城市夜景延时”或者“咖啡杯冒热气”的镜头,不用去素材网站翻半天,直接让模型生成。

Agentic这个词是理解 OpenMontage 的关键。它不是那种“你点一下按钮,它给你一个固定模板”的工具。Agentic 意味着它具备一定的自主决策能力:你给一个模糊的需求,它会拆解成任务,决定先做什么后做什么,遇到问题会尝试调整,而不是直接报错退出。比如你说“做个科技感开场”,它会自己判断:科技感可能需要深色背景、粒子效果、快速切换的文字,然后去生成对应的 Remotion 组件代码。

AI coding assistant在这里扮演的是“翻译官”和“施工队”的角色。你用自然语言描述视频需求,AI 编程助手(比如 Codex CLI 这类工具)把需求翻译成 Remotion 的代码结构,OpenMontage 再负责把这些代码组织成可渲染的工程。

所以 OpenMontage 的定位不是“一键生成爆款视频”的魔法棒,而是一个面向开发者和技术型创作者的视频工程脚手架。它适合那些人:懂一点代码,或者愿意让 AI 帮你写代码,但不想从零搭建 Remotion 项目、不想手动处理素材拼接、不想在时间线上反复微调的人。它的价值在于把“视频制作”这件事,从“操作软件”变成了“描述需求 + 审查代码 + 渲染输出”。

我最初注意到这个项目,是因为热搜里同时出现了remotion和codex cli remotion。这说明有一批人正在尝试用命令行 AI 工具直接驱动 Remotion 项目。OpenMontage 正好踩在这个交叉点上:它把 Remotion 的编程能力和 AI 助手的生成能力缝在了一起。

2. OpenMontage 的骨架:Remotion 负责渲染,Agent 负责决策,Veo 负责补素材

要理解 OpenMontage 怎么工作,得先把它拆成三层来看。这三层各司其职,缺一不可。很多人第一次接触这类工具,容易把“AI 生成视频”想象成一个黑盒:输入一句话,输出一个 mp4。但 OpenMontage 的实际工作流要透明得多,也可控得多。

2.1 Remotion 层:视频的本质是“逐帧渲染的 React 组件”

Remotion 的核心理念是“视频即代码”。一个 Remotion 项目的基本结构是这样的:

// MyComposition.jsx import { AbsoluteFill, useCurrentFrame, interpolate } from 'remotion'; export const MyComposition = () => { const frame = useCurrentFrame(); const opacity = interpolate(frame, [0, 30], [0, 1], { extrapolateRight: 'clamp', }); return ( <AbsoluteFill style={{ backgroundColor: '#0a0a0a' }}> <h1 style={{ opacity, color: 'white', fontSize: 80 }}> 欢迎来到 OpenMontage </h1> </AbsoluteFill> ); };

这段代码的意思是:在视频的第 0 帧到第 30 帧之间,标题的透明度从 0 渐变到 1。useCurrentFrame()拿到当前帧号,interpolate()做线性插值。就这么简单。你不需要理解视频编码、关键帧、时间线这些传统剪辑软件的概念,你只需要理解“帧”和“状态”。

OpenMontage 在这一层做的事情,是自动生成和组织这些组件。它不会让你手写每一个动画,而是根据你的描述,生成一个由多个 Composition 组成的工程。比如一个 30 秒的视频,可能被拆成:

  • 开场 Composition:0-5 秒,动态文字
  • 产品展示 Composition:5-20 秒,图片轮播 + 转场
  • 结尾 Composition:20-30 秒,行动号召 + 背景音乐

每个 Composition 都是一个独立的 React 组件,OpenMontage 负责把它们按顺序拼接,并处理转场、音频轨道、总时长这些“工程级”的问题。

2.2 Agent 层:把“模糊需求”翻译成“可执行任务列表”

这是 OpenMontage 最有意思的部分。你给它的输入不是代码,而是一段自然语言描述。比如:

“做一个 20 秒的咖啡品牌短视频,风格温暖,开头是咖啡豆特写,中间是冲泡过程,结尾出现品牌 logo 和 slogan。”

一个普通的模板工具会怎么做?它可能让你从预设模板里选一个,然后替换文字和图片。但 OpenMontage 的 Agent 层会先做任务拆解:

  1. 解析需求:时长 20 秒,风格温暖,三个场景(咖啡豆、冲泡、品牌收尾)
  2. 决定技术方案:用 Remotion 做文字和转场,用 Veo 生成咖啡豆特写和冲泡过程的动态素材
  3. 生成代码结构:创建三个 Composition,定义每个的时长和转场方式
  4. 调用素材生成:向 Veo 发送 prompt,获取视频片段
  5. 组装工程:把生成的素材和代码整合到 Remotion 项目中
  6. 渲染输出:执行npx remotion render生成最终视频

这个拆解过程不是固定的。如果你说“不要用生成的素材,我本地有图片”,Agent 会调整方案,改用Img组件加载本地图片,并自动添加 Ken Burns 效果(缓慢缩放平移)来让静态图动起来。如果你说“节奏要快”,它会缩短每个 Composition 的时长,增加转场频率。

这种“自主决策”的能力,就是 agentic 的核心。它不是简单地执行命令,而是根据上下文选择最合适的执行路径。

2.3 Veo 层:当 Remotion 的“代码动画”不够用时,用生成模型补镜头

Remotion 擅长什么?擅长文字动画、图形变换、数据可视化、UI 演示这类“结构化”的视频内容。但如果你需要一段“真实拍摄感”的镜头,比如“阳光透过树叶洒在桌面上”,Remotion 就无能为力了。这时候就需要 Veo 这类视频生成模型。

OpenMontage 对 Veo 的调用不是“替代”Remotion,而是“补充”。一个典型的混合工作流是这样的:

  • 开场:Remotion 生成动态文字标题(代码控制,精确到帧)
  • 中段:Veo 生成 3 段 5 秒的产品使用场景(真实感,无法用代码模拟)
  • 结尾:Remotion 生成 logo 动画和行动号召(品牌一致性,可复用)

这种混合模式的好处是:该用代码的地方用代码,该用生成的地方用生成。代码保证精确和可复用,生成保证真实感和多样性。OpenMontage 的 Agent 层会根据每个场景的需求,自动决定用哪种方式。

我实测下来,这种分层设计最大的好处是可控。纯生成模型的问题是“抽卡”——你永远不知道下一次生成会得到什么。但 OpenMontage 把生成的部分限制在“素材层”,而结构、节奏、文字、品牌元素这些关键部分仍然由代码控制。这意味着即使某一段生成素材不理想,你只需要重新生成那一段,不会影响整个视频的框架。

3. 跑通第一个 OpenMontage 项目:从环境准备到渲染出片

这一节我按实际操作的顺序来写。你不需要先理解所有原理,跟着走一遍,自然就明白了。我假设你已经有基本的命令行使用经验,知道npm或yarn怎么用。如果完全没有,也没关系,步骤里会说明每个命令在做什么。

3.1 环境准备:Node 版本和 Remotion 的“隐藏门槛”

OpenMontage 依赖 Remotion,而 Remotion 对 Node 版本有要求。我踩过的坑是:用 Node 16 跑 Remotion 4.x,会在渲染时莫名其妙卡住,没有任何报错,就是不动。后来查了文档才发现,Remotion 4.x 要求 Node 18 以上。

所以第一步,确认你的 Node 版本:

node -v

如果低于 18,建议用nvm或fnm切换。Windows 用户可以用nvm-windows。这一步不能省,否则后面会浪费大量时间排查一个根本不存在的 bug。

接下来,创建一个新的 Remotion 项目作为基础:

npx create-video@latest my-openmontage-project cd my-openmontage-project npm install

create-video是 Remotion 官方的脚手架,会生成一个包含基本配置的项目结构。你会看到src目录下有Root.tsx、Composition.tsx这些文件。Root.tsx是入口,注册所有的 Composition;Composition.tsx是一个示例组件。

然后安装 OpenMontage 相关的依赖。由于 OpenMontage 本身是一个框架,你可能需要从它的仓库克隆或安装对应的包。假设它提供了 npm 包:

npm install openmontage

如果它还没有发布到 npm,你需要从 GitHub 克隆:

git clone https://github.com/your-org/openmontage.git cd openmontage npm install npm run build

然后把构建产物链接到你的 Remotion 项目里。这一步的具体命令取决于 OpenMontage 的发布方式,但核心逻辑是:让 Remotion 项目能够importOpenMontage 的模块。

注意:Remotion 项目默认使用 TypeScript。如果你不熟悉 TS,不用慌,OpenMontage 生成的代码通常是类型安全的,你只需要看懂结构,不需要手写复杂类型。

3.2 配置 AI 助手:让 Codex CLI 能“看见”你的项目

OpenMontage 的 Agent 层需要调用 AI 编程助手。热搜里提到的codex cli remotion就是一个典型场景:用命令行 AI 工具直接操作 Remotion 项目。

配置的核心是两点:API 访问和项目上下文。

API 访问方面,你需要一个支持代码生成的 AI 服务。具体用哪家,取决于你的环境和预算。配置方式通常是在项目根目录创建一个.env文件:

AI_API_KEY=your_key_here AI_MODEL=your_preferred_model

项目上下文方面,OpenMontage 需要知道你的 Remotion 项目结构,才能生成正确的代码。通常它会在项目根目录读取package.json、src/Root.tsx和remotion.config.ts这几个文件。确保这些文件存在且格式正确。

我建议在项目根目录放一个openmontage.config.json,用来告诉 OpenMontage 一些关键信息:

{ "entryPoint": "src/Root.tsx", "outputDir": "out", "defaultDuration": 30, "fps": 30, "resolution": { "width": 1080, "height": 1920 }, "videoModel": "veo", "codeAssistant": "codex-cli" }

这个配置文件的作用是:当 Agent 需要生成代码或调用素材时,它知道去哪里找入口、输出到哪里、默认参数是什么。1080x1920是竖屏短视频的常见分辨率,如果你做横屏,改成1920x1080。

3.3 第一次生成:用自然语言描述一个 15 秒的测试视频

环境准备好之后,先别急着做复杂项目。用一个最简单的需求跑通全流程,确认每个环节都能工作。

在项目根目录执行:

npx openmontage generate "一个 15 秒的测试视频,黑色背景,白色文字从左侧滑入,显示'Hello OpenMontage',然后淡出"

这个命令会触发 Agent 层的工作流。你会看到终端里输出一系列日志:

  1. 解析需求:识别出时长 15 秒、背景色、文字内容、动画类型
  2. 生成代码:创建一个新的 Composition 组件,包含interpolate控制的位移和透明度
  3. 注册 Composition:在Root.tsx中添加注册代码
  4. 渲染:执行npx remotion render生成 mp4

如果一切顺利,out目录下会出现一个HelloOpenMontage.mp4。打开看一下,文字是否从左侧滑入,是否在结尾淡出。

这一步最常见的失败原因是路径问题。OpenMontage 生成的代码可能引用了错误的文件路径,导致 Remotion 找不到组件。如果渲染报错,先检查Root.tsx里的import路径是否正确。另一个常见问题是帧率不匹配:你的remotion.config.ts里设置的 fps 和 Composition 里假设的 fps 不一致,导致动画速度不对。确保两边都是 30 或都是 60。

3.4 加入 Veo 素材:混合工作流的第一次尝试

跑通纯代码视频之后,下一步是加入生成素材。假设你要做一个 20 秒的“城市清晨”短视频:

npx openmontage generate "20 秒城市清晨视频,开头 5 秒用 Veo 生成一段城市天际线日出的镜头,中间 10 秒用 Remotion 做文字动画显示'新的一天开始了',结尾 5 秒用 Veo 生成一杯咖啡的特写"

这个命令会触发更复杂的流程:

  1. Agent 拆解出两个 Veo 生成任务和一个 Remotion 代码任务
  2. 向 Veo 发送 prompt:“城市天际线日出,电影感,暖色调”
  3. 等待生成完成,下载视频片段到public/assets目录
  4. 生成 Remotion 代码,用OffthreadVideo组件加载生成的片段
  5. 在中间插入文字动画 Composition
  6. 拼接三个片段,处理转场
  7. 渲染输出

这里的关键是OffthreadVideo组件。Remotion 提供了两种加载视频的方式:Video和OffthreadVideo。前者在渲染时可能会因为解码问题导致帧丢失,后者更稳定,适合在渲染流水线中使用。OpenMontage 默认应该使用OffthreadVideo,如果你发现生成的代码用了Video,可以手动改一下。

提示:Veo 生成的视频片段通常需要转码才能被 Remotion 正确处理。OpenMontage 应该会自动处理这一步,但如果你遇到“视频无法解码”的错误,可以用ffmpeg手动转码:ffmpeg -i input.mp4 -c:v libx264 -crf 18 output.mp4。

4. 实际项目中容易翻车的五个细节

跑通 Demo 和做真实项目是两回事。Demo 只需要“能出片”,真实项目要求“出好片、可修改、能复用”。这一节我列几个在实际使用中容易翻车的地方,都是我在测试和帮朋友排查时遇到的真实问题。

4.1 时长计算:为什么你的视频总是“差一点”

Remotion 的时长单位是帧,不是秒。一个 30 秒的视频,在 30fps 下是 900 帧。OpenMontage 在生成代码时,需要把自然语言里的“秒”转换成“帧”。这个转换看起来简单,但实际项目中经常出问题。

问题出在转场上。假设你有三个 5 秒的片段,总时长应该是 15 秒。但如果你在每个片段之间加了 0.5 秒的交叉淡入淡出,实际总时长会变成 14 秒(因为转场重叠了 1 秒)。如果 OpenMontage 没有正确处理这个重叠,最终视频可能比预期短,或者某个片段被截断。

我的做法是:在openmontage.config.json里显式设置transitionDuration,并让 Agent 在计算总时长时把这个因素考虑进去。如果 OpenMontage 的默认行为不符合预期,你可以在生成代码后手动调整Sequence组件的from和durationInFrames属性。

<Sequence from={0} durationInFrames={150}> <Scene1 /> </Sequence> <Sequence from={140} durationInFrames={150}> <Scene2 /> </Sequence>

注意第二个Sequence的from是 140,不是 150。这就是 10 帧的重叠,对应 0.33 秒的转场。这种细节在 Demo 里看不出来,但在真实项目里会直接影响观感。

4.2 素材路径:public目录的“隐形规则”

Remotion 有一个约定:所有静态资源放在public目录下,引用时用/assets/xxx.mp4这样的绝对路径。但 OpenMontage 生成的代码有时会写成相对路径,比如./assets/xxx.mp4,导致渲染时找不到文件。

这个问题的根源是:Agent 在生成代码时,可能不知道你的项目结构。它假设素材和组件在同一个目录下,但 Remotion 要求素材在public下。

解决方案有两个:一是在openmontage.config.json里明确指定publicDir,让 Agent 知道素材应该放在哪里;二是在生成代码后,全局搜索./assets并替换为/assets。我通常两个都做,双保险。

另外,Veo 生成的素材文件名通常是随机字符串,比如gen_abc123.mp4。如果你在代码里硬编码了这个文件名,下次重新生成素材时,文件名变了,代码就失效了。更好的做法是让 OpenMontage 维护一个素材映射表,或者你在生成后手动重命名素材,用有意义的名称(如city_sunrise.mp4)。

4.3 字体加载:@remotion/google-fonts的正确用法

文字动画是 Remotion 的强项,但字体加载是个坑。如果你直接用 CSS 的font-family: 'Noto Sans SC',而系统里没有这个字体,渲染出来的视频会 fallback 到默认字体,中文可能变成方块。

Remotion 提供了@remotion/google-fonts包来解决这个问题:

import { loadFont } from '@remotion/google-fonts/NotoSansSC'; const { fontFamily } = loadFont();

这样字体会在渲染时自动下载并嵌入,不依赖系统字体。OpenMontage 生成的代码应该包含这一步,但如果你发现中文显示异常,检查一下是否有loadFont调用。

另一个细节是字重。loadFont默认加载 400 字重,如果你需要粗体,要显式指定:

const { fontFamily } = loadFont('normal', { weights: ['400', '700'], });

然后在样式中用fontWeight: 700。这个细节在 Demo 里不重要,但在品牌视频里,字重不对会显得很不专业。

4.4 渲染性能:为什么 30 秒视频渲染了 10 分钟

Remotion 的渲染是逐帧进行的。一个 30 秒、30fps 的视频有 900 帧,每一帧都要执行一次 React 渲染。如果你的组件里有复杂的计算或大量的 DOM 元素,渲染时间会线性增长。

我实测过一个极端案例:一个包含 50 个粒子动画的 10 秒视频,渲染时间超过 15 分钟。原因是每一帧都在重新计算 50 个粒子的位置,而且没有做 memoization。

优化手段有几个:

  • 用useMemo缓存不随帧变化的数据
  • 用interpolate代替手动计算
  • 减少不必要的 DOM 嵌套
  • 如果某个元素在整段视频中不变,用AbsoluteFill把它抽出来,不要放在逐帧更新的组件里

OpenMontage 生成的代码通常不会这么极端,但如果你在 Agent 的 prompt 里要求“复杂的粒子效果”,它可能会生成性能较差的代码。这时候需要手动优化。

另一个影响渲染速度的因素是并发。Remotion 默认使用机器的所有 CPU 核心进行并发渲染。如果你在低配机器上跑,可以限制并发数:

npx remotion render --concurrency=2

--concurrency=2表示只用 2 个核心。虽然总时间可能变长,但避免机器卡死。

4.5 版本兼容:Remotion 4.x 和 OpenMontage 的“代沟”

OpenMontage 作为一个较新的项目,可能还在快速迭代。它的文档可能针对 Remotion 3.x 编写,但你安装的是 4.x。这两个版本之间有一些破坏性变更,比如Composition的durationInFrames属性在 4.x 里是必填的,而 3.x 里可以省略。

如果你遇到“属性不存在”或“组件未定义”的错误,先检查 Remotion 版本:

npm list remotion

如果版本和 OpenMontage 的要求不一致,有两个选择:降级 Remotion 到 OpenMontage 支持的版本,或者升级 OpenMontage 到最新版。我倾向于后者,因为新版本通常修复了旧版本的 bug。

提示:在package.json里锁定 Remotion 的版本号,不要用^4.0.0这种范围,用4.0.123这种精确版本。这样可以避免某次npm install后突然出现兼容性问题。

5. 把 OpenMontage 用出“生产力”:三个进阶思路

如果你已经跑通了基本流程,下面这几个思路可以让 OpenMontage 从“玩具”变成“工具”。这些不是官方文档里的内容,是我在实际使用中摸索出来的。

5.1 建立自己的“组件库”:让 Agent 复用你的代码

OpenMontage 每次生成都会创建新的 Composition。如果你经常做同类视频(比如每周的产品更新),每次都重新生成会导致代码重复,风格不统一。

更好的做法是:手动维护一个src/components目录,把常用的动画封装成可复用的组件。比如:

// src/components/TitleSlide.jsx export const TitleSlide = ({ title, subtitle, backgroundColor }) => { const frame = useCurrentFrame(); const opacity = interpolate(frame, [0, 20], [0, 1]); return ( <AbsoluteFill style={{ backgroundColor, justifyContent: 'center', alignItems: 'center' }}> <h1 style={{ opacity, color: 'white', fontSize: 72 }}>{title}</h1> <p style={{ opacity, color: '#ccc', fontSize: 36 }}>{subtitle}</p> </AbsoluteFill> ); };

然后在 OpenMontage 的 prompt 里告诉它:“使用TitleSlide组件,标题是‘新品发布’,副标题是‘2025 春季系列’”。Agent 会生成引用这个组件的代码,而不是重新写一个。

这样做的好处是:风格统一、代码量少、修改方便。你改一次TitleSlide,所有用到它的视频都会更新。

5.2 批量生成:用脚本驱动 OpenMontage

如果你需要为多个产品生成类似的视频,手动一个个跑命令效率太低。可以写一个简单的 Node 脚本:

const { execSync } = require('child_process'); const products = [ { name: '产品 A', color: '#ff6b6b' }, { name: '产品 B', color: '#4ecdc4' }, { name: '产品 C', color: '#ffe66d' }, ]; products.forEach((product) => { const prompt = `生成一个 15 秒的产品介绍视频,产品名称是"${product.name}",主色调是${product.color},包含产品名称动画和行动号召`; execSync(`npx openmontage generate "${prompt}"`, { stdio: 'inherit' }); });

这个脚本会依次为每个产品生成视频。你可以进一步扩展,比如从 CSV 读取产品信息,或者把生成的视频自动上传到某个位置。

需要注意的是:批量生成时,每个视频的输出文件名要区分开,否则会互相覆盖。OpenMontage 应该支持--output参数来指定输出路径,如果不支持,你可以在生成后手动重命名。

5.3 与 CI/CD 集成:让视频生成自动化

如果你的团队有持续集成流程,可以把 OpenMontage 集成进去。比如:每次产品发布时,自动生成一条宣传视频。

基本思路是:

  1. 在 CI 配置里安装 Node 和依赖
  2. 从环境变量读取 AI API Key
  3. 执行 OpenMontage 生成命令
  4. 把生成的 mp4 上传到制品库或 CDN

以 GitHub Actions 为例:

name: Generate Promo Video on: release: types: [published] jobs: generate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '18' - run: npm install - run: npx openmontage generate "30 秒产品发布视频,风格科技感" env: AI_API_KEY: ${{ secrets.AI_API_KEY }} - uses: actions/upload-artifact@v4 with: name: promo-video path: out/*.mp4

这样每次发布新版本,CI 会自动生成一条视频,你只需要下载查看即可。当然,生成的视频可能需要人工审核,但至少省去了“从零开始做”的时间。

注意:CI 环境通常没有 GPU,Veo 这类生成模型的调用可能需要额外的配置。如果生成速度太慢,可以考虑只在 CI 里做 Remotion 部分的渲染,Veo 素材提前生成好放在仓库里。

6. 我对 OpenMontage 这类工具的真实看法

用了这段时间,我对 OpenMontage 的定位越来越清晰:它不是一个“替代剪辑师”的工具,而是一个“把视频工程化”的框架。它的价值不在于让完全不懂视频的人做出大片,而在于让懂一点技术的人,用更高效的方式做出“足够好”的视频。

什么叫“足够好”?对于大多数社交媒体内容、产品演示、内部培训视频来说,观众并不期待电影级的制作水准。他们期待的是:信息清晰、节奏不拖沓、画面不粗糙。OpenMontage 配合 Remotion 和 Veo,完全能达到这个标准,而且速度比手动剪辑快得多。

但它也有明显的边界。如果你要做的是情感细腻的纪录片、需要精确调色的广告片、或者有复杂叙事结构的短片,OpenMontage 目前还做不到。它的强项是“结构化内容”:文字动画、数据展示、产品轮播、简单的场景拼接。这些内容用代码生成,比手动剪辑更精确、更可复用。

另一个我喜欢的点是可版本控制。传统视频项目是一堆.prproj或.veg文件,二进制格式,没法 diff,没法 merge。OpenMontage 生成的是代码,你可以用 Git 管理,可以看到每次修改改了什么,可以回滚到任意版本。这对于团队协作来说,是质的提升。

当然,目前 OpenMontage 还在早期阶段,文档不够完善,Agent 的决策有时会“跑偏”,生成的代码需要人工审查。但它的方向是对的:把视频制作从“操作软件”变成“描述需求 + 审查代码”。随着 AI 编程助手越来越强,这个流程会越来越顺畅。

如果你正在做短视频、产品演示、或者任何需要批量产出视频的场景,我建议你花一个下午跑通 OpenMontage 的 Demo。不需要一开始就做复杂项目,从一个 15 秒的测试视频开始,感受一下“用自然语言生成视频工程”的流程。跑通之后,你会对“视频制作”这件事有全新的理解。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进