开源项目解析
MotionCtrl
一个模型里分开控制镜头运动与物体运动。支持 SVD、VideoCrafter/LVDM、AnimateDiff 三种底座。
镜头位姿可指定轨迹要手画或从视频里提这一格唯一的开源方案
读懂层
2 张 · 架构图 / 流程图
DeepWiki 架构页 · 抓取 2026-08-16 · 核验 2026-08-16
DeepWiki 架构页 · 抓取 2026-08-16 · 核验 2026-08-16
镜头轨迹来自 RealEstate10K 的位姿文件;物体轨迹用 HandyTrajDrawer 手画,或用 ParticleSfM 从现成视频里提。
它管哪几个决定
镜头运动无可用手段
2/10 家有官方说法运动幅度与方向首尾帧约束
4/10 家有官方说法自持能力
权重在不在本地可下载到本地
种子能不能填不涉及
换掉它要动几处几处
权重可下载;换掉它就等于放弃镜头控制这一格
动手层
文档代码结构 未做踩过的坑实测 未做
装它要过哪几关
- 1选底座分支SVD / VideoCrafter / AnimateDiff 是三个不同分支,先定用哪个底座再克隆
- 2准备轨迹文件镜头轨迹用 RealEstate10K 位姿格式;物体轨迹用 HandyTrajDrawer 画
- 3跑推理`condtype` 决定控镜头、控物体、还是两个都控
改哪个文件能改什么
condtypecamera_motion / object_motion / both —— 这是这个项目的核心开关轨迹文件换镜头运动就是换这个文件,不用改代码坑在哪一处
带 issue 编号的来自:github issues 按回复数排序 · 核验 2026-08-16
项目活跃度停更 18 个月,星速 46/月。 但要公平地说:它 32 个月才涨 1.5k,而同类 CameraCtrl 停更更久(2024-05 之后没动过)。镜头运动这一格,官方侧 1/10、开源侧两个项目都已停更 —— 这不是选谁的问题,是整个方向还没人做成。(GitHub API 实测 · 核验 2026-08-16)
轨迹来源要么套 RealEstate10K 的数据格式,要么手画。没有「用自然语言描述镜头」这条路 —— 那正是它和提示词的区别,也是它的门槛
ParticleSfM从现成视频提物体轨迹要装它,仓库提到需要特定系统版本(CentOS 8.5)
教程
官方文档、作者本人的视频,以及 ComfyUI 官方给的原生工作流示例。每条都验过还打得开。
项目自述
以下是仓库 README 的开头部分(原文引用,抓取 2026-08-17)。读全文 ↗
MotionCtrl: A Unified and Flexible Motion Controller for Video Generation
[SIGGRAPH 2024 CONFERENCE PROCEEDINGS]
👉 MotionCtrl for [SVD], for [VideoCrafter], for [AnimateDiff]
   
