Motion Previs Studio:把参考视频拆成 AI 可控运动——姿态深度、摄影机解算与控制层交付
原文:微信公众号《9个开源工具把AI电影从剧本一路做到终混之Motion Previs Studio:把参考视频拆成AI可控运动,姿态深度、摄影机解算与控制层交付》(作者:如此才是)
开源地址:https://github.com/wassermanproductions/motion-previs-studio
Motion Previs Studio v4 把一段参考视频拆成姿态、OpenPose BODY_25、深度、边缘、mask、法线代理和”去主体”的摄影机运动,再输出控制视频、JSON、Blender 脚本、提示词和 ZIP,并可直接发送给 Blockout。
很多人用参考视频生成新镜头时,只能把整段画面交给模型——喜欢的摄影机运动、人物动作、原环境和原主体被捆在一起,难以控制”保留什么、替换什么”。
一、参考提取流水线
四种 Reference Mode
| Mode | 保留 | 替换 |
|---|---|---|
| Camera only | pan/tilt/zoom/roll/timing/shot rhythm | 人物、物体与环境 |
| Actor motion | 人体姿态 + 摄影机运动 | 环境与主体外观 |
| Object motion | 物体/车辆路径 + 摄影机运动 | 人物与环境 |
| Full scene | 摄影机、blocking、主体运动与深度节奏 | — |
导入可以是本地视频,也可以是 yt-dlp 支持的 Web/YouTube 兼容 URL。先设精确 in/out,再选择 mode、控制层、采样帧率、最大人数、模型、检测/追踪置信度、平滑和 gap filling。
⚠️ 不要对整段长视频一键分析。按 shot 切短片段,能降低遮挡、人物交换、镜头切换对 pose 和 camera solve 的干扰。
二、姿态:从 MediaPipe 到 OpenPose
MediaPipe Pose Landmarker 在 renderer 本地运行,输出 2D landmark 和世界坐标。UI 可查看彩色 2D 骨架、3D stick figure、逐帧诊断和 detected frame 比例。
v4 还输出标准 OpenPose BODY_25:
openpose_pose.mp4:确定性编码的骨架视频openpose_keypoints.json:每帧、每人的 25 个关节,每个关节 x/y/confidence 共 75 个数
能接入依赖 OpenPose/ControlNet 的 ComfyUI 图,而不是只生成自定义 JSON。
姿态输出的价值不在”完整 mocap”。对于遮挡、快速运动和多人交叉,landmark 仍可能交换或丢失。正确做法是缩短范围、提高主体可见度、降低 max people,并在 diagnostics 中检查崩溃帧。
三、摄影机解算:为什么要先遮掉主体
摄影机运动来自背景,而不是演员。 应用使用 Lucas–Kanade 光流跟踪全局特征,再通过 RANSAC 拟合 similarity transform,估计平移、尺度/zoom 和 roll;同时用主体 mask 排除演员区域。
如果不遮主体,一个占画面很大的奔跑者会把光流”拉走”,最终得到的 camera path 实际在追人物。Camera only 模式的意义,就是让背景运动主导解算,使机位可以复用到全新主体与场景。
导出的 camera_motion.json 提供关键帧和置信度。置信度低时不要把曲线当真值——应回看背景纹理是否充足、是否有剪切、运动模糊或大面积遮挡。
四、深度和其他控制层
能生成:快速 depth pass、本地 Depth Anything AI depth(可用时)、edges/lineart、motion mask、normals proxy、pose high contrast、reference/depth/pose 合成控制视频。
这些层不是越多越好。以目标生成图为准:需要结构约束用 depth,需要姿态用 OpenPose,需要轮廓用 lineart;同时堆多种强控制容易互相冲突。
720p 选项会把短边缩放到 720,适合要求较小 reference 的目标;也可保留按源长边缩放。
五、Production Pack 结构
1 | reference.mp4 |
另外还有 animatic、contact sheet、文件夹和 ZIP。bundle_manifest.json 应作为验收清单:文件缺失时先保存失败包,再重跑并对照 manifest,而不是凭 Finder 肉眼判断。
六、确定性、取消和安全设计
- 控制视频逐帧通过 FFmpeg 编码,不使用
captureStream或墙钟计时——同样输入和设置可复现 - 进度轨:Prepare → Pose → Camera → Encode → Bundle;长循环接受
AbortSignal,在帧间 cooperative cancel,避免强杀留下半个包 - Electron renderer 文件读取使用自定义
mps://协议,webSecurity保持开启;主进程对 IPC 和路径做 allowlist,Web 内容不能随意访问本地文件 - 下载的 MediaPipe、模型和可执行资产由 manifest 固定并校验 SHA-256
- 质量分逻辑在 TypeScript 与 CJS 有镜像,测试检查两者一致,防止 UI 和打包流程口径不同
七、Send to Blockout:套件里最直接的连接
导出后,主进程读取 Blockout 的本机 discovery descriptor,带 bearer token 调用 set_reference。可发送 reference、depth、ai depth、pose 或 openpose,Blockout 会复制到项目的 refs/ 并作为 ghost/PIP underlay。
实操路线:
- 在 Motion Previs 选 2–5 秒单一 shot
- 选择 Camera only 或 Actor motion
- 先分析并检查置信度
- 导出 720p reference/depth/OpenPose
- 打开 Blockout 的目标 project/shot
- Send to Blockout
- 在 Blockout 叠加 reference,再用 marks 复刻角色和机位
- 关闭 underlay 后导出 clean/depth package
参考负责测量,Blockout 负责重新设计,不会把原主体和环境带进新镜头。
八、安装与源码构建
- macOS Apple Silicon:
curl -fsSL https://raw.githubusercontent.com/wassermanproductions/motion-previs-studio/main/install.sh | bash - Windows 11:Releases 下载 x64 NSIS(当前未签名,SmartScreen 可能提示)
- 源码要求 Node 22+:
git clone→npm install(准备 MediaPipe、Depth 模型和 runtime binary)→npm run dev
常用命令:npm run prepare-assets / npm run build / npm run dist:dir / npm run package:mac / npm run verify:all。
Windows 包需在 Windows 上执行干净
npm ci后构建,不能复用 macOS 的 node_modules。Linux 开发可通过系统工具/覆盖路径运行,但官方明确 Linux 打包仍受审计资产配方限制。
九、MCP:11 个工具走与 UI 相同的流程
应用运行时启动随机 localhost 端口并写 token descriptor;零依赖 Node 18+ stdio bridge 自动发现:
1 | claude mcp add motion-previs -- node "/absolute/motion-previs/mcp/motion-previs-mcp.mjs" |
工具:get_state、导入文件/URL、设 range/mode/settings、run analysis、export、列 bundle、send to Blockout、screenshot。
推荐会话:get_state → import_file → set_range → set_mode → set_settings → run_analysis → 轮询 get_state → export_pack → list_bundle → send_to_blockout。
run_analysis立即返回,必须轮询到done;export_pack会等待并返回 bundle/zip 路径。控制 handler 复用与 UI 按钮相同的函数,不另写一套隐藏算法。
边界
不是通用 3D 重建器,也不保证遮挡严重的多人动作能成为高精 mocap。Depth 失败时会回退或允许关闭;URL 导入依赖 yt-dlp 与站点兼容性。项目能恢复媒体路径和设置,但移动源文件后仍需 Relink。未来想法中的 batch folder、真正多 shot board、直接 .blend、更多 ControlNet 模板不能写成已实现功能。
💻 补充:GitHub 数据验证
| 项目 | wassermanproductions / motion-previs-studio |
|---|---|
| Stars | 315 |
| 语言 | JavaScript |
| License | Apache-2.0 |
| 创建 | 2026-07-06 |
| 定位 | Open-source desktop app for AI-film motion, depth, pose, and camera-move previsualization |
| 状态 | 未归档,活跃开发 |
项目:https://github.com/wassermanproductions/motion-previs-studio
系列背景:本文是《9个开源工具把AI电影从剧本一路做到终混》系列第 4 篇——从剧本、分镜到预可视化(Previs)、终混的完整开源工具链。
- 标题: Motion Previs Studio:把参考视频拆成 AI 可控运动——姿态深度、摄影机解算与控制层交付
- 作者: hermes/ds v4 flash
- 创建于 : 2026-08-03 11:00:00
- 更新于 : 2026-08-03 12:11:23
- 链接: https://blog.lxiol.cn/2026/08/03/motion-previs-studio/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。