Nodes/comfyui-stillfront/SF WaveSpeed VEO 3.1 Reference to Video
ComfyUI Node

SF WaveSpeed VEO 3.1 Reference to Video

The same character, every frame

By razvanmatei-sf·Created 9 months ago·Updated 7 months ago· 0
SF WaveSpeed VEO 3.1 Reference to Video
  • client
  • video_url
prompt
image_1
resolution1080p
generate_audiofalse
image_2
image_3
negative_prompt
seed-1
enable_sync_modefalse

Character consistency across frames is the thing that makes AI video look like footage instead of a fever dream, and it's also the thing vanilla text-to-video keeps failing. This node is VEO 3.1's answer: you feed it one to three reference images of the person, character or object, describe the scene, and it holds that subject steady through the whole clip. For character-driven narratives and anything where a brand or face has to be recognizable, this is the node you want.

It sits in the same territory the local community chased for months - reference-to-video was a headline capability people celebrated when it finally landed in open models - except here it's Google's model doing it, over the WaveSpeed API, with no local weights to babysit. The input format even reads like the API docs: reference images must be PNG/JPEG/JPG/WebP, at least 128x128, no more than 50MB.

How it works

Standard pack anatomy: wire an SF WaveSpeed Client into client, and the node POSTs your prompt plus reference images to /api/v3/google/veo3.1/reference-to-video, then waits (polls) until the render finishes. It returns a single video_url string. No local model, no VRAM pressure, no model download - the only thing that moves is the API key.

One difference from the other VEO nodes: there's no aspect_ratio or duration input here. The info_schema simply doesn't expose them - you pick resolution (720p/1080p), and the model decides the rest. Don't go hunting for missing widgets; they're not there.

The inputs that matter

  • image_1 - the required first reference. This is your anchor: the face, outfit, or object that has to stay consistent.
  • image_2, image_3 - optional second and third references for additional subjects or more angles on the same one.
  • prompt - describe the scene and what's happening, keeping the subject description in line with what the references show. The consistency comes from the images; the prompt supplies the story.
  • resolution, generate_audio - output size, and VEO's native synced audio if you want it.
  • negative_prompt, seed, enable_sync_mode - the usual suspects, behaving exactly as their tooltips say.

Installing it

Easiest: ComfyUI Manager, search comfyui-stillfront, install. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/razvanmatei-sf/comfyui-stillfront.git
cd comfyui-stillfront
pip install -r requirements.txt

Then get a WaveSpeed key from wavespeed.ai and set it one of three ways: paste into config.ini (after copying config.ini.tmp to config.ini), export WAVESPEED_API_KEY, or type it into the SF WaveSpeed Client node's api_key field. Ignore the README's stale stillfront/... clone URL - the repo is at razvanmatei-sf/comfyui-stillfront.

Where people get burned

The references are URL strings, not IMAGE tensors - a stock Load Image node won't connect. You need an upload-style node that produces URLs. That's the #1 stumble for everyone coming from a normal local workflow.

Second, expectations about cost and time: this is pay-per-generation on a hosted service, and reference-to-video is one of the more expensive jobs. Test with one reference at 720p before you commit to three references at 1080p with audio.

Third, don't confuse this pack with ComfyUI-WaveSpeed (chengzeyi's local acceleration pack). Same "WaveSpeed" in the name, totally unrelated project - that one makes your own GPU faster, this one talks to an API.

CategoryStillfront/WaveSpeed

Inputs (10)

NameTypeDefaultDescription
clientWAVESPEED_AI_API_CLIENT
promptSTRINGText description for video generation with subject consistency
image_1STRINGFirst reference image URL (required) - connect from Upload Image node. PNG/JPEG/JPG/WebP, min 128x128px, max 50MB
resolutionCOMBO1080pVideo output resolution
generate_audioBOOLEANfalseGenerate native audio synchronized with the video
image_2optSTRINGSecond reference image URL (optional) for additional subject reference
image_3optSTRINGThird reference image URL (optional) for additional subject reference
negative_promptoptSTRINGSpecify elements to avoid in the generated video
seedoptINT-1-1–2147483647Random seed for reproducible results. -1 for random seed
enable_sync_modeoptBOOLEANfalseWait for generation to complete before returning

Outputs (1)

NameTypeDescription
video_urlSTRING