Zhenzhen Vidu Image2Video
Vidu's image-to-video, with a 300-voice cast
- image
- video
- video_url
- task_id
- response
Vidu is ByteDance's video model family - the kind of thing that normally lives behind a Chinese consumer app and a login you can't get. Comfly_vidu_img2video is the ComfyUI relay that hands you the API anyway: an image in, a short video out, with the whole menu of Vidu options - duration, resolution, motion amount, BGM, and a voiceover system with three hundred voices - exposed as plain node inputs.
It's part of Comfyui_Comfly, so the ground rules hold: paid relay to ai.comfly.chat, one shared API key, zero local compute. The node base64-encodes your image, POSTs it to the relay's /vidu/v2/img2video endpoint, then polls the task endpoint every 10 seconds until the clip is ready. Expect minutes, not seconds.
Inputs that matter
image- the starting frame. This drives everything; Vidu animates what it sees.model- six choices:viduq2-pro,viduq2-turbo,viduq1,viduq1-classic,vidu2.0,vidu1.5. Q2-pro is the current default and the one to reach for first; turbo trades quality for speed.prompt- optional but strongly recommended motion description ("the camera pans right as she walks toward the window").duration- 1–10 seconds (default 5).resolution- 540p/720p/1080p. Higher costs more, and the default 720p is a fine starting point.movement_amplitude- auto/small/medium/large. Small keeps things subtle; large is for dramatic camera moves.
Then the extras that make Vidu distinctive:
audio- turn this on to attach a voiceover, then pickvoice_language(17 languages, Chinese default) andvoice_id(a 300+ entry list of named personas -male-qn-jingying,female-shaonv, and friends).bgm- background music on top.watermark- add a visible watermark;wm_positionpicks the corner (1–4).off_peak- run during off-peak hours for cheaper/faster processing.is_rec- a Vidu-specific mode toggle; leave off unless you know you need it.seed- reproducibility.
Outputs
video - a VIDEO object that wires straight into ComfyUI's Save Video node. video_url is the hosted link, task_id identifies the job on the relay (where you can also track it), and response is the JSON log, errors included.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/ainewsto/Comfyui_Comfly
or ComfyUI Manager → search "Comfyui_Comfly" → install → restart. API key from ai.comfly.chat into the api_key field.
The honest take
This is the most config-heavy node in the pack, and the menu is genuinely the feature - where else do you get 300 named voices in a ComfyUI dropdown? Just don't touch everything at once. Voice + BGM + watermark + 1080p is a recipe for a slow, pricey job; start with image + prompt + default duration, then add layers. The polling loop is patient (up to ~20 minutes of attempts), so a long wait isn't a hang - it's Vidu. And remember the model family is API-only by ByteDance's design, so this relay is the only way most of you will ever touch it.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| model | COMBO | viduq2-pro | 6 options: viduq2-pro, viduq2-turbo, viduq1, viduq1-classic, vidu2.0, vidu1.5 |
| promptopt | STRING | — | |
| api_keyopt | STRING | — | |
| audioopt | BOOLEAN | false | — |
| voice_languageopt | COMBO | 中文(普通话) | 17 options: 中文(普通话), 中文(粤语), English, 日本語, 한국어, Español, +11 |
| voice_idopt | COMBO | male-qn-jingying | 303 options: male-qn-qingse, male-qn-jingying, male-qn-badao, male-qn-daxuesheng, female-shaonv, female-yujie, +297 |
| is_recopt | BOOLEAN | false | — |
| durationopt | INT | 51–10 | — |
| seedopt | INT | 00–2147483647 | — |
| resolutionopt | COMBO | 720p | 3 options: 540p, 720p, 1080p |
| movement_amplitudeopt | COMBO | auto | 4 options: auto, small, medium, large |
| bgmopt | BOOLEAN | false | — |
| off_peakopt | BOOLEAN | false | — |
| watermarkopt | BOOLEAN | false | — |
| wm_positionopt | COMBO | 3 | 4 options: 1, 2, 3, 4 |
| skip_erroropt | BOOLEAN | false | 开启后,节点失败时不报错、按旧行为返回默认空结果;关闭时(默认)失败直接抛出错误。 |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| task_id | STRING | — |
| response | STRING | — |