Concurrent Submit | Zhenzhen Veo 3.1 Fast Ref2Video Fal
Veo 3.1 Fast ref-to-video, queued in parallel
- image1
- image2
- image3
- task
Google's Veo is the closed video model people keep coming back to - it's the one that generates synchronized audio natively, and Veo 3.1 tightened the fidelity gap further. It's also cloud-only, so inside ComfyUI you're always talking to an API. This node is the "Fast" Veo 3.1 lane (reference-to-video) hosted on fal, and the author's own note from the launch changelog is the honest review: "我跑了下大概4个币左右" - roughly four credits a run. Not cheap, but for Veo 3.1 Fast through a reseller, that's the going rate.
The concurrency part is the same architecture as every Submit node in Comfyui-zhenzhen: it doesn't block your graph. It pushes the generation onto the shared video pool (ten workers) and returns a task you collect later in the Concurrent Collect Videos node. If you're testing three reference images against two prompts, you can fire all six at once instead of waiting on each.
Inputs that matter
- image1 / image2 / image3 - up to three reference images for the ref-to-video. This is the "Fast Ref2Video" model, so the references are the point.
- prompt - the motion/text prompt describing what happens.
- duration - fixed at
8s. Veo clips are short, and this Fast variant doesn't stretch. - resolution -
720p,1080p, or4k. 4k is where the price stops being a rounding error. - generate_audio - on by default. Veo's native audio is one of the main reasons to use it.
- auto_fix - off by default; when on, the node retries with an auto-fixed prompt if your prompt trips content policy. Given how strict Google's filter is, this is worth knowing exists.
- safety_tolerance - 1 (strictest) to 6 (loosest), default 4. This is you negotiating with Google's moderation before it even sees your prompt.
- aspect_ratio -
16:9or9:16. - image_way -
image_url(default) orbase64for how references are transmitted. - api_key, poll_interval, max_poll_attempts, seed, skip_error - the usual furniture.
The single output is a COMFLY_VIDEO_FUTURE task.
How it works
The wrapper in ComflyConcurrent.py validates your inputs, then hands the real call - the original Comfly_veo3_1_fal class talking to fal's queue API - to a bounded executor with ten video workers. The task it returns is a future the collector waits on; the collector restores slot order and reports per-slot status, and failure_mode: placeholder lets a failed clip degrade to a blank video instead of killing the batch.
Setup
Install the pack once via ComfyUI Manager (search "Comfyui-zhenzhen") or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
No weights to download - this is a paid cloud call end to end. You need a Zhenzhen key from ai.t8star.org (overseas) or api.seedance.nz (domestic). The fal route pre-deducts credits at submission and settles after, so budget for the 4k runs.
Gotchas
Watch the price before you batch ten 4k clips - Veo is the expensive end of this pack. Google's content policy is baked into the model itself; the node can't bypass it, so safety_tolerance and auto_fix are your only levers, and if the provider refuses, that's the model refusing, not a bug. A timeout isn't a guaranteed failure - check your async task page. And the ten-slot video pool is shared across every video Submit node in the pack, so a busy queue just queues.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| api_keyopt | STRING | — | |
| aspect_ratioopt | COMBO | 16:9 | 2 options: 16:9, 9:16 |
| durationopt | COMBO | 8s | 1 options: 8s |
| resolutionopt | COMBO | 720p | 3 options: 720p, 1080p, 4k |
| generate_audioopt | BOOLEAN | true | Whether to generate audio for the video. |
| auto_fixopt | BOOLEAN | false | Auto-fix prompts that fail content policy. |
| safety_toleranceopt | COMBO | 4 | 1=most strict, 6=least strict. |
| image_wayopt | COMBO | image_url | 2 options: image_url, base64 |
| poll_intervalopt | INT | 62–30 | — |
| max_poll_attemptsopt | INT | 60010–3600 | Default 600*6s = 3600s timeout. |
| skip_erroropt | BOOLEAN | false | 开启后,节点失败时不报错、返回默认空结果。 |
| seedopt | INT | 00–18446744073709550000 | Execution seed for ComfyUI cache control. Fixed reuses the cached result; randomize/increment/decrement requests a new run. This compatibility seed is not sent to APIs that do not expose a native seed parameter. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| task | COMFLY_VIDEO_FUTURE | — |