当前位置: 首页 > news >正文

OBS + Shotcut + Kdenlive:用 CLI 把视频制作流程串起来

视频工具链的 CLI 困境

视频制作软件在所有专业软件里,对 Agent 最不友好——界面复杂、操作高度依赖鼠标、几乎不存在友好的命令行接口。

OBS Studio 没有官方 CLI。Shotcut 和 Kdenlive 虽然底层都用 MLT(Media Lovingly Toolkit),但官方没有把 MLT 接口暴露出来。结果就是:你想用命令行自动化视频流程,几乎只能靠屏幕录制然后 ffmpeg 后处理,质量大打折扣。

CLI-Anything 给这三款软件都生成了 CLI。这篇文章展示的是:三个不同的视频工具,通过 JSON 项目文件作为中间格式,能不能被 Agent 用命令行串联成一个完整的工作流。


工具链概览

OBS Studio  → 录制原始素材(obs-studio CLI 控制场景配置)↓
Shotcut     → 粗剪、时间线编排(shotcut CLI 操作 MLT XML)↓
Kdenlive    → 精调、色彩校正(kdenlive CLI 深层调色)↓
ffmpeg      → 最终压制(直接调用系统命令)

三个工具各有分工:OBS 负责采集,Shotcut 负责快速剪辑,Kdenlive 负责精细调色,ffmpeg 负责最终输出。


第一步:OBS 场景配置

OBS 的 CLI 通过 obs-websocket 插件实现远程控制。如果你的 OBS 已经装了 websocket 插件,可以远程配置场景:

# 创建直播场景
$ cli-anything-obs-studio scene new --name "LiveStream"
✓ Created scene: LiveStream# 添加来源(视频捕获、设备、窗口)
$ cli-anything-obs-studio source add \--scene LiveStream \--type video_capture \--name "Camera1" \--device "/dev/video0"✓ Added video capture source: Camera1$ cli-anything-obs-studio source add \--scene LiveStream \--type image \--name "Logo" \--file ./logo.png✓ Added image source: Logo# 设置 Logo 位置(左上角)
$ cli-anything-obs-studio source transform \--scene LiveStream \--source Logo \--position-x 0 \--position-y 0 \--width 320 \--height 180✓ Transformed source: Logo (pos: 0,0 size: 320×180)# 启动录制
$ cli-anything-obs-studio recording start
✓ Recording started: ./obs_recordings/live_20260322.mp4

如果你的场景不需要实时录制,可以直接导出 OBS 的场景配置:

$ cli-anything-obs-studio scene export \--scene LiveStream \--output ./live_scene.json✓ Exported scene config: live_scene.json

第二步:Shotcut 粗剪

Shotcut 的项目文件格式是 MLT XML。CLI 操作的是这个 XML 文件,不需要真正打开 Shotcut GUI。

# 创建项目
$ cli-anything-shotcut project new --name "ProductDemo"
✓ Created project: ProductDemo.mlt# 导入素材(通过本地文件路径)
$ cli-anything-shotcut clip add \--project ProductDemo.mlt \--file ./obs_recordings/live_20260322.mp4 \--name "raw_footage"$ cli-anything-shotcut clip add \--project ProductDemo.mlt \--file ./product_shots.mp4 \--name "product_shots"✓ Added clip: raw_footage (4m32s)
✓ Added clip: product_shots (1m15s)# 粗剪:截取需要的片段
$ cli-anything-shotcut clip trim \--project ProductDemo.mlt \--clip raw_footage \--in 0:32 \--out 2:15✓ Trimmed: raw_footage → 1m43s (in: 0:32, out: 2:15)$ cli-anything-shotcut clip trim \--project ProductDemo.mlt \--clip product_shots \--in 0:05 \--out 0:45✓ Trimmed: product_shots → 0:40s (in: 0:05, out: 0:45)# 把片段放到时间线上
$ cli-anything-shotcut timeline add \--project ProductDemo.mlt \--track V1 \--clip raw_footage$ cli-anything-shotcut timeline add \--project ProductDemo.mlt \--track V1 \--clip product_shots \--position 0:01:43✓ Timeline: 2 clips, total duration 2:23

Shotcut 的中间文件(MLT XML)是可以直接用 melt(MLT 的命令行播放器/渲染器)渲染的:

# 用 melt 预览(不打开 GUI)
melt ProductDemo.mlt -consumer avformat:preview.mp4 vcodec=libx264# 或者导出完整视频
melt ProductDemo.mlt -consumer avformat:./shotcut_export.mp4 \vcodec=libx264 crf=23 acodec=aac

第三步:Kdenlive 精细调色

Kdenlive 也用 MLT,但比 Shotcut 有更深的项目结构。CLI 用来做精细调色和 LUT 应用:

# 创建 Kdenlive 项目
$ cli-anything-kdenlive project new --name "ProductFinal"
✓ Created Kdenlive project: ProductFinal.kdenlive# 导入 Shotcut 的中间文件(两个工具都是 MLT 生态,可以复用)
$ cli-anything-kdenlive clip add \--project ProductFinal.kdenlive \--file ./shotcut_export.mp4 \--name "main_clip"✓ Added clip: main_clip# 添加到时间线
$ cli-anything-kdenlive timeline add \--project ProductFinal.kdenlive \--track V1 \--clip main_clip✓ Added to timeline: main_clip# 调整速度(放慢到 0.75x)
$ cli-anything-kdenlive clip speed \--project ProductFinal.kdenlive \--clip main_clip \--speed 0.75✓ Adjusted speed: 0.75x (duration: 3:11)# 应用色彩校正
$ cli-anything-kdenlive color grade \--project ProductFinal.kdenlive \--clip main_clip \--brightness +10 \--contrast +15 \--saturation +5✓ Applied color grade to main_clip# 导出项目
$ cli-anything-kdenlive render \--project ProductFinal.kdenlive \--output ./final_export.mp4 \--preset "H.264 High Quality"✓ Exported: ./final_export.mp4 (H.264, 1920×1080, 3:11)

