并发提交|Vidu Q3 视频生成
Batch Vidu Q3 clips — t2v, i2v, start-end, and up to 9-image reference video
- image1
- image2
- image3
- image4
- image5
- image6
- image7
- image8
- image9
- api_config
- future
Vidu Q3 is the pack's video model from ShengShu - and it's the one where you should pay attention to the README before you commit a workflow to it. This node is the concurrent-submit wrapper over the whole Q3 spread: thirteen models covering text-to-video, image-to-video, start-end frame animation, and reference-to-video, with pro/turbo/fast tiers.
Concurrency is the pack standard: validate parameters, push the job to a background video thread pool, return a SEEDANCE_VIDEO_FUTURE. Wire that into SeedanceConcurrent_Video_Await, which waits on up to ten video futures and returns finished VIDEO values in slot order.
The inputs that matter
model- 13 choices. t2v takes prompt only; i2v takesimage1as the first frame; start-end takesimage1+image2; r2v takes however many ofimage1…image9you connect, compacted to order.prompt- required for t2v, per-model for the rest, up to 20480 chars.seconds- 4 to 15, submitted as a string.ratio- forwarded asmetadata.ratiounlessadaptive.resolution-default(leaves the API default alone),720p, or1080p.seed--1= random; a non-negative value gets forwarded asmetadata.seed- this is one of the models in the pack that genuinely accepts a seed.
Plus api_config and skip_error (placeholder video on failure). The cache seed applies too.
The honest warning about r2v
Same story as Kling's r2v: at last testing, the Vidu reference-to-video models (vidu-q3-r2v, vidu-q3-mix-r2v, vidu-q3-ad-r2v, vidu-q3-drama-r2v) were returning an upstream 502 invalid_upstream_response at submit time. The t2v, i2v, and start-end paths were verified working. That's an upstream channel issue, not something you can fix on the node - if you need reference-based Vidu video, wait for the channel or use i2v with a composed first frame.
How it runs
Standard wrapper machinery: reference images upload automatically, submit → poll → download, MP4-header check before a result counts. One slot failing isolates: raise mode on the receiver stops and names it; placeholder keeps the batch going.
Installing
# ComfyUI Manager: search "ComfyUI Seedance" → install → restart.
# or:
comfy node install seedance
# or:
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
Only requests; no weights. API key via Seedance API Config, SEEDANCE_API_KEY, or config/.env.
Where people trip
- r2v 502s - expected at last check. Build around it or it'll look like your workflow is broken when it isn't.
seedis real here - unlike the cache-only seeds on some siblings, a non-negative Vidu seed is forwarded to the API, so you can actually reproduce a look.resolution=defaultmeans "don't send it" - if you want a guaranteed resolution, pick 720p or 1080p explicitly.
Standard pack caveats: metered per clip, your prompt and frames leave the machine, links are temporary. Save what you keep.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | vidu-q3-turbo-t2v | Vidu Q3 task type. t2v uses prompt; i2v uses image1; start-end uses image1+image2; r2v uses up to 9 images. | Vidu Q3 任务类型:文生、图生、首尾帧、参考生视频。 |
| prompt | STRING | Text prompt, up to 20480 chars. In multimodal mode you can reference materials as @Image 1 / @Video 1 / @Audio 1. | 文本提示词,多模态可用 @Image 1、@Video 1 指代第几个素材。 | |
| seconds | COMBO | 4 | Video duration in seconds, submitted as a string. | 视频时长,按字符串提交。 |
| ratio | COMBO | 16:9 | Aspect ratio forwarded as metadata.ratio for Vidu aspectRatio mapping. | 画幅会通过 metadata.ratio 映射给 Vidu aspectRatio。 |
| resolution | COMBO | default | Optional metadata.resolution; default leaves the API default. | 可选 metadata.resolution;default 使用 API 默认值。 |
| seed | INT | -1-1–2147483647 | -1 = random seed; non-negative values are forwarded to metadata.seed. | -1 表示随机种子,非负整数透传到 metadata.seed。 Fixed reuses the cached result while all inputs stay unchanged; randomize/increment/decrement starts a new execution. | Fixed 在输入不变时复用缓存;随机、递增或递减会触发新任务。 |
| image1opt | IMAGE | Optional Vidu image 1. i2v uses image1; start-end uses image1+image2; r2v uses connected images in compacted order. | 可选 Vidu 图片 1;i2v 用 image1;首尾帧用 image1+image2;r2v 按已连接图片顺序提交。 | |
| image2opt | IMAGE | Optional Vidu image 2. i2v uses image1; start-end uses image1+image2; r2v uses connected images in compacted order. | 可选 Vidu 图片 2;i2v 用 image1;首尾帧用 image1+image2;r2v 按已连接图片顺序提交。 | |
| image3opt | IMAGE | Optional Vidu image 3. i2v uses image1; start-end uses image1+image2; r2v uses connected images in compacted order. | 可选 Vidu 图片 3;i2v 用 image1;首尾帧用 image1+image2;r2v 按已连接图片顺序提交。 | |
| image4opt | IMAGE | Optional Vidu image 4. i2v uses image1; start-end uses image1+image2; r2v uses connected images in compacted order. | 可选 Vidu 图片 4;i2v 用 image1;首尾帧用 image1+image2;r2v 按已连接图片顺序提交。 | |
| image5opt | IMAGE | Optional Vidu image 5. i2v uses image1; start-end uses image1+image2; r2v uses connected images in compacted order. | 可选 Vidu 图片 5;i2v 用 image1;首尾帧用 image1+image2;r2v 按已连接图片顺序提交。 | |
| image6opt | IMAGE | Optional Vidu image 6. i2v uses image1; start-end uses image1+image2; r2v uses connected images in compacted order. | 可选 Vidu 图片 6;i2v 用 image1;首尾帧用 image1+image2;r2v 按已连接图片顺序提交。 | |
| image7opt | IMAGE | Optional Vidu image 7. i2v uses image1; start-end uses image1+image2; r2v uses connected images in compacted order. | 可选 Vidu 图片 7;i2v 用 image1;首尾帧用 image1+image2;r2v 按已连接图片顺序提交。 | |
| image8opt | IMAGE | Optional Vidu image 8. i2v uses image1; start-end uses image1+image2; r2v uses connected images in compacted order. | 可选 Vidu 图片 8;i2v 用 image1;首尾帧用 image1+image2;r2v 按已连接图片顺序提交。 | |
| image9opt | IMAGE | Optional Vidu image 9. i2v uses image1; start-end uses image1+image2; r2v uses connected images in compacted order. | 可选 Vidu 图片 9;i2v 用 image1;首尾帧用 image1+image2;r2v 按已连接图片顺序提交。 | |
| api_configopt | SEEDANCE_CONFIG | Connect Seedance API Config; otherwise SEEDANCE_API_KEY is used. | |
| skip_erroropt | BOOLEAN | false | On failure return a placeholder error video instead of stopping the workflow. | 失败时输出占位错误视频。 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| future | SEEDANCE_VIDEO_FUTURE | — |