Seedance 2.0 BytePlus Media Reference to Video
Drag local images and video straight into the request
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- video_1
- video_2
- video_3
- video_url
- video
- task_id
- raw_json
This is the "just drag your stuff in" node of the pack. Seedance2BytePlusMediaReferenceToVideo takes up to six local IMAGE tensors and three local VIDEO tensors right from your graph - no hosting, no URLs, no copy-paste - plus a prompt, and asks ByteDance's Seedance 2.0 to make a new video that uses them as references. If you've already got frames sitting in ComfyUI from a Load Image or a frame extraction, this is the path of least resistance.
The mechanism is where it gets interesting. Local media can't be "referenced" by URL because ByteDance's servers can't reach your machine, so the node encodes it into the request: each image becomes a base64 PNG data URL (data:image/png;base64,...), each video becomes a base64 mp4 data URL, and they're attached with role labels - reference_image for images, reference_video for videos. The audio reference, interestingly, only comes in as a URL (audio_url_1); there's no local audio input, so if you want an audio reference you'll need it hosted somewhere. Same for the extra image_url_1 and video_url_1 string inputs, which mix in as bonus hosted references alongside the local tensors.
From there it's the pack's standard pipeline: POST the content list to {base_url}/contents/generations/tasks, poll the task ID every poll_seconds (default 9) until succeeded, then download the finished mp4 as a Comfy VIDEO object. If you feed it nothing, the code refuses: "Media Reference to Video needs at least one image, video, image_url, video_url, or audio_url."
The settings you'll actually touch mirror the rest of the pack: prompt (multiline, still required - references don't replace it), model (Seedance 2.0 or Fast - Fast rejects 1080p with a hard error), resolution (480p/720p/1080p), ratio (defaults to adaptive so it can match your reference's shape), duration (4–15 seconds), generate_audio (on by default), plus seed, watermark, poll_seconds, timeout_seconds, and base_url. Outputs: video_url, video, task_id, raw_json - the video wire is what you run into the Save Video node.
Install
ComfyUI Manager → search ComfyUI-Seedance2-Direct-BytePlus, or:
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/aisam1989/ComfyUI-Seedance2-Direct-BytePlus
Restart, search Seedance 2.0 BytePlus. No local model downloads; the work happens on BytePlus's side, billed per task.
The catch the README is frank about
Base64 data URLs are a convenience, not a promise. The README says it straight: "If BytePlus rejects video data URLs for your account, a hosted upload step will be needed." In practice, video data URLs are the fragile link in this chain - big, slow to ship, and some accounts/regions reject them outright. Images in base64 are much more dependable; video references are where you may need to fall back to hosting the clip and using the pack's URL-based Seedance2BytePlusReferenceToVideo node instead.
And remember what you're talking to. This is a closed API with ByteDance's moderation bolted on - reference videos containing identifiable real people have been rejected with a privacy-content error in the community's experience, and you can't tune that out like a local model. Character shots, AI-generated references, and product-style media are the safe lanes. Test with one cheap 480p job before you burn credits iterating on a big one.
Inputs (24)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| prompt | STRING | — | |
| model | COMBO | Seedance 2.0 | 2 options: Seedance 2.0, Seedance 2.0 Fast |
| resolution | COMBO | 720p | 3 options: 480p, 720p, 1080p |
| ratio | COMBO | adaptive | 7 options: 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, +1 |
| duration | INT | 54–15 | — |
| generate_audio | BOOLEAN | true | — |
| image_1opt | IMAGE | — | |
| image_2opt | IMAGE | — | |
| image_3opt | IMAGE | — | |
| image_4opt | IMAGE | — | |
| image_5opt | IMAGE | — | |
| image_6opt | IMAGE | — | |
| video_1opt | VIDEO | — | |
| video_2opt | VIDEO | — | |
| video_3opt | VIDEO | — | |
| image_url_1opt | STRING | — | |
| video_url_1opt | STRING | — | |
| audio_url_1opt | STRING | — | |
| seedopt | INT | 00–2147483647 | — |
| watermarkopt | BOOLEAN | false | — |
| poll_secondsopt | INT | 93–60 | — |
| timeout_secondsopt | INT | 90060–3600 | — |
| base_urlopt | STRING | https://ark.ap-southeast.bytepluses.com/api/v3 | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| video_url | STRING | — |
| video | VIDEO | — |
| task_id | STRING | — |
| raw_json | STRING | — |