Nodes/ComfyUI-LivePortrait_v2/LivePortraitProcess_animal
ComfyUI Node

LivePortraitProcess_animal

Animal Face Animation with LivePortrait

By VangengLab·Created 2 years ago·Updated 2 years ago· 5
LivePortraitProcess_animal
  • source_image
  • images output
video

Your cat is about to have opinions

LivePortrait is KwaiVGI's portrait-animation model: you give it a still face and a driving video, and it transfers the driver's expressions and head motion onto the still. The big ComfyUI ports - Kijai's LivePortraitKJ is the one everyone actually uses - handle human faces. This node is the rare animal branch. Feed it a cat photo and a video of a person talking, and out comes the cat talking, in that wobbly, kind of uncanny emoji style. If your goal is a lip-syncing dog meme, this is one of the few drop-in options that exists in ComfyUI at all.

It's not a big deal in the ecosystem - eight Google impressions a year, a README that's two paragraphs - but the niche is real. Just know what you're signing up for.

What the node actually does

Two inputs, one output, zero knobs. The thing that trips everyone is the video input. It's a plain STRING, and there is deliberately no upload widget. The README is upfront about this: you drop your driving video into ComfyUI-LivePortrait_v2/assets/examples/driving/ yourself, then type just the filename - without the .mp4 extension. The node appends .mp4 for you, copies your file to d9.mp4, saves your source_image out to assets/examples/source/s12.jpg, runs the whole LivePortrait animal pipeline, and hands you back the frames.

Under the hood it's the real KwaiVGI machinery, just pointed at animals: an XPose-based cropper finds and landmarks the animal face (9 or 68 landmarks, 21 keypoints), an appearance feature extractor encodes your source image, a motion extractor reads each driving frame's expression and rotation, a warping network plus SPADE generator render the animated face, and a paste-back step stitches it into the original frame. It's the same pipeline as the human version with animal-specific models and a recommended setting of stitching off (the code comments literally suggest flag_stitching=False for animal sources).

The inputs that matter

  • source_image (IMAGE) - the animal still. A clean, forward-facing, well-lit face gets you dramatically better results.
  • video (STRING) - filename only, no extension, sitting in assets/examples/driving/.

The one output, images output (IMAGE), is a batch of frames. Wire it into any video/gif saver node. No audio comes back - LivePortrait returns frames, full stop.

Installing it - the honest version

ComfyUI Manager finds it if you search "ComfyUI-LivePortrait_v2", or:

cd ComfyUI/custom_nodes
git clone https://github.com/VangengLab/ComfyUI-LivePortrait_v2

Then restart. That's the easy 10%. The hard part is the dependencies, which the README barely covers:

  • XPose. The animal face-crop step needs XPose, configured per the instructions in the KwaiVGI/LivePortrait repo. CUDA 12.1 is the stated preference.
  • Weights. The README points you to the v3 repo for weight download details, and the code hardcodes where they must live: ComfyUI/models/Liveportrait_v3/liveportrait/landmark.onnx and ComfyUI/models/Liveportrait_v3/liveportrait_animals/xpose.pth, plus an InsightFace folder inside pretrained_weights/ in the repo. Get the paths wrong and the crop fails instantly.
  • Do not pip install -r requirements.txt. It's the LivePortrait dev environment dump with torch==2.3.0+cu121 pinned, and installing it into your ComfyUI venv will replace the torch ComfyUI was built against. ComfyUI already ships its own torch - leave it alone.

Common gotchas

The video field is the number one failure: people type a full path, or the .mp4, or forget to place the file, and get a FileNotFoundError deep in the pipeline. The node also writes into its own custom_nodes folder, so it needs write permission there, and it re-parses your ComfyUI launch command line at runtime via tyro.cli() - a plain python main.py is fine, but if you've piled on exotic launch flags and the node dies instantly, that's a suspect.

Half precision is on by default with no way to toggle it from the UI - if you see black/glitchy boxes, that's the usual culprit on older GPUs, and there's no node-side escape hatch. Which sums the whole thing up: this is a deliberately minimal wrapper, no params, no video upload, hardcoded paths.

Verdict

It's fiddly, it's obscure, and it sends you to another repo for the install's hard half. But if the goal is a talking animal, it's the niche one that actually works, and the community signal bears out that people reach for it specifically when Kijai's human-focused LivePortraitKJ isn't what they need. Budget an afternoon for the XPose setup, and keep a cat photo ready.

CategoryLivePortrait

Inputs (2)

NameTypeDefaultDescription
source_imageIMAGE
videoSTRING

Outputs (1)

NameTypeDescription
images outputIMAGE