Veo 3 Video Generation
The video node that makes its own soundtrack
- first_frame
- video
Veo 3 is the flagship of the Vertex AI pack, and the one thing it does that nothing open-source matches is generate audio with the video. A single node, text in, and you get a clip where the wind sounds like wind and the door slam syncs to the door. The KB's closed-source essay calls this a genuine capability gap, and it's the reason people pay Google's prices instead of running local video models. This node is how you get it inside ComfyUI.
What it is
Text-to-video (or image-to-video) running two preview models: veo-3.0-fast-generate-preview for speed and veo-3.0-generate-preview for quality. Fixed 8-second clips (the duration input is locked at 8), up to 1080p, and - the headline feature - native audio generation for dialogue, sound effects, and ambience that matches the motion. If you've spent a day trying to fake synchronized footsteps with a separate audio tool, you know why this matters.
How it works
The node uses google-genai to submit a video generation operation, then polls every 8 seconds until it completes. The config carries resolution, compression quality, prompt enhancement, audio on/off, person generation, and seed. generate_audio defaults to on - flip it off only when you plan to add your own soundtrack (say, via the Lyria node in the same pack). Output is saved to a temp file and returned as ComfyUI's VIDEO type; the pack's "Preview Video" node is the natural destination.
Inputs that matter
- prompt - multiline. With audio generation on, describing sound in the prompt ("the hum of city traffic, a siren in the distance") actually works.
- model -
veo-3.0-fast-generate-previewvsveo-3.0-generate-preview. Fast for drafts, full for finals. - first_frame - optional image to start from.
- resolution -
1080por720p. - compression_quality -
OPTIMIZED(smaller files) orLOSSLESS(heavier, more pristine). - generate_audio - the killer feature toggle, default on.
- person_generation -
allow_all,allow_adult, ordont_allow. - output_gcs_uri - optional, for a durable copy.
- seed - reproducibility.
Output is one video in VIDEO format.
Installing
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/khanhlvg/vertex-ai-comfyui-nodes.git
cd vertex-ai-comfyui-nodes
pip install -r requirements.txt
Plus the pack-wide auth - gcloud auth application-default login, GOOGLE_CLOUD_PROJECT / GOOGLE_CLOUD_LOCATION (defaults us-central1), billing-enabled project with Vertex AI enabled. No local models.
Where people get burned
- The wait, squared. Veo 3 full-quality at 1080p is a several-minute operation. The polling loop makes it look hung; it isn't.
- Cost is the real constraint. Veo 3 is the most expensive thing in this pack, and 8 seconds is the fixed minimum. Use the fast model and 720p for iteration, save the full render for finals.
- Audio surprises. Native audio is great until you don't want it - a silent "thinking" beat turns into room tone. If the clip needs clean audio for post, turn
generate_audiooff. - Preview models shift. Both model strings are
preview; Google has already moved versions once. If a saved workflow suddenly errors, the model string is the first suspect.
The takeaway is simple: if your video needs sound that matches the picture and you don't want to build it by hand, this is the only node in the ecosystem that just gives it to you. For everything else, open models are closing in - but not on this.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| project_id | STRING | — | |
| location | STRING | us-central1 | — |
| model | COMBO | 2 options: veo-3.0-fast-generate-preview, veo-3.0-generate-preview | |
| prompt | STRING | A cinematic shot of a panda eating bamboo. | — |
| first_frameopt | IMAGE | — | |
| output_gcs_uriopt | STRING | — | |
| duration_secondsopt | INT | 88–8 | — |
| resolutionopt | COMBO | 2 options: 1080p, 720p | |
| compression_qualityopt | COMBO | 2 options: OPTIMIZED, LOSSLESS | |
| enhance_promptopt | BOOLEAN | true | — |
| generate_audioopt | BOOLEAN | true | — |
| person_generationopt | COMBO | 3 options: allow_adult, dont_allow, allow_all | |
| seedopt | INT | 6438514220–4294967295 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |