Google Veo3.1 Fast First Last Frame (Official Edition)
Veo 3.1 Fast first-last-frame video, Official Edition — full control, fast tier
- first_frame_url
- last_frame_url
- api_config
- video
- request_id
- urls
Read the display name carefully, because it's the whole story: "Google Veo3.1 Fast First Last Frame (Official Edition)." The class says I2V, but this is the first-last-frame variant - you give it a starting frame and an ending frame, and the Fast tier fills in the video between them, with the full Official Edition control set on top.
That control set is what separates this from the Channel Edition FLF nodes: duration, generate_audio, negative_prompt, seed, and aspect_ratio are all exposed. So you're not just "start here, end there" - you're start here, end there, over this many seconds, with this audio toggle, pushed away from these artifacts, reproducibly seeded. For a specific tier of job - storyboard transitions, loopable b-roll, a two-pose character shot - this is arguably the most useful node in the entire Veo family.
Why you'd reach for it
Because FLF is the mode where you have the most control over the outcome, and the Official Edition is where you have the most control over the FLF. The Fast tier keeps it quick and affordable enough to iterate on. Set a seed to lock a transition you like, use negative_prompt to kill the flicker or warping that keeps showing up, and leave generate_audio on - native audio is Veo's signature capability and there's no reason to throw it away by default.
How it works
Required: first_frame_url (IMAGE - the opening frame), prompt, resolution (720p default), duration (default 4), generate_audio (default true). Optional: last_frame_url (IMAGE - the destination frame), negative_prompt, aspect_ratio (16:9 default), seed. Note the inputs are named for what the provider's API expects - a URL - but you wire in normal IMAGE tensors and the node handles the hosting side.
On queue the node uploads both frames, submits to Veo 3.1 Fast through BizyAir's channel, polls, and returns video (VIDEO - preview or save like any local render), request_id (STRING), and urls (STRING). The optional api_config (BIZYAIR_OPENAPI_CONFIG) overrides base_url/api_key per request; skip_error swaps a failed call for a placeholder so the workflow survives.
Install and setup
One-time install, identical across the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/siliconflow/BizyAirPlus.git
cd BizyAirPlus
python -m pip install -r requirements.txt
Restart ComfyUI (or install "BizyAirPlus" via ComfyUI Manager). No model files - the bizyair-cloudberry and bizytrd pip packages auto-install on startup. Click the BizyAirPlus button to ON, get an API key from bizyair.ai, enter it, and queue.
Common issues
- Transition doesn't match the frames - FLF bridges plausibly, not deterministically. Mismatched lighting or composition makes the middle invent a jarring bridge; make the frames agree.
- Last frame ignored - if
last_frame_urlis unconnected, you've silently got plain image-to-video. Check the wire. - Audio shows up unwanted -
generate_audiodefaults on; turn it off for silent drafts.
Pack caveat: BizyAir auto-installs and sends your images to the cloud. Legitimate SiliconFlow product, but keep the switch OFF for local-only sessions.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| first_frame_url | IMAGE | First image | |
| prompt | STRING | Prompts | |
| resolution | COMBO | 720p | Resolution |
| duration | COMBO | 4 | Video duration |
| generate_audio | BOOLEAN | true | Audio |
| last_frame_urlopt | IMAGE | End frame picture | |
| negative_promptopt | STRING | Back prompts | |
| aspect_ratioopt | COMBO | 16:9 | Aspect ratio |
| seedopt | INT | 0-1–2147483647 | Seeds |
| api_configopt | BIZYAIR_OPENAPI_CONFIG | 单次请求覆盖base_url和api_key | |
| skip_erroropt | BOOLEAN | false | 开启后遇到错误不中断工作流,输出对应类型的错误占位符 |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| request_id | STRING | — |
| urls | STRING | — |