Hotdry.
ai-systems

Cardboard 多代理视频编辑:自然语言意图解析到 FFmpeg 命令与迭代预览

基于 Cardboard 的多代理架构,实现自然语言驱动视频编辑,包括意图解析、视觉分析、FFmpeg 命令生成及实时迭代预览的工程参数与清单。

在 AI 驱动的视频编辑领域,多代理编排已成为关键技术,能将用户的自然语言意图高效转化为精确的编辑操作。以 Cardboard 为代表的 agentic 视频编辑器,通过多代理协作实现从意图解析到最终输出的全链路自动化。本文聚焦其核心机制:意图解析至 FFmpeg 命令生成、视觉分析集成,以及迭代实时预览的落地参数,帮助开发者构建类似系统。

多代理架构概述

多代理系统将复杂视频编辑任务分解为专责模块:规划代理(Planner Agent)负责自然语言意图解析,视觉分析代理(Vision Agent)提取帧级特征,命令生成代理(Command Agent)输出 FFmpeg 指令,预览代理(Preview Agent)支持迭代反馈。这种分工协作避免单模型瓶颈,提升鲁棒性和可解释性。

例如,用户输入 “从这段演讲视频中剪辑出 30 秒高光时刻,添加字幕并加速 1.5 倍”,Planner Agent 先将意图结构化为 JSON plan:{"duration":30, "type":"highlights", "effects":[{"speed":1.5, "captions":true}]}。随后,Vision Agent 使用多模态 LLM(如 GPT-4V 或 CLIP)分析音频情感峰值和视觉注意力图,Command Agent 据此生成 FFmpeg 链:ffmpeg -i input.mp4 -ss 00:01:20 -t 00:00:30 -vf "subtitles=sub.srt,setpts=PTS/1.5" output.mp4。

Cardboard 正是通过此类语义映射实现 “描述变化即编辑”。“Cardboard understands the semantic meaning of your request and maps it to complex timeline operations automatically。”

意图解析模块的参数优化

意图解析是多代理入口,使用 LLM(如 Claude 3.5 或 Llama 3.1)以工具调用模式执行。关键提示模板:

你是一个视频编辑规划师。将用户意图解析为结构化计划:
- clips: [{start:秒, end:秒, reason:字符串}]
- effects: [{type:"speed", value:浮点数}, {type:"captions", lang:"zh"}]
- constraints: {total_duration:秒, resolution:"1080p"}
用户输入:{user_prompt}
输出仅 JSON。

参数设置:

  • Temperature: 0.1(确保确定性)。
  • Max tokens: 512(覆盖复杂计划)。
  • Retry limit: 3 次,若 JSON 无效则 fallback 到简单规则解析(如关键词匹配 “剪辑”→trim)。

风险控制:解析准确率阈值设为 85%,低于此使用人工审核队列。测试数据集:100 个多样提示,覆盖 talking heads、montages 等场景。

视觉分析与特征提取

视觉代理集成计算机视觉工具(如 OpenCV + SAM)与多模态模型,生成 clip 元数据:物体检测、场景变化、情感分数。

落地清单:

  1. 帧采样率:每秒 1 帧(平衡精度 / 速度)。
  2. 特征向量:CLIP embedding (dim=512),余弦相似度阈值 >0.8 匹配 “高光时刻”。
  3. 音频分析:VAD(Voice Activity Detection)阈值 -30dB,结合 Whisper 转录情感关键词(如 “激动”)。
  4. 输出格式:JSON array [{"timestamp":120, "score":0.92, "tags":["speaker", "gesture"]}]。

在 Cardboard 中,此模块支持 “Find anything” 语义搜索,直接从 raw footage 定位内容。

FFmpeg 命令生成与执行

Command Agent 使用 few-shot prompting 将 plan 转为可执行 FFmpeg:

示例提示:

基于 plan 生成 FFmpeg 命令。支持 filter_complex 如 drawtext 字幕。
Plan: {plan}
输入文件:input.mp4
确保无损,输出 MP4 H.264。

典型命令参数:

  • Trim: -ss {start} -t {duration}
  • Speed: -filter:v "setpts=PTS/{speed}"
  • Captions: -vf subtitles={srt_file},drawtext=fontfile=/path:fontsize=24:textfile=captions.txt
  • Concat: 使用 concat demuxer,预生成 txt 文件列表。
  • 质量:-crf 18(视觉质量),-preset fast。

安全沙箱:Docker 容器执行,超时 300s,内存限 2GB。错误处理:若命令失败(如 invalid timestamp),ReAct 循环让 Agent 自修正。

迭代实时预览机制

预览代理嵌入 WebSocket + FFmpeg thumbnail 生成,实现亚秒级反馈。

参数:

  • Preview resolution: 480p,duration 10s clip。
  • 生成命令:ffmpeg -ss {pos} -t 10 -vf scale=854:480 -r 15 thumb_%03d.jpg
  • 反馈循环:用户 “太快了” → Planner 调整 speed=1.2,Vision 验证视觉流畅度(optical flow variance <0.5)。
  • 迭代上限:5 轮,累计时延 <2min。

监控指标:

指标 阈值 告警
端到端延迟 <30s PagerDuty
解析准确率 >90% A/B 测试
FFmpeg 失败率 <5% 日志聚合
预览满意度 NPS>8 用户反馈

回滚策略:始终保留原始 footage,one-click 撤销至上版。

实施清单与扩展

构建类似系统 checklist:

  1. 栈:LangChain/LangGraph (编排), FFmpeg (执行), Gradio/Streamlit (UI)。
  2. 模型:开源优先,Llama-Vision + Grok for planning。
  3. 部署:Vercel + Supabase (storage), Ray Serve (代理池)。
  4. 成本:FFmpeg GPU 加速,预览用 CPU。
  5. 测试:合成数据集(1000 clips),指标:BLEU for captions, FID for visual quality。

此架构不仅复制 Cardboard 的 agentic 能力,还可扩展至直播剪辑或 AR 视频。

资料来源

(正文字数:约 1050 字)

查看归档