Animate image with UniAnimate_Long
UniAnimate, but for the long haul
- image
- video
- video
- poses
The base Animate image with UniAnimate node tops out at a 32-frame default, and that's a hard architectural wall - the model trains and samples on fixed-length clips. Animate image with UniAnimate_Long is the pack's answer: same UniAnimate model, but a sliding context window that generates arbitrarily long videos by chewing through your driving video in overlapping chunks. If you've seen AnimateDiff-Evolved's "unlimited context" feature, this is the same trick applied to human animation (animatediff.md covers the concept in detail).
It's also the node that ditches the two-node workflow. Where the base node needs precomputed poses from Gen_align_pose, the Long variant extracts its own DWPose sequence from the video input, runs the alignment internally, and animates - one node instead of two. The dontAlignPose toggle (default false) controls that internal alignment, mirroring the semantics of the pose-prep nodes: leave it false for auto-scaled poses, flip it true when your reference person and driving video already match in size.
The inputs that matter
The context window parameters are where the real control lives:
context_size(16–64, default 32) - how many frames each diffusion chunk samples at once. Bigger = more coherent motion per chunk, more VRAM, slower.context_overlap(4–16, default 8) - the frames shared between consecutive chunks so the seams don't show. Too little overlap and you'll see flicker at boundaries; too much and you're wasting compute.context_stride(1–4, default 1) - frames skipped between chunks. Bump this to trade smoothness for speed on long inputs.
The node has guardrails: if context_size equals context_overlap, or the context exceeds either max_frames or the video length, it resets to defaults. And if your video is under 32 frames it shrinks context to 16 with an overlap of 4 automatically - you can't break it, but you also can't force a tiny clip to use a big context.
Beyond those: max_frames defaults to a ludicrous 1024000 (it caps at the length of your driving video), frame_interval (1–16) skips frames for speed, useFirstFrame lets you chain onto the previous generation, and seed/steps/resolution_x behave as usual. Outputs are video (the full frame batch) and poses (the internally generated pose sequence - useful for checking what the model actually saw).
Setup and expectations
Install and models are pack-standard: ComfyUI Manager ("UniAnimate Nodes for ComfyUI") or git clone https://github.com/Isi-dev/ComfyUI-UniAnimate-W into custom_nodes/, plus the UniAnimate checkpoint stack (~14GB) in checkpoints/. No Animate-X file needed.
Realistic expectations: long video means long wall-clock time. The README's ~7 minutes per 32 frames at [512, 768] scales linearly, so a 160-frame clip is half an hour of patience minimum. On a 12GB card keep context_size at 32 or below and you should stay within memory - the sliding window is what makes long generation feasible on modest VRAM in the first place. If your driving clip is short anyway, there's no advantage here over the base node; reach for this one when the video genuinely outlasts one chunk.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 70–16384 | — |
| steps | INT | 3010–50 | — |
| useFirstFrame | BOOLEAN | false | — |
| dontAlignPose | BOOLEAN | false | — |
| image | IMAGE | — | |
| video | IMAGE | — | |
| frame_interval | INT | 11–16 | — |
| context_size | INT | 3216–64 | — |
| context_stride | INT | 11–4 | — |
| context_overlap | INT | 84–16 | — |
| max_frames | INT | 102400016–1024000 | — |
| resolution_x | INT | 512512–768 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | IMAGE | — |
| poses | IMAGE | — |