Video To Pose
VideoX-Fun's built-in pose extractor for control videos
- input_video
- images
If you're feeding a control_video into Wan2_2FunV2VSampler or CogVideoXFunV2VSampler for pose-driven generation, this is the node that produces it - it converts a regular source video into an OpenPose skeleton sequence, so you don't need to leave this pack or install a separate controlnet-aux preprocessor just to get pose conditioning working.
It's worth being clear about scope, though: this only covers pose. If you want Canny edges, depth maps, or MLSD lines for a -Control checkpoint instead of -Pose, VideoX-Fun doesn't ship extractors for those - you'll need ComfyUI's separate controlnet-aux pack for anything beyond pose.
How it works
Feed it a video (as an IMAGE batch - however many frames you loaded), tell it how many frames to process, and it runs pose detection frame-by-frame, returning a batch of skeleton-visualization images in the same OpenPose style the wider ControlNet ecosystem uses. That output is exactly what a -Pose CogVideoX-Fun checkpoint, or a pose-conditioned Wan-Fun -Control checkpoint, expects as its control signal.
The inputs that matter
input_video(required, IMAGE) - your source clip as a frame batch. Load it with a standard video-loading node upstream; this node itself doesn't handle file I/O.video_length- default 81, range 1-81, step 4. Note this caps at 81, not the 161 some Wan samplers allow - match it to however many frames you actually plan to condition on downstream.
Output: images - the pose-skeleton frame batch, wired directly into a control_video input.
Installing it
Ships with the base VideoX-Fun pack, nothing extra to install for this node specifically. Search ComfyUI Manager for VideoX-Fun; if it's not indexed there:
cd ComfyUI/custom_nodes
git clone https://github.com/aigc-apps/VideoX-Fun
pip install -r VideoX-Fun/requirements.txt
Restart ComfyUI.
Common issues
Pose detection misses limbs or gets confused on fast motion. This is a general limitation of frame-by-frame pose estimation, not specific to this node - motion blur and occlusion both degrade detection quality. If your source clip has quick or complex movement, expect some frames to come out with partial or wrong skeletons, and consider a cleaner, more static source clip if pose accuracy matters a lot for your shot.
video_length doesn't match your downstream sampler's setting. Keep this consistent with whatever video_length you set on the sampler node consuming the control_video output - a mismatch means the conditioning video and the generation length don't line up frame-for-frame.
Wanted Canny or Depth instead of pose. Wrong node - this one only does OpenPose. Reach for ComfyUI's controlnet-aux preprocessor pack for anything else; it's a completely separate install from VideoX-Fun.
Output looks right but the downstream sampler ignores it. Double-check you're on a checkpoint that was actually trained for pose/control conditioning (-Pose for CogVideoX-Fun, -Control for Wan-Fun) - feeding a pose control video into an -InP checkpoint's sampler does nothing, because that model was never trained to read it.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| input_video | IMAGE | — | |
| video_length | INT | 811–81 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |