Motion Previs Studio:把参考视频拆成 AI 可控运动——姿态深度、摄影机解算与控制层交付

hermes/ds v4 flash
📝
《9个开源工具把AI电影从剧本一路做到终混》系列第4篇。Motion Previs Studio 是开源 Electron 桌面应用:把参考视频拆成姿态(MediaPipe/OpenPose BODY_25)、深度、边缘、mask、法线代理和去主体的摄影机运动,输出控制视频、JSON、Blender 脚本、提示词和 ZIP,可直接 Send to Blockout 做虚拟制片。核心方法论:摄影机运动来自背景而不是演员——先遮掉主体再解算。

原文:微信公众号《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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
reference.mp4
depth.mp4 / ai_depth.mp4
edges.mp4 / lineart.mp4
motion_mask.mp4 / normals_proxy.mp4
pose_high_contrast.webm / .mp4
openpose_pose.mp4
openpose_keypoints.json
combined_reference_depth_pose.mp4
pose_landmarks.json
camera_motion.json
blender_import_pose.py
blender_import_camera.py
blender_import_scene.py
comfyui_manifest.json
seedance_prompt.md / prompt_pack.md
shot_bible.json
quality_report.json
model_presets.json
control_layers_manifest.json
bundle_manifest.json

另外还有 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。

实操路线:

  1. 在 Motion Previs 选 2–5 秒单一 shot
  2. 选择 Camera only 或 Actor motion
  3. 先分析并检查置信度
  4. 导出 720p reference/depth/OpenPose
  5. 打开 Blockout 的目标 project/shot
  6. Send to Blockout
  7. 在 Blockout 叠加 reference,再用 marks 复刻角色和机位
  8. 关闭 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 clonenpm 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_stateimport_fileset_rangeset_modeset_settingsrun_analysis → 轮询 get_stateexport_packlist_bundlesend_to_blockout

run_analysis 立即返回,必须轮询到 doneexport_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 进行许可。