第四步:ffmpeg 最终压制

# 加上片头片尾
ffmpeg -i ./final_export.mp4 \-i ./intro.mp4 \-i ./outro.mp4 \-filter_complex \"[0:v][1:v][2:v]concat=n=3:v=1:a=0[outv]" \"[0:a][1:a][2:a]concat=n=3:v=0:a=1[outa]" \-map "[outv]" -map "[outa]" \-c:v libx264 -crf 20 -preset slow \-c:a aac -b:a 192k \./product_demo_final.mp4

Agent 视角:完整的视频工作流

把上面的流程整合到一个 Agent 任务里:

帮我制作一个产品演示视频:
1. 用 OBS 配置直播场景(摄像头+Logo)
2. 录制 5 分钟的原始素材(存为 raw_footage.mp4)
3. 用 Shotcut 截取素材中 1-3 分钟的部分,加入产品图片(product.jpg)
4. 用 Kdenlive 做色彩校正,调整为 16:9 竖屏比例
5. 用 ffmpeg 加上片头(intro.mp4)和片尾(outro.mp4)
6. 输出最终视频到 ./output/final.mp4

Agent 收到这个任务后,会自动分解成上面的具体命令序列,用 JSON 模式获取每个步骤的状态,然后按顺序执行。整个过程不需要人在 GUI 里点一下鼠标。


为什么 JSON 文件是粘合剂

回顾整个工作流,每个工具之间传递数据的媒介是项目文件

OBS 场景配置 (JSON)↓
Shotcut 项目 (MLT XML)↓
Kdenlive 项目 (MLT XML)↓
ffmpeg 命令参数 (命令行)

这种模式的好处是:每个工具都是独立的,可以单独测试,单独替换。如果你不想用 Shotcut,换成 Kdenlive 的粗剪功能也可以。JSON 和 MLT XML 作为中间格式,让工具链变成了可插拔的。

http://www.jsqmd.com/news/533886/

相关文章:

  • 千问3.5-27B效果展示:服装设计图→面料建议→搭配方案与文案生成
  • 分析淮南科贸学校,安全保障、口碑情况及校庆活动丰富度如何 - mypinpai
  • 2026年多路温度测试仪厂家推荐:电机综合测试仪/耐压测试仪/EMC测试系统专业供应商精选 - 品牌推荐官
  • 船舶航拍图像目标检测数据集-9697张训练图像-768x768像素-完整标注信息-支持YOLOv8模型训练-适用于海事监控搜索救援环境监测
  • 2026年深度剖析家庭室内装修公司 珠海室内装修公司服务哪家可靠 - mypinpai
  • 2026年江苏钢跳板成型设备来图定制费用多少,了解一下 - 工业设备
  • 网盘直链解析工具:突破下载限制的高效解决方案
  • 少走弯路:盘点2026年好评如潮的AI论文平台
  • 正则表达式八:子表达式匹配
  • CosyVoice在企业内网的应用:结合内网穿透技术实现安全访问
  • 如何用Fiji构建高效的生物医学图像分析工作流
  • 【环境搭建与避坑指南】从BundleSDF到se(3)TrackNet:新硬件下的物体姿态检测实战部署
  • Unity游戏模组加载全攻略:基于MelonLoader的跨引擎解决方案
  • 【Python大模型部署硬件黄金标准】:20年AI基建专家亲授GPU内存/CPU/存储临界值配置清单
  • 纯Verilog编程:万兆网以太网UDP协议的完整实现与产品化测试
  • 2026年留学机构排名,申请俄罗斯体育专业选哪家性价比高 - 工业设备
  • Qwen3.5-4B-Claude-Opus惊艳效果展示:二分查找O(log n)三步推导真实案例
  • 2026年不动产资产管理系统哪个好用?优质厂商全解析 - 品牌2026
  • Python内存泄漏总在凌晨爆发?:4步诊断流程+7个生产环境避坑清单(附内存快照分析脚本)
  • 从噪声到数字:手把手用PyTorch复现NCSN生成MNIST手写数字(附完整代码)
  • gh_mirrors/dnf/dnf容器化部署与多环境适配技术指南
  • NaViL-9B GPU算力适配教程:双24GB卡显存占用与性能监控方法
  • 83. 由机器池排序引起的非预期的 terraform 配置漂移
  • godot GridContainer 学习笔记
  • DeepSeek-OCR-2作品展示:多语言混合文档识别效果实测
  • 2026重庆留学机构排名,想去加拿大读高中机构哪家性价比高 - 工业品网
  • 从ControlStrip进程到NVRAM重置:一次搞懂Mac Touch Bar控件管理的底层逻辑
  • LFM2.5-1.2B-Thinking-GGUF镜像免配置:内置模型+运行时+UI,真正零依赖开箱即用
  • 达梦数据库迁移到mysql
  • 行马APP正规靠谱走路赚钱让运动收益方式轻松实现 - 博客万