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

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

Veo 3.1 first-and-last-frame video, with audio

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

Here's the one Veo does that nothing open touches: native audio. Veo 3 and 3.1 generate synced sound - effects, ambience, even dialogue - right in the video, and there's still no open-source equivalent. This node is the "Fast" variant of Veo 3.1, cheaper and quicker than the full model, and it works from a first and last frame rather than one starting image. You set the endpoints, Veo fills in the motion between them. This all runs through fal.ai.

Hosted call, per-clip billing, nothing local. Veo is closed, so fal is the way to script it.

How it works

You supply a first frame (required) and, optionally, a last frame. Veo generates a clip that starts at the first and lands on the last, inventing the motion in between and - unless you turn it off - a matching audio track. Give it only a first frame and it behaves like normal image-to-video; give it both and you're doing controlled interpolation between two poses or two compositions, which is a genuinely different and more directable workflow.

The "Fast" in the name is the trade: it's the quicker, lower-cost tier of Veo 3.1, so it's the one to iterate on before spending on the full model.

The inputs and outputs that matter

  • prompt (required, multiline) - describe the motion and, if you want specific sound, the audio too. Veo listens to prompt cues for what it generates on the audio track.
  • first_frame (required, IMAGE) - where the clip starts.
  • last_frame (optional, IMAGE) - where it ends. Add this to control the destination; omit it for open-ended motion from the first frame.
  • generate_audio (default on) - the whole reason to pick Veo. Leave it on for synced sound; turn it off if you only want silent video (and to save a little cost).
  • duration (4s/6s/8s, default 8s), resolution (720p/1080p), aspect_ratio (auto, 9:16, 16:9, 1:1).

Output is a STRING - a URL to the video on fal. Download it via the pack's Fal Save Media from URL node, or chain into a downstream fal node's *_direct_url. Save it before the URL expires.

How to install it

From gokayfem's ComfyUI-fal-API pack. ComfyUI Manager: search ComfyUI-fal-API, install, restart. Manual:

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

Add your fal key (copy config.ini.exampleconfig.ini, paste from fal.ai/dashboard/keys, or export FAL_KEY=your_key), restart.

Common issues & troubleshooting

When you download it, the audio's gone. Make sure generate_audio was on for the run, and make sure whatever you preview or re-encode the clip with actually keeps the audio track - some ComfyUI video-save paths drop audio. Fal Save Media from URL downloads the file as fal returns it, which is the safest way to keep the sound.

The last frame isn't being respected. last_frame is optional and only steers the ending when you supply it. If you want a specific destination, plug it in; a mismatched, wildly different last frame can also make the interpolation look forced.

It's still expensive for a "fast" model. Fast is relative - this is a premium closed model. Iterate at 720p and shorter durations, then do your final at 1080p/8s.

Insufficient funds / credit lag. fal is pay-per-call and legit; top-ups have occasionally posted late. Wait for credits rather than repaying. Content-policy refusals surface as readable fal error text in ComfyUI.

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