Seedance 2.5 · Reference to Video
Up to 30 images, and the billing to match
- reference_image_urls
- reference_video_urls
- reference_audio_urls
- video
- last frame
- task id
Reference-to-video is the node that solves the problem every local workflow has been hacking around for three years: keeping a character or a product consistent across shots. Instead of training a LoRA, wiring IP-Adapter and praying, you hand the model up to 30 images of what should stay the same and up to 10 clips of how it should move, and it renders a clip that carries those references forward. No weights, no per-character training run - and no illusion of control, either. You get what the model decides to keep.
The mechanism
This is PopNow's node for ByteDance's bytedance/seedance-2.5/reference-to-video model. The three reference inputs are autogrow socket groups: each image or clip you connect adds a new socket, so a 12-image character sheet is twelve connections and no extra nodes. On queue, everything is uploaded, the prompt plus references go to the model, and the finished MP4 comes back decoded as a ComfyUI VIDEO. Uploads are content-hash cached for 12 hours, so iteration doesn't re-upload the batch.
Rates start at 11.07 credits per second - cheaper than 2.5's text-to-video, because references do part of the work the model would otherwise invent.
What to set, and the limits that bite
reference_image_urls- up to 30 images. Characters, style, scene composition. The tooltip adds a rule people miss: it can't be combined with a first-frame image. This node has no first-frame socket, so you're fine here; just don't expect to also pin your opening frame.reference_video_urls- up to 10 clips, each 2–30 seconds, 30 seconds total. Motion and pacing. Reference footage is added to the billed duration, so ten clips costs you on both ends: once as reference seconds, once as output.reference_audio_urls- up to 10 clips, same 2–30s / 30s-total limits. Generated soundtrack follows them - the tooltip names beat matching and lip sync, which is the most useful thing on this node you probably haven't tried.duration_seconds- 4 to 30, integer. The billed quantity.resolution- 480p, 720p, 1080p. No 4K tier on 2.5.aspect_ratio- 21:9 through 9:16, oradaptive.output_format-mp4ormov. MOV if it's going into an editor that prefers ProRes-ish pipelines; otherwise mp4.watermark- off by default. Leave it off unless you want the visible "AI generated" mark.generate_audio,enable_web_search,seed- audio on by default, web search off, seed fixed.
Outputs
Three: video, last frame (an IMAGE, only when return_last_frame is on - otherwise the socket blocks downstream with an error that reads like a bug and isn't), and task id for the API console.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Or search PopNow in Manager. Restart, then add your key from popnow.ai/api/console/keys via Settings > PopNow or POPNOW_API_KEY, and restart again so the node list rebuilds from your catalog. Zero pip dependencies - the pack declares none.
The honest problems
- Reference capacity is not reference fidelity. Thirty images is not thirty times better. Two clean, well-lit, consistent-angle images usually beat twenty near-duplicates, and conflicting references (different faces, different lighting) give you a mushy average.
- Audio references cost seconds twice. Easy to forget, expensive to discover.
PopNow 40004- an unsupported combination; the message names the field. Most often it's a total reference length over the 30-second budget.PopNow 40201- credits gone. At 11+ credits per second with references on top, a 30-second test run isn't a test run.- Cancel ≠ stop. The job continues on PopNow and bills if it succeeds. Use
Settings > PopNow > Max credits per runas the real guard.
Where this beats the local route is narrow and real: a character you need in three shots this afternoon, and no time to train anything. Where it loses is everything reproducible - no LoRA, no seed stability across prompts, no "same character forever". If you're building a series, this is a fast previs tool, not a pipeline.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | What to generate: subject, action, camera movement and mood. | |
| aspect_ratio | COMBO | adaptive | Aspect ratio of the generated video. |
| resolution | COMBO | 720p | Output resolution. Super-resolution tiers are not offered. |
| duration_seconds | INT | 54–30 | Clip length in seconds. This is the billed quantity. |
| generate_audio | BOOLEAN | true | Generate a native soundtrack synchronised to the picture. |
| output_format | COMBO | mp4 | Container of the returned video. |
| enable_web_search | BOOLEAN | false | Let the model search the web for information related to the prompt before rendering. |
| seed | INT | 00–2147483647 | Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed. |
| return_last_frame | BOOLEAN | false | Also return the clip’s final frame as a separate image. |
| watermark | BOOLEAN | false | Ask the model to watermark the video as AI-generated. |
| reference_image_urlsopt | COMFY_AUTOGROW_V3 | Reference image URLs that carry over characters, style or scene composition. Up to 30 images. Cannot be combined with a first-frame image. | |
| reference_video_urlsopt | COMFY_AUTOGROW_V3 | Reference video URLs that carry over motion and pacing. Up to 10 clips, 2-30 seconds each and 30 seconds in total. Reference footage is added to the billed duration. | |
| reference_audio_urlsopt | COMFY_AUTOGROW_V3 | Reference audio URLs the generated soundtrack follows, for beat matching or lip sync. Up to 10 clips, 2-30 seconds each and 30 seconds in total. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| last frame | IMAGE | Needs return_last_frame turned on. |
| task id | STRING | The PopNow task id, for the API console logs or support. |