并发提交|Vidu Q4 Preview 图生/参考视频(4 合 1)
Ten Vidu Q4 clips in one queue — batching preview models without burning credits
- image1
- image2
- image3
- image4
- image5
- image6
- image7
- image8
- image9
- image10
- image11
- image12
- image13
- image14
- image15
- audio1
- audio2
- audio3
- api_config
- future
Video generation is where a fan-out stops being a luxury. A Vidu Q4 clip takes minutes, not seconds, and if you're rendering six shots for a sequence you do not want to watch them happen one at a time. This node is Vidu_Q4_Preview_Video with a future output: same model dropdown, same seconds/resolution/ratio/generate_audio/is_rec/watermark controls, same fifteen image slots and three audio inputs - it just enqueues and returns instead of sitting there.
Why batch this specific node
Because the four Q4 variants are slow and expensive, and a batch lets you do the sensible thing: run the whole set cheap first. Six branches at 3 seconds and 540p tells you which prompts produce motion you like. Then re-run the two that worked at 1080p and a real duration. Sequential execution makes that loop painful enough that people skip it and pay for the expensive version of a prompt that was never going to work.
The receiver side is 并发接收视频(10 路): ten future inputs, ten video outputs, plus status_json. The pack's video pool defaults to 10 workers, so slots and threads line up - dial it with SEEDANCE_VIDEO_CONCURRENCY (1 to 10) if you'd rather not have ten renders in flight.
export SEEDANCE_VIDEO_CONCURRENCY=4 # restart ComfyUI after changing it
One receiver for a mixed batch, incidentally. The receiver is generic over video futures, so you can wire a Vidu generation into future_1, a Topaz upscale of yesterday's clip into future_2, and get video_1 and video_2 out in order. Results are re-ordered by slot, not by completion time, so a fast clip can't shuffle your outputs.
Preflight is where you learn things
The wrapper runs the base node's validation synchronously before enqueuing, and this node's validation is unusually picky - which is a feature at batch scale. In particular:
- An R2V model with an empty prompt fails immediately. Good. That's a remote job you didn't pay for.
- I2V requires exactly one image. Two images in I2V mode is an error, not a coin flip.
- Same for R2V with zero images.
- An audio slot with both a local
audio1connection and anaudio_url1string fails, per slot. - A malformed
audio_url(anything that isn't HTTP or HTTPS) fails before anything is uploaded.
Ninety percent of your batch debugging happens in milliseconds, locally, with a message that names the input. That's genuinely better than the "one node in a chain of thirty went wrong somewhere" experience you get from most API packs.
Audio across a batch
generate_audio is per branch, and that's a nicer setup than it sounds. Branches 1–6 with audio on to see what the model invents, branches 7–10 with it off if you're scoring the sequence yourself with audio1/audio2/audio3 - the local AUDIO inputs get encoded to MP3 and uploaded automatically, so you can wire an audio file from the same graph without leaving ComfyUI.
Keep in mind that a ten-branch R2V sweep with reference audio is ten uploads per audio slot. It'll work; it just won't be instant, and rate limiting during the upload phase is the slowest part of a big batch.
failure_mode, and why it matters more for video
raise stops the run and names the slot. placeholder keeps the nine clips that worked, puts a placeholder video in the slot that didn't, and writes a redacted per-slot status into status_json. On a ten-wide video sweep, placeholder is usually the correct choice - a single upstream hiccup on slot 7 shouldn't cost you nine renders you've already paid for. Branch-level skip_error composes with both.
And note what "preview" means for a batch: if the provider's endpoint starts 502-ing at submit time, it does it for all ten. The pack's own changelog has a chapter on exactly that with Vidu Q3. Build the sweep, but test with one branch first.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/ComfyUI_Seedance.git
cd ..
python -m pip install -r custom_nodes/ComfyUI_Seedance/requirements.txt
ComfyUI Manager: search ComfyUI Seedance, install, restart. One dependency, requests>=2.28, and the receiver node ships in the same pack. Load examples/并发视频2路最小验证.json first if you've never wired a submit/receive pair - it's two branches and it makes the pattern obvious. Each submit node still needs a key: its own api_config connection, or SEEDANCE_API_KEY in the environment, or config/.env.
Last thing, and it's the one that matters: ten slots means ten billed renders, several of them minutes long. The 2-way example exists for a reason. Draft the whole batch at 540p, then spend real money on the two branches that deserve it.
Inputs (32)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | vidu-q4-preview-i2v | 4 options: vidu-q4-preview-i2v, vidu-q4-preview-r2v, vidu-q4-preview-global-i2v, vidu-q4-preview-global-r2v |
| prompt | STRING | Required for R2V; optional for I2V | 参考生视频必填,图生视频可留空 | |
| seconds | COMBO | 5 | 14 options: 3, 4, 5, 6, 7, 8, +8 |
| resolution | COMBO | 720p | 5 options: 540p, 720p, 1080p, 2k, 4k |
| ratio | COMBO | 16:9 | R2V only | 仅参考生视频生效 |
| generate_audio | BOOLEAN | true | — |
| is_rec | BOOLEAN | true | — |
| watermark | BOOLEAN | false | — |
| audio_url1 | STRING | Public MP3 URL or connect audio | MP3 直链或连接音频 | |
| audio_url2 | STRING | Public MP3 URL or connect audio | MP3 直链或连接音频 | |
| audio_url3 | STRING | Public MP3 URL or connect audio | MP3 直链或连接音频 | |
| image1opt | IMAGE | Reference 1/15 | 参考图 1/15 | |
| image2opt | IMAGE | Reference 2/15 | 参考图 2/15 | |
| image3opt | IMAGE | Reference 3/15 | 参考图 3/15 | |
| image4opt | IMAGE | Reference 4/15 | 参考图 4/15 | |
| image5opt | IMAGE | Reference 5/15 | 参考图 5/15 | |
| image6opt | IMAGE | Reference 6/15 | 参考图 6/15 | |
| image7opt | IMAGE | Reference 7/15 | 参考图 7/15 | |
| image8opt | IMAGE | Reference 8/15 | 参考图 8/15 | |
| image9opt | IMAGE | Reference 9/15 | 参考图 9/15 | |
| image10opt | IMAGE | Reference 10/15 | 参考图 10/15 | |
| image11opt | IMAGE | Reference 11/15 | 参考图 11/15 | |
| image12opt | IMAGE | Reference 12/15 | 参考图 12/15 | |
| image13opt | IMAGE | Reference 13/15 | 参考图 13/15 | |
| image14opt | IMAGE | Reference 14/15 | 参考图 14/15 | |
| image15opt | IMAGE | Reference 15/15 | 参考图 15/15 | |
| audio1opt | AUDIO | R2V audio 1/3; encoded as MP3 | 参考音频 1/3,自动转为 MP3 | |
| audio2opt | AUDIO | R2V audio 2/3; encoded as MP3 | 参考音频 2/3,自动转为 MP3 | |
| audio3opt | AUDIO | R2V audio 3/3; encoded as MP3 | 参考音频 3/3,自动转为 MP3 | |
| api_configopt | SEEDANCE_CONFIG | — | |
| skip_erroropt | BOOLEAN | false | — |
| seedopt | INT | 00–18446744073709550000 | ComfyUI cache seed. Fixed reuses the cached result while all other inputs stay unchanged; randomize/increment/decrement starts a new execution. This value is not sent to models without documented seed support. | ComfyUI 缓存种子;Fixed 在其他输入不变时复用缓存,随机、递增或递减会触发新任务。未声明支持 seed 的模型不会收到此参数。 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| future | SEEDANCE_VIDEO_FUTURE | — |