ffmpeg-agent:用自然语言剪视频的 AI 工具设计
一句话总结
给 ffmpeg 套一层自然语言接口,让"剪掉前30秒"直接变成正确的 ffmpeg 命令并执行。
为什么做这个?
ffmpeg 是视频/音频处理的瑞士军刀,几乎所有视频工具的底层都在用它。但它的命令行语法对普通人来说是噩梦:
# 你想做的事:把视频的第1分钟到第3分钟剪出来,加个淡入淡出
# 你要写的命令:
ffmpeg -ss 60 -to 180 -i input.mp4 -vf "fade=t=in:st=0:d=1,fade=t=out:st=119:d=1" -c:a aac output.mp4
400+ 个参数,参数顺序影响行为(-ss 放在 -i 前后效果不同),编码器/容器兼容性要记,硬件加速的 flag 各平台不一样……
核心想法:LLM 已经非常熟悉 ffmpeg 的参数语法了,让它当翻译器,用户说人话,agent 出命令。
两条产品路线
路线 A:Agent Skill(我们选的)
把自然语言→ffmpeg 的能力做成 AI agent 的一个技能模块。
优点:
- 1-2 天能搞定
- 天然有文件系统、对话能力、多模态支持
- 跟已有工作流无缝衔接(足球剪辑、播客处理、B站上传)
- 不需要单独的 UI
局限:
- 单轮翻译,没有可视化预览
- 依赖宿主 agent 框架
路线 B:独立产品
多轮对话 + 实时预览的视频编辑工具。
优点:
- "先粗剪→看效果→再调整"的交互体验
- 可以做 Web UI,面向更广用户群
挑战:
- "预览"是大坑——渲染耗时,要么生成缩略图,要么搞流式预览
- 竞品多(Descript、Runway、CapCut 都在往 AI 剪辑走)
- 开发周期长
我们的策略:先做 Skill,跑起来用着,积累哪些指令最常用、哪里容易出错的经验,再决定要不要做独立产品。
架构设计
用户输入(自然语言)
↓
[1] 意图解析 — 理解操作类型(剪切/合并/压缩/...)
↓
[2] 文件探测 — ffprobe 获取元数据(时长、编码、分辨率)
↓
[3] 命令生成 — 根据意图 + 元数据 + 平台生成 ffmpeg 命令
↓
[4] 确认执行 — 展示命令,等用户确认(dry-run 模式)
↓
[5] 执行 + 监控 — 运行命令,跟踪进度
↓
[6] 结果验证 — ffprobe 输出文件,确认符合预期
核心原则
| 原则 | 说明 |
|---|---|
| **先探测再操作** | 不猜参数,用 ffprobe 读文件元数据 |
| **先展示再执行** | 默认 dry-run,防止翻车 |
| **优先无损** | 能 `-c copy`(stream copy)就不重编码 |
| **硬件加速** | Mac 用 VideoToolbox,NVIDIA 用 NVENC,自动检测 |
| **不覆盖原文件** | 输出到新文件,命名规则:`input_trimmed.mp4` |
支持的指令(50+ 条)
✂️ 剪切
- "剪掉前30秒" / "去掉开头1分钟"
- "只要1:00到3:00" / "保留第2分钟到第5分钟"
- "要最后一分钟" / "保留最后30秒"
- "把视频分成3段"
- "去掉2:00到2:30这段"
🔗 合并
- "合并这几个视频" / "把 clip1 和 clip2 拼起来"
- "左右拼接两个视频" / "上下拼接"
📦 压缩 / 转码
- "压缩一下" / "文件太大了"
- "压到100MB以内"
- "压成适合发微信的大小"(≤20MB, 720p)
- "压成B站能传的"(H.264/H.265, ≤24Mbps)
- "转成mp4" / "转成mkv"
🖥️ 分辨率 / 画面
- "转成720p" / "缩小到1080p"
- "竖屏裁剪"(9:16)/ "裁成正方形"(1:1)
- "旋转90度" / "镜像翻转"
🎵 音频
- "提取音频" / "提取BGM" / "转成mp3"
- "去掉声音" / "静音"
- "音量大一点" / "音量标准化"
- "音频降噪" / "去掉静音段"
⏩ 速度
- "加速2倍" / "4倍速"
- "慢放" / "0.5倍速"
🖼️ 截图 / GIF
- "在1:30截图" / "每10秒截一帧"
- "做成gif" / "前5秒做成gif"
✨ 特效
- "淡入淡出" / "加水印" / "画中画"
- "调亮一点" / "加对比度" / "转黑白"
📝 字幕
- "加字幕"(烧录)/ "嵌入字幕"(软字幕)
ℹ️ 信息
- "这个视频多长" / "文件信息" / "什么编码"
组合指令也支持:"把这个视频压缩到720p然后剪掉前10秒"
技术细节
硬件加速自动检测
# Mac (M-series) — 5-10x faster than CPU
ffmpeg -i input.mp4 -c:v hevc_videotoolbox -q:v 60 -c:a aac output.mp4
# NVIDIA GPU
ffmpeg -i input.mp4 -c:v h264_nvenc -preset p4 -c:a aac output.mp4
# CPU fallback
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac output.mp4
平台码率参考
| 平台 | 最大码率 | 推荐 | 分辨率 |
|---|---|---|---|
| B站 | 24 Mbps | 15-20 Mbps | 4K/1080p |
| YouTube | 85 Mbps | 35-45 Mbps | 4K |
| Twitter/X | 25 Mbps | 5-8 Mbps | 1080p |
| 微信 | 20 MB 文件限制 | 2-4 Mbps | 720p |
| Discord | 25 MB (免费) | CRF 28 | 720p |
CRF 质量对照
| CRF 值 | 质量 | 适用场景 |
|---|---|---|
| 18 | 肉眼无损 | 母版保存 |
| 23 | 默认 | 通用 |
| 28 | 不错 | 上传/分享(体积减半) |
| 35 | 明显损失 | 预览/草稿 |
竞品分析
| 项目 | 形态 | 特点 | 链接 |
|---|---|---|---|
| **ai-ffmpeg** | Web 应用 | 浏览器内 ffmpeg.wasm + NL | [GitHub](https://github.com/woniu9524/ai-ffmpeg) |
| **AI Video Composer** | HuggingFace Space | HF 官方演示 | [HuggingFace](https://huggingface.co/spaces/huggingface-projects/ai-video-composer) |
| **ComfyUI-FFMPEGA** | ComfyUI 插件 | 节点化 NL→ffmpeg | [YouTube 演示](https://www.youtube.com/watch?v=UV2jBzSyb-k) |
| **FFmpeg-MCP** | MCP Server | AI agent tool call 封装 | [介绍](https://fast.io/resources/best-mcp-servers-video-processing/) |
| **ffmpeg-api.com** | SaaS API | 商业服务,按调用收费 | [官网](https://ffmpeg-api.com/docs/ai-processing) |
| **LAVE** | 学术论文 | LangChain + ChromaDB + ffmpeg | [arXiv](https://arxiv.org/html/2402.10294v1) |
| **VideoAgent** | 学术框架 | 理解+编辑+重制 | [GitHub](https://github.com/HKUDS/VideoAgent) |
竞品观察
- 大多数是 Web UI 或独立应用,没有做成 agent skill 的
- FFmpeg-MCP 最接近我们的思路,但它是通用封装,缺少场景化经验
- 没有一个杀手级产品跑出来 — 需求真实,但体验还没到位
- 学术方案(LAVE、VideoAgent)太重,不适合日常使用
我们的差异化
1. Agent Skill 而非独立应用 — 嵌入 AI agent 工作流,天然有文件系统+对话+多模态
2. 场景化经验 — 足球剪辑(音频峰值检测)、播客处理(Babel)、B站上传压缩
3. 硬件感知 — 自动检测平台,Mac 用 VideoToolbox,GPU 用 NVENC
4. 平台适配 — 内置各平台(B站/YouTube/微信/Discord)的码率和格式建议
未来方向
近期(用着再说)
- 积累高频指令和常见错误
- 优化命令生成的准确率
中期(有需求再做)
- VLM 辅助:接入视觉模型(如 Qwen2.5-VL),支持"找到进球瞬间"、"删掉黑屏"等需要理解画面内容的指令
- 批量操作模板:常见工作流一键执行(如"所有视频压缩到720p上传B站")
远期(验证后考虑)
- 独立产品化:多轮对话 + 可视化预览 + Web UI
- 实时预览:生成缩略图/关键帧让用户确认再渲染全片
文件结构
skills/ffmpeg-agent/
├── SKILL.md — Agent 工作流 + 命令模板 + 错误处理
├── scripts/probe.sh — 媒体文件快速探测脚本
└── references/
├── user-guide.md — 用户指令手册(50+ 条)
└── common-patterns.md — NL→意图映射 + 编码参考表
源码:github.com/xiaojay/tony skills/ffmpeg-agent/