
Animate Face (face vid2vid)
Drives a static reference face with the expressions and pose of an incoming video stream using face-vid2vid. The reference face stays the same identity; the driver frames supply the motion.
How it fits
{{type:Image}} (driver frames) --> {{component:animate_face_face_vid2vid}} --> {{type:Image}}
|
+-- reference identity bound via {{param:source_face}} file
Pick this when one fixed identity (a single source image) should be animated by a live or recorded video of a different face — virtual avatars, reenactment, talking-head demos. A GPU is strongly preferred. auto uses CUDA when available and otherwise runs on CPU; cuda also falls back to CPU with a warning if CUDA is unavailable.
Typical backends
- Live browser avatar: {{component:input_browser_webcam}} -> {{component:animate_face_face_vid2vid}} -> {{component:output_browser_stream}}.
- Camera-driven avatar to file: {{component:input_camera}} -> {{component:animate_face_face_vid2vid}} -> {{component:output_video_file}}.
- Pre-recorded reenactment: {{component:input_video_file}} -> {{component:animate_face_face_vid2vid}} -> {{component:output_video_file}}.
- Remote video URL reenactment: {{component:input_video_url_ffmpeg}} -> {{component:animate_face_face_vid2vid}} -> {{component:output_browser_stream}}.
- Chained identity swap: {{component:input_camera}} -> {{component:animate_face_face_vid2vid}} -> {{component:swap_faces_insightface}} for an additional swap on the animated frame.
Caveats
- The bound file is the REFERENCE identity (identity to preserve). The streaming {{type:Image}} is the DRIVER (expressions and pose to copy). Swapping the two roles produces meaningless output.
- The bound path accepts a file OR a directory. When pointed at a directory, the worker scans for png / jpg / jpeg (case-insensitive) and picks the first match alphabetically; additional images are ignored with a printed warning.
- The reference must be discoverable at startup; missing files cause the worker to exit during initialization, not at runtime.
- When {{param:split}} is true, the worker emits a horizontal concat of [detected driver face | animated result], each resized to half the input width and full input height. The output frame matches the input width but the animation occupies only the right half.
- When {{param:split}} is false and a face is detected, the worker emits only the 256x256 animated result. Downstream sinks must account for this fixed model output size.
- When {{param:split}} is false and the driver frame contains no detectable face, the worker silently emits the "Face not detected" placeholder instead of erroring. Downstream code that assumes an always-animated frame must detect this case.
- The model weights are downloaded from Google Drive on first run and reused after the cache is warm; first-run cold start includes the download time.
- Input frames are converted to BGR internally; callers do not need to colour-convert upstream.
Sürümler
- 7e22babddefaultlatestlinux/amd64
live-test prerelease 2026-05-27T12:03:39Z