🤗   🤗
🔥🔥🔥 We have released both Training and Inference code of MotionCtrl deployed on AnimateDiff
🔥🔥 We release the codes, models and demos for MotionCtrl on Stable Video Diffusion (SVD).
https://github.com/TencentARC/MotionCtrl/assets/19488619/45d44bf5-d4bf-4e45-8628-2c8926b5954a
Official implementation of MotionCtrl: A Unified and Flexible Motion Controller for Video Generation.
MotionCtrl can Independently control complex camera motion and object motion of generated videos, with only a unified model.
Results of MotionCtrl+AnimateDiff
Results of MotionCtrl+SVD
More results are in showcase_svd and our Project Page.
Results of MotionCtrl+VideoCrafter
More results are in our Project Page.
📝 Changelog
- [x] 20231225: Release MotionCtrl deployed on *LVDM/VideoCrafter*.
- [x] 20231225: Gradio demo available. 🤗
- [x] 20231228: Provide local gradio demo for convenience.
- [x] 20240115 More camera poses used for testing are provided in dataset/camera_poses
- [x] 20240115 Release MotionCtrl deployed on *SVD*. Codes are in the branch svd and Gradio Demo is available in 🤗 .
- [x] ❗❗❗ Gradio demo of MotionCtrl deployed on *VideoCrafter2* is available in 🤗 . You can also run it locally by python -m app --share.
- [x] ❗❗❗ Release MotionCtrl deployed on *AnimateDiff* are available in branch animatediff, containing both training and inference code.
- [x] 20240920 Provide scripts for collecting object trajectories with ParticleSfM.
- [x] 20240920 We provide a HandyTrajDrawer to customize object trajectories more conveniently.
⚙️ Environment
conda create -n motionctrl python=3.10.6
conda activate motionctrl
pip install -r requirements.txt
💫 Inference
- #### Run local inference script
1. Download the weights of MotionCtrl motionctrl.pth and put it to ./checkpoints.
2. Go into configs/inference/run.sh and set condtype as 'camera_motion', 'object_motion', or 'both'.
- condtype=camera_motion means only control the camera motion in the generated video.
- condtype=object_motion means only control the object motion in the generated video.
- condtype=both means control the camera motion and object motion in the generated video simultaneously.
3. Running scripts:
sh configs/inference/run.sh
- #### Run local gradio demo
python -m app --share
🔥🔥 Training 👉 Details
Preparing Dataset
- RealEstate10K
1. Following https://github.com/cashiwamochi/RealEstate10K_Downloader to download and process the videos.
2. Corresponding Captions and List are provided in GoogleDrive.
- WebVid with Object Trajectories
1. Preparing ParticleSfM. Our experiments is running on CentOS 8.5 and we provide a detailed install note in dataset/object_trajectories/ParticleSfM_Install_Note.pdf.
2. Moving dataset/object_trajectories/prepare_webvideo_len32.py and dataset/object_trajectories/run_particlesfm_obj_traj.py to ParticleSfM project.
3. Step 1: Prepare sub-videos with lenth of 32 and size of 256 x 256.
……(后略,见原文)判断
优势
- 这一格几乎唯一能用的开源方案 —— 官方侧 10 个核心模型里只有 1 家给了说法
- 镜头与物体分开控,不是混在一句提示词里
- 三种底座都能接,不锁死在某一个视频模型上
局限
- 停更 18 个月(最后提交 2025-02-19)—— 比星数少更要命:底座模型早已换代,它还停在 AnimateDiffV3/SVD 那一代
- 轨迹要么来自 RealEstate10K 数据集格式,要么手画,没有「随便描述一下」这条路
- ParticleSfM 装起来挑系统(仓库提到 CentOS 8.5),从现成视频提轨迹门槛高
不适用
只想要「镜头稍微动一下」的场景 —— 为此搭一套轨迹流水线不划算。
同管这些决定的其它项目
Wan2.2文生 / 图生 / 语音驱动 / 角色动画替换,480P–720P。五个变体。…FramePack把 13B 视频模型压进 6GB 显存的桌面程序。图生视频,一分钟长度、30 帧。…LTX-VideoLightricks 的视频生成模型,主打快。文生 / 图生 / 视频续写,默认 1…MiniMax H3全模态生成:文字、图片、视频、音频进同一个 Transformer,出带 32kHz…video-shotcraft为 Claude Code / Codex 提供产品宣传片镜头配方,以网页截图与文案…ComfyUI-WanVideoWrapper把 Wan 系列模型接进 ComfyUI 的节点包。社区里跑 Wan 的事实标准封装…Seedance 2.0 Prompt Skills给 Agent 装的 Seedance 2.0 提示词技能:讲输入约束、@ 引用语法…AI Shortfilm Prompts一个 Claude Code 技能:把任意一个想法变成电影语言的、模型直接能用的视频…Awesome Seedance 2 Prompts整理好的 Seedance 2.0 视频提示词库,README 自述逾六千条,覆盖电…
github README · 核验 2026-10-19 | 判断栏可报错。