在Node Video里,想让角色精准复刻参考视频中的舞蹈动作,同时还能保持面部表情的自然同步?光靠一个节点堆参数可不够,得让动作迁移和表情追踪两个模块协同工作才行。

进入正题,开始说具体的操作流程。
安装MimicMotion与Reactor Node双扩展
先打开ComfyUI的Manager插件,点击“Install Custom Nodes”,粘贴这两个扩展的地址:一个是https://gitcode.com/gh_mirrors/co/ComfyUI-MimicMotionWrapper,等着它自动把模型下好;另一个是https://github.com/Gourieff/comfyui-reactor-node,按同样的步骤来一遍。
装完重启ComfyUI,在左侧的节点栏里,应该能看到“MimicMotion”和“Reactor”这两个新分类。如果没出现,大概率是models/mimic_motion_pose_net.safetensors这个文件没成功落到ComfyUI/custom_nodes/ComfyUI-MimicMotionWrapper/models/目录里,手动补一下就行。
准备源视频与目标视频素材
源视频的要求比较明确:全身必须入镜、不能有遮挡、动作节奏清晰,时长最好控制在8到25秒之间。目标视频则要求人物正面站立、脸部完整可见、背景尽量简洁,分辨率严格设定为720p(1280×720)。
⚠️ 注意:目标视频里的人物如果戴了眼镜、刘海遮住了眉毛,或者侧脸超过了30度,DWPose关键点检测很可能失败,后续所有动作迁移都会跟着偏移失真,这一点需要提前规避。
把这两段视频统一放到ComfyUI/input/文件夹里,文件名不要带中文和空格,比如source_dance.mp4、target_lihua.mp4,这样比较稳妥。
构建双轨驱动工作流
方法一:主动作+辅表情嵌套法
先从节点库里拖出“MimicMotion Video to Video”节点,把source_path设为源视频路径,target_path设为目标视频路径。接着,把这个节点输出的“video_tensor”,连接到“Reactor Face Swap”节点的“image”输入口。在Reactor节点里,启用“Face Restore”,并勾选“Use Face Embedding from Source”——系统会自动从源视频的首帧提取表情基线特征。最后,连上“Sa ve Video”节点,输出格式选mp4 (H.264),码率设到12000kbps,这样能保留表情微动的细节。
方法二:分帧注入法(适合长视频精修)
先用“Video Load”节点加载目标视频,接上“Frame Batch”节点把它切片成单帧。然后对每一帧用“Reactor Face Swap”做表情强化,再把增强后的帧序列送入“MimicMotion Image Sequence to Video”节点,合成带有动作的新视频。
这个方法耗时大约会增加40%,但能避免长视频里因头部晃动导致的表情错位问题,算是为效果付出的必要代价。
关键参数调试与避坑
打开configs/test.yaml,重点修改三项参数:
frame_smooth:设为15。低于10的话动作会显得生硬,高于25又容易模糊关节轨迹。
pose_strength:设为0.72。太高会导致肩膀扭曲,太低动作又不明显。
expression_preserve:设为true,这个必须开启,否则Reactor会覆盖MimicMotion已经计算好的微表情。
运行之前,务必确认一下GPU显存剩余是否≥6GB。如果用的是RTX 4060(8GB显存),需要在ComfyUI启动脚本里加上--gpu-only --lowvram参数,否则半路报错中断可就白忙了。