Face Mesh

Track the face in a video frame by frame (Google MediaPipe Face Landmarker) and draw its mesh as thin lines: the face tessellation in thin blue, the lips in coral (see `lips`) and the eyes in green. For talking character swaps: once the source head is hidden (Segment Mask into Masked Composite, or a depth composite), Seedance can no longer see the mouth and the take comes back with a dead one. Wire the original clip into `video` (the face is tracked there) and, optionally, the hidden-head composite into `base_video`: the mesh is drawn onto the base, so Seedance gets the jaw and lip motion without the face. With no base the mesh is drawn onto the clip itself. The base must have the same size, frame rate and frame count as the clip, or the run is refused with both numbers. Outputs: the overlaid `video` (the base's audio, or the clip's), `landmarks` (a JSON file url: 478 points per frame, x and y from 0 to 1) and `tracking` (which frames had no face, with a one-line summary to gate on before a paid take). One face per frame. `region`: `auto` (default) looks at the whole frame and retries a centre crop when it finds nothing, `full` the whole frame only, `center` the centre crop only (a small speaker in the middle of a wide shot). `lips`: `coral` (default) draws the lip contour as a thicker coral line, `face` in the same thin blue as the face lines, `off` leaves it out. Seedance paints a coral contour into the take as coral lips, so use `face` for a person swap. A clip with no face in any frame is refused. Clips up to 30 seconds and 2160 px on the long side. The same inputs and settings always give the same files. Tell Seedance in the prompt that the mesh lines are motion guidance and must not appear in the take. Free to run: this node quotes and charges 0 credits.

Try Face Mesh in the playground

Last updated View as MarkdownAgent setup

Face Mesh

Node type: utility:video_face_mesh
Category: Editing

Description

Track the face in a video frame by frame (Google MediaPipe Face Landmarker) and draw its mesh as thin lines: the face tessellation in thin blue, the lips in coral (see lips) and the eyes in green. For talking character swaps: once the source head is hidden (Segment Mask into Masked Composite, or a depth composite), Seedance can no longer see the mouth and the take comes back with a dead one. Wire the original clip into video (the face is tracked there) and, optionally, the hidden-head composite into base_video: the mesh is drawn onto the base, so Seedance gets the jaw and lip motion without the face. With no base the mesh is drawn onto the clip itself. The base must have the same size, frame rate and frame count as the clip, or the run is refused with both numbers. Outputs: the overlaid video (the base's audio, or the clip's), landmarks (a JSON file url: 478 points per frame, x and y from 0 to 1) and tracking (which frames had no face, with a one-line summary to gate on before a paid take). One face per frame. region: auto (default) looks at the whole frame and retries a centre crop when it finds nothing, full the whole frame only, center the centre crop only (a small speaker in the middle of a wide shot). lips: coral (default) draws the lip contour as a thicker coral line, face in the same thin blue as the face lines, off leaves it out. Seedance paints a coral contour into the take as coral lips, so use face for a person swap. A clip with no face in any frame is refused. Clips up to 30 seconds and 2160 px on the long side. The same inputs and settings always give the same files. Tell Seedance in the prompt that the mesh lines are motion guidance and must not appear in the take. Free to run: this node quotes and charges 0 credits.

Canvas ports

These appear as port handles on the left side of the node.

ID Label Details
video Video (face tracked here) VIDEO (required)
base_video Base Video (draw onto; blank = the clip) VIDEO

These render as form fields in the right-side config panel when the node is selected.

ID Label Details
region Where to look for the face TEXT · options: auto, full, center · default: "auto"
lips Lip lines TEXT · options: coral, face, off · default: "coral"
crf Quality (CRF, 12 best … 30 smallest; blank = 18) NUMBER

Outputs

ID Label Type
video Mesh Video VIDEO
landmarks Landmarks (JSON url) TEXT
tracking Tracking report JSON

What it is for

A talking character swap needs the mouth. Real Swap hides the source head so Seedance cannot copy the face, and that also hides the jaw and the lips: the take comes back with the right character and a mouth that does not move.

Face Mesh puts the motion back without the face. It finds the face in every frame of Video and draws its mesh as thin lines: the face in thin blue, the lips in coral (see Lip lines below), the eyes in green. Wire the hidden-head composite into Base Video and the mesh is drawn there, exactly where the hidden face was.

Recipe: keep the mouth moving in a Real Swap

  1. Run the Real Swap prep as usual, up to the composite that hides the head.
  2. Face Mesh: the trimmed source clip into Video, that composite into Base Video, and Lip lines set to Match face lines (face).
  3. Read Tracking report on the card before any paid run. Frames with no face get no mesh, and the mouth goes still there.
  4. Wire Mesh Video into Seedance's reference video port in place of the composite. In the prompt, say that the mesh lines are motion guidance only and must not appear in the video.

Tested on a Seedance take with the default coral lip lines: the swapped mouth follows the source, but Seedance paints thick coral lips in every frame. That is why step 2 sets face; a take with face has not been run yet.

Outputs

  • Mesh Video: the base (or the clip) with the mesh drawn on, same size, frame rate and length, with that clip's audio.
  • Landmarks (JSON url): every frame's 478 face points, x and y from 0 to 1 of the frame, for anything that wants the raw tracking.
  • Tracking report: how many frames had a face, and which did not, with a one-line summary such as no face in 3 of 130 frames: frames 12-14.

Where it looks for the face

  • auto (default): the whole frame, and on a miss the centre of the frame (the middle half across, the top 65 percent down), where a seated speaker usually is.
  • full: the whole frame only.
  • center: the centre only, for a small speaker in a wide shot.

It tracks one face per frame. For a clip with two people, crop to the speaker first.

Lip lines

  • Coral (coral, default): the lip contour as a thicker coral line, the original drawing.
  • Match face lines (face): the lip contour in the same thin blue as the rest of the face. Use this for a person swap: Seedance reads a coral contour as coral lips and paints them in.
  • Off (off): no lip contour at all. The face lines around the mouth still move with it.

Limits

The base must have the same size, frame rate and frame count as the clip, or the run is refused with both numbers (make the base from the same trimmed clip). Clips over 30 seconds or over 2160 pixels on the long side are refused, as are HDR clips and inputs over 500 MB. A clip with no face in any frame is refused. The same inputs and settings always give the same files.

Credit: the technique and the mesh drawing are adapted from the open-source Genjustsu workflow by Sirio Berati (MIT license), using Google's MediaPipe Face Landmarker.

This node is free: it quotes and charges 0 credits.


Auto-generated from the Wireflow node registry.

For AI agents: the full documentation index is at /llms.txt, and most docs pages are available as Markdown by adding .md to the URL.

© 2026 Wireflow. All rights reserved.