Nodes/ComfyUI-fal-API/Veo 3.1 First-Last-Frame-to-Video (fal)
ComfyUI Node

Veo 3.1 First-Last-Frame-to-Video (fal)

Google's video model with native audio

By gokayfem·Created 2 years ago·Updated a day ago· 203
Veo 3.1 First-Last-Frame-to-Video (fal)
  • first_frame
  • last_frame
  • STRING
prompt
duration8s
aspect_ratioauto
resolution720p
generate_audiotrue

Veo is Google's video model, and it has one thing no open local model has matched: it generates synchronized audio - sound effects and dialogue that line up with what's on screen. That's the genuine capability gap that keeps people paying for it. This node runs Veo 3.1 in its first-last-frame mode: give it a starting image (and optionally an ending image) and a prompt, and it generates the motion between them, with sound.

What it actually does

Nothing runs locally. Your frames and prompt go to fal.ai, fal calls Google's Veo, and you get a clip back - no VRAM, no downloads, billed per generation. The first-last-frame setup is the useful bit: supply just a first_frame and Veo animates outward; supply both first_frame and last_frame and it treats them as bookends and generates a controlled transition that lands on your target. That's the difference between "animate this photo" and "get me from this shot to that shot."

The inputs that matter

  • first_frame (required): the opening image the video starts from.
  • prompt (required): describe the motion, and - because Veo does audio - describe the sound too. "Waves crashing, seagulls" actually gets you waves and seagulls.
  • last_frame (optional): the target closing image. Add it for a directed transition; leave it out for open-ended animation.
  • duration: 4s, 6s, or 8s. Eight is the ceiling and the priciest.
  • resolution: 720p or 1080p.
  • generate_audio (default on): the whole reason to use Veo. Leave it on unless you specifically want a silent clip (which is cheaper).

There's also aspect_ratio (auto/9:16/16:9/1:1). The output is a single STRING - the video URL. Route it into the pack's Fal Save Media from URL node to download the file (with audio) to your output/ folder.

Installing it

Easiest: ComfyUI Manager → search ComfyUI-fal-API → install → restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/gokayfem/ComfyUI-fal-API.git
cd ComfyUI-fal-API
pip install -r requirements.txt

Restart ComfyUI. No model file; the dependencies are fal-client and a fal API key (in config.ini under [API], or the FAL_KEY env var). No key, no video.

Where people get burned

First, don't forget the audio is a feature you're paying for - if you leave generate_audio on but never mention sound in your prompt, you get generic ambience and wonder why. Describe what you want to hear. If you don't need sound, turning it off saves money.

Second, first-last-frame only works well when the two frames are compatible; hand Veo a start and end that share nothing and the in-between motion gets strange as it strains to reconcile them. Third, Veo has Google's content filters, so refusals happen - the pack surfaces fal's real error text, so read it rather than assuming a bug. And note that consuming a native VIDEO/AUDIO result cleanly wants a recent ComfyUI; if sockets look wrong, update. Windows Portable import error? .\python_embeded\python.exe -m pip install fal-client.

CategoryFAL/VideoGeneration

Inputs (7)

NameTypeDefaultDescription
promptSTRING
first_frameIMAGE
last_frameoptIMAGE
durationoptCOMBO8s3 options: 4s, 6s, 8s
aspect_ratiooptCOMBOauto4 options: auto, 9:16, 16:9, 1:1
resolutionoptCOMBO720p2 options: 720p, 1080p
generate_audiooptBOOLEANtrue

Outputs (1)

NameTypeDescription
STRINGSTRING