过去,制作一条视频通常需要在多个工具之间切换:准备素材、生成画面、寻找配乐、剪辑、添加字幕,最后导出。
如果把这些步骤放进一个浏览器工作区,用户通过对话描述需求,系统负责调用模型、生成素材并修改时间线,视频制作会变成什么样?
这是我们在开源项目 Timeline Studio 的 Anna 版本中探索的方向:ChatCut 对话剪辑。
用户不需要安装桌面剪辑软件,也不需要自己搭建模型推理环境。打开应用后,可以围绕当前工程提出剪辑要求,并使用平台提供的云端生成能力补充素材。
从技术上看,ChatCut 采用浏览器与云端协作的架构:云端模型负责理解需求、规划和生成,浏览器负责时间线状态、预览、编辑校验与视频合成。
本文介绍这套架构如何连接对话、剪辑、视频生成和音乐生成,以及如何让模型的操作落到可继续编辑的工程中。
源码仓库:MartinDelophy/ai-video-editor
一、把对话接入一个真正的编辑器
ChatCut 的界面由对话、实时预览和时间线组成。
用户可以提出这样的要求:
把第二个镜头缩短,后面的旁白和字幕一起调整。
也可以提出生成需求:
根据这个描述生成一段视频,先让我看看结果。
这些需求涉及不同的执行路径。前者修改已有工程,后者创建新的媒体素材。系统需要知道当前有哪些资源、哪些片段被引用,以及哪些行为会改变时间线。
因此,ChatCut 的基础是一个有状态的编辑器。对话负责表达意图,工程模型负责保存片段、时间、轨道、链接和素材身份。
用户对话
↓
读取当前工程与素材
↓
云端模型选择工具
↓
编辑校验 / 媒体生成
↓
结果预览与操作回执
↓
可继续修改的时间线
这样,用户完成一次对话后,仍然可以拖动片段、修改字幕、调整音量,或者继续要求 AI 修改。
二、“不用下载软件”背后的技术分工
免安装,并不意味着所有计算都发生在服务器。
ChatCut 将任务分成几层:
| 层级 | 主要职责 |
|---|---|
| 浏览器界面 | 对话、素材管理、时间线与预览 |
| 编辑命令层 | 校验片段、时间、链接关系和工程状态 |
| 云端大模型 | 理解需求、选择工具、生成编辑计划 |
| 云端媒体服务 | 执行已授权的视频、音乐等生成任务 |
| 浏览器合成层 | 根据工程完成画面、字幕、效果和音频输出 |
这种分工让用户可以在一个工作区内完成操作,同时保留浏览器编辑器的即时反馈。
云端负责需要平台模型支持的任务,浏览器继续管理当前工程。最终导出也复用编辑器现有的合成路径,而非把每一次编辑都提交给一个独立的云端渲染系统。
三、模型通过受约束的工具操作工程
ChatCut 调用 Anna 提供的 llm.complete 能力,由浏览器维护一个有明确边界的工具循环。
每一轮首先读取工程,再将允许使用的工具及其输入结构交给模型。模型可以请求查看轨道、检查片段、读取素材信息,或者提出编辑预览。
部分工具包括:
timeline_project_inspect
timeline_track_inspect
timeline_clip_inspect
timeline_assets_inspect
timeline_edit_preview
timeline_video_generate
timeline_export_prepare
工具循环最多执行 16 次模型调用,避免单次请求无限运行。
模型返回的是结构化工具参数。应用不会执行模型提供的任意 JavaScript、Shell 命令或未经约束的网络地址。
这让剪辑自动化建立在可验证的操作契约之上。
四、自动编辑需要保护用户正在做的修改
对话请求发出后,模型可能需要一段时间分析和规划。期间,用户也可能继续手动编辑。
如果模型直接提交旧计划,就可能改变用户刚刚调整的内容。
ChatCut 在每轮开始时捕获当前工程的状态令牌。编辑预览必须仍然匹配这一初始状态;如果工程已经变化,旧结果就不能直接应用。
命令层还会检查:
- 片段与素材 ID 是否真实存在;
- 时间范围是否有效;
- 操作是否受支持;
- 媒体是否已经准备好;
- 相关轨道是否锁定。
在启用自动应用时,普通编辑可以在校验通过后由宿主提交,并返回“查看变更”和“撤销”回执。新旁白和音频处理等需要试听的结果,则保留待确认状态。
因此,“自动完成”依然有明确边界:系统可以自动执行已授权且通过校验的操作,同时保留试听、检查与撤销入口。
五、让模型看到必要的素材证据
仅靠文件名,模型很难理解一个视频。
ChatCut 可以在用户允许的范围内读取素材帧,并将画面证据提供给模型。当前实现根据素材 ID 和源时间获取帧,不接受任意地址作为素材入口。
采样使用独立解码器,不拖动用户正在观看的预览。单次最多读取六帧,每轮对话最多十八帧。
这适合回答局部问题,例如:
这个时间点的产品有没有完整入镜?
但少量采样不能证明模型理解了整段视频,也不能直接代替精确切点检测或音频转写。
通过保留素材身份、源时间和采样预算,系统能够明确区分“实际看到了什么”和“仍然缺少什么证据”。
六、视频生成采用真实的异步任务流程
视频生成通过 Anna 官方宿主接口接入,核心调用为:
video.generate
video.getJob
工作流程为:
用户明确提出生成需求
↓
构造模型请求与参数
↓
提交任务,取得 jobId
↓
查询任务状态
↓
下载真实视频文件
↓
解码检查并保存到“我的素材”
生成成功后,应用会取得媒体字节,检查视频是否可解码,再提供预览。
项目已经记录过一次真实文生视频验证:提交 5 秒、480p、16:9 请求,返回了可播放的视频,下载后检查为 H.264 视频和 AAC 音轨,时长约 5.18 秒。
这说明该请求路径完成了从提交到素材保存的闭环,但不代表所有模型、分辨率和参考输入组合都已经验证。
视频生成还依赖平台为应用授予相应权限,并消耗用户的 Anna CU。用户选中了某个模型,并不自动代表应用已经具备调用权限。
七、生成素材与插入时间线分开处理
生成成功,不一定意味着用户已经认可结果。
因此,视频生成默认只创建素材,不自动改动时间线。用户可以先播放检查,再决定是否插入。
只有在用户明确要求放置时,ChatCut 才继续准备相应编辑操作。
生成成功 → 素材可用
用户要求放置 → 时间线发生变化
这种设计也让失败恢复更清晰:下载失败可以继续处理已有任务结果,放置失败可以重新检查工程,不必把所有步骤都重新执行一遍。
八、音乐生成要先理解模型能力
音乐生成同样通过 Anna 官方连接器接入,但不能给所有模型套用同一组参数。
不同模型可能支持不同的:
- 提示词长度;
- 歌词输入;
- 纯音乐模式;
- 时长范围;
- 输出格式。
应用先通过只读目录查询获取音乐模型能力:
llm.catalog({
serviceType: "music_gen"
});
再根据所选模型构造请求。
例如,固定时长模型不应收到应用随意填写的时长;支持歌词的模型使用官方 lyrics 字段;不支持的选项应当明确隐藏或拒绝。
这样,界面展示和实际请求才能保持一致。
九、音乐任务如何避免重复提交
音乐生成可能产生计费,因此网络中断后的恢复尤其重要。
当前连接器在提交前保存准确请求和 UUID 幂等键。后续恢复优先查找同一任务,而不是立即创建新的生成请求。
对于已经成功、但下载失败的任务,也应继续下载原结果。
例如,下载链接过期返回 403 时,流程是:
查询原任务
↓
取得更新后的结果链接
↓
重新下载同一份音频
这里不会再次调用 generate 来重新作曲。
成功下载后,共享媒体层解码音频、读取时长并生成波形,再将其保存为音乐素材。播放使用已下载文件的对象地址,避免依赖短期有效的签名链接。
十、生成音乐之后,剪辑还需要节奏证据
音乐生成和卡点剪辑是两个相邻但不同的问题。
一段音乐生成成功后,如果只是根据固定 BPM 等间隔切镜,未必能够贴合真实的鼓点、重音和段落变化。
因此,ChatCut 后续接入的方向是让上传音乐与生成音乐共用分析流程:
音乐文件
↓
解码与波形
↓
节拍、重音候选与时间点
↓
模型结合素材规划切镜
↓
检查切点、素材长度与来源 ID
↓
应用到时间线
模板提供初始剪辑知识,实际安排则需要结合音乐证据和用户需求。
这一部分目前仍在工作草稿中推进,包括 ChatCut 音乐生成入口、音乐分析与模板混剪,不应与已公开上线能力混为一谈。官方音乐连接器已经实现,但现有验证记录也尚未覆盖真实付费音乐生成的最终音质。
十一、导出复用编辑器已有的合成能力
对话编辑完成后,ChatCut 可以准备导出整个时间线、选中片段或指定区间。
导出复用现有合成器,保留对应范围内的字幕、效果和音频。聊天请求可以先准备导出计划,实际开始由界面中的导出操作触发。
这种方式让手动编辑和对话剪辑共享输出逻辑,减少两条渲染路径之间的差异。
它也再次体现了这套架构的特点:云端提供模型能力,浏览器维护工程与合成结果,用户通过同一界面完成整个流程。
十二、部署时为什么需要平台适配层
Timeline Studio 的独立站和 Anna 版本共享编辑器基础,但运行环境不同。
Anna 版本通过适配层接入:
LLM 请求
官方媒体生成接口
应用权限
账号范围内的工程保存
平台存储与任务状态
平台调用需要在应用声明中列出对应能力,例如视频或音乐宿主接口。浏览器还需要满足宿主的 CSP、媒体访问和下载限制。
业务代码通过平台接口请求服务,不在前端嵌入第三方模型供应商密钥。
这些适配使应用能够复用平台的模型与账号能力,同时继续维护自己的时间线、预览和素材管理逻辑。
十三、源码从哪里开始看
如果想了解具体实现,可以从以下入口开始:
src/lib/annaChatCut.js
对话工具循环、状态保护与操作回执
src/lib/annaRuntime.js
Anna 宿主接口适配
src/plugins/generation/providers/anna/
视频与音乐生成连接器
docs/anna-chatcut.md
ChatCut 工作流程与能力边界
docs/anna-video-generation.md
视频生成集成与验证记录
docs/anna-music-generation.md
音乐模型能力、任务恢复与验证状态
需要区分两个版本:独立站提供 Timeline Studio 的浏览器编辑体验,本文介绍的平台模型调用和 ChatCut 属于 Anna 版本,具体可用范围取决于发布版本、账号授权及模型服务。
ChatCut 的目标,是让用户在浏览器里通过对话组织创作:处理已有素材,调用云端服务补充画面与音乐,再回到可编辑时间线中检查、调整和交付。
如果你正在研究浏览器视频编辑、Agent 工具调用或云端媒体生成,欢迎阅读代码,也欢迎通过 Issue 提交实际场景和失败案例。
GitHub 仓库:MartinDelophy/ai-video-editor
Anna 集成文档:查看技术说明
独立站编辑器:Timeline Studio