Nodes/ComfyUI Razv WaveSpeed Nodes/WaveSpeedAI Google VEO 3.1 Image-to-Video
ComfyUI Node

WaveSpeedAI Google VEO 3.1 Image-to-Video

Give Veo 3.1 a frame, get a movie — and an end-frame, if you want one

By razvanmatei-sf·Created 12 months ago·Updated 9 months ago· 0
WaveSpeedAI Google VEO 3.1 Image-to-Video
  • client
  • video_url
image
prompt
aspect_ratio16:9
duration8
resolution1080p
generate_audiofalse
last_frame
negative_prompt
seed-1
enable_sync_modefalse

Image-to-video is where Veo 3.1 is at its best - you already know the composition you want, because you're looking at it. This node from razvanmatei-sf/razv-wavespeed hands a starting frame to Google's Veo 3.1 through the WaveSpeed AI API and gets back a short, coherent clip that moves within your image rather than inventing a new world. It's the "animate this picture" node, and it's genuinely good at it.

The one feature that separates this from the rest of the video nodes in the pack is last_frame: an optional ending frame image. Give Veo both a start and an end, and it generates a transition between them. That's the classic morph/transition shot, and it's the kind of thing you'd otherwise composite by hand or reach for a dedicated transition model for.

How it works

WaveSpeedAI Clientimage (the starting frame, as a URL) → POST to the Veo 3.1 image-to-video endpoint → poll → video_url string out. Same URL-not-file output as every video node here; download it yourself.

The dials mirror the text-to-video node: aspect_ratio (16:9 / 9:16), duration (4/6/8s), resolution (720p/1080p), generate_audio (native synced audio, off by default). Then the two that matter for I2V specifically:

  • image - the start frame. JPEG/PNG/WEBP. As with all image inputs in this pack, it's a hosted URL string - there's no upload node registered in the current build.
  • last_frame - optional ending frame for a transition. Leave empty for an open-ended continuation.
  • prompt - describe motion and story context. The tooltip's example is perfect: "Slow dolly zoom on a city skyline." Motion and camera, not "make it pretty."

The inputs that matter

  • image - required start frame. Publicly reachable URL.
  • prompt - the motion language.
  • last_frame - the transition trick. This is the reason to pick this node over a plain I2V.
  • generate_audio - flip on for synced sound.

Install

Shared pack:

cd ComfyUI/custom_nodes
git clone https://github.com/razvanmatei-sf/razv-wavespeed
# restart ComfyUI

Or ComfyUI Manager → search "razv-wavespeed" → Install. Add a WaveSpeed AI key via the WaveSpeedAI Client node, config.ini (copy from config.ini.tmp, [API]), or a WAVESPEED_API_KEY env var.

Common issues

  • Paid video generation - the most expensive category in the pack, and a start+end-frame transition is a heavier job than a plain I2V. Budget for it.
  • URL-only input. If you go hunting for the tooltip's "Upload Image node," you won't find one in the current build. Paste a public image URL.
  • Aspect ratio vs. your source image. The node will letterbox or crop to the chosen ratio; crop your start frame to match before you pay for a generation.
  • Video URLs expire. Fetch the result promptly.
CategoryWaveSpeedAI/Google VEO 3.1

Inputs (11)

NameTypeDefaultDescription
clientWAVESPEED_AI_API_CLIENT
imageSTRINGStarting frame image URL (JPEG/PNG/WEBP) - connect from Upload Image node
promptSTRINGDescribe motion/story context (e.g., 'Slow dolly zoom on a city skyline')
aspect_ratioCOMBO16:9Video aspect ratio - 16:9 (landscape) or 9:16 (portrait)
durationCOMBO8Video duration in seconds
resolutionCOMBO1080pVideo output resolution
generate_audioBOOLEANfalseGenerate native audio synchronized with the video
last_frameoptSTRINGOptional ending frame image URL for transition effect (JPEG/PNG/WEBP)
negative_promptoptSTRINGSpecify undesired generation characteristics
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