Concurrent Submit | zhenzhen-bernini-r-video-fal
Submit 10 clips at once, collect them in order
- video
- reference_image1
- reference_image2
- reference_image3
- reference_image4
- reference_image5
- task
Video jobs are the worst thing to run one-at-a-time: a single Bernini clip can sit in the queue for minutes, and if you're iterating on five reference-to-video shots, the blocking version of this node means five sequential waits. This submit node fixes that by not waiting at all. It's the concurrent wrapper around zhenzhen-bernini-r-video-fal - same three modes (reference_to_video, edit_video, reference_edit_video), same fal-ai/bernini-r endpoints, but the job goes into the shared video pool and you get a task handle back instead of a finished clip.
The catch, and it's an important one: video concurrency here is 10, not 30. The pool is deliberately smaller because video jobs are long and expensive. So when the README brags about "30 concurrent," that's the image pool talking - video gets a tenth of that, and there's a reason.
How it works
Same auto-generated machinery as every concurrent node in the pack: the submit class is built from the base node's inputs at import time, wraps the real process() call in a bounded ThreadPoolExecutor, and returns a COMFLY_VIDEO_FUTURE. You collect those with ComflyConcurrent_Video_Await ("Concurrent Collect Videos (10)"), which waits for the whole batch and returns VIDEO tensors in slot order. The pool size is COMFLY_VIDEO_CONCURRENCY (default 10) in the environment.
The inputs mirror the base node exactly: mode, prompt, video/video_url, reference_image1-5, reference_image_urls, api_key, negative_prompt, max_image_size, num_frames (snapped to 4k+1 - use 5 for cheap smoke tests), frames_per_second, num_inference_steps, acceleration, aspect_ratio, seed (FAL max 65535), image_way, video_way, and the poll settings. Pick the mode, wire the references, feed the collector.
Installing it
One clone gets the whole pack:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
Restart ComfyUI, or install "Comfyui-zhenzhen" via ComfyUI Manager. No model downloads - video renders on hosted Bernini through the Zhenzhen proxy.
Common issues
Pack-level: account + credit required, 443 errors need a VPN with TUN mode, and 500s are usually upstream - re-run. Video-specific: ten concurrent Bernini clips is ten simultaneous paid renders, and the meter ticks on frames, so a 121-frame batch at 4k is not a cheap experiment. Also remember Bernini output has no audio - that's a model property, not a bug in the concurrent wrapper. And if video submits sit in a queue while image submits race ahead, that's the two separate pools working as designed; video is just the slower lane.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A cinematic subtle motion shot. | — |
| modeopt | COMBO | reference_to_video | 3 options: reference_to_video, edit_video, reference_edit_video |
| videoopt | VIDEO | — | |
| video_urlopt | STRING | — | |
| reference_image1opt | IMAGE | — | |
| reference_image2opt | IMAGE | — | |
| reference_image3opt | IMAGE | — | |
| reference_image4opt | IMAGE | — | |
| reference_image5opt | IMAGE | — | |
| reference_image_urlsopt | STRING | Optional reference image URLs, one per line. Up to 5 total. | |
| api_keyopt | STRING | — | |
| negative_promptopt | STRING | — | |
| max_image_sizeopt | INT | 848256–1280 | — |
| num_framesopt | INT | 815–121 | Snapped internally to 4k+1. Use 5 for lowest-cost smoke. |
| frames_per_secondopt | INT | 164–30 | — |
| num_inference_stepsopt | INT | 301–50 | — |
| accelerationopt | COMBO | none | 2 options: none, regular |
| aspect_ratioopt | COMBO | 16:9 | reference_to_video mode only. |
| enable_prompt_expansionopt | BOOLEAN | false | — |
| seedopt | INT | 00–65535 | 0 = random seed. FAL seed max is 65535. |
| image_wayopt | COMBO | base64 | 2 options: base64, image_url |
| video_wayopt | COMBO | upload | 2 options: upload, video_url |
| poll_intervalopt | INT | 61–60 | — |
| max_poll_attemptsopt | INT | 60010–3600 | Default 600*6s = 3600s timeout. |
| skip_erroropt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| task | COMFLY_VIDEO_FUTURE | — |