Vidu Q3 Turbo · Video Extend
Chaining Vidu Q3 Turbo Video Extend in the same graph
- video_url
- video
- task id
Every image-to-video model in this pack caps out at 16 seconds, which is a fact you discover after generating something good that clearly wants to keep going. This node is the continue button: hand it a clip and a prompt for what happens next, and it appends a new segment. The best part is that it's a VIDEO-socket node in a VIDEO-returning pack, so you can wire the previous node's output straight into it and never touch a file.
The chaining trick
video_url is a socket, not a text box. That's the difference between this being pleasant and being a manual file-shuffling chore. PopNow_vidu_q3_turbo_image_to_video returns VIDEO; this node consumes VIDEO; connect them in one graph and queue once. Frames produced by your own nodes work too - anything that outputs ComfyUI's VIDEO type, which the pack handles by re-encoding the incoming clip to MP4 before uploading.
The author's description of the behaviour is precise and worth reading twice: the source clip's last frame opens the new segment, and the result is your clip with the new segment joined on. It's not a new clip of the continuation - it's the whole thing.
What it costs
Only the new segment is billed. The source is added on top and isn't charged, which makes extending genuinely cheaper than re-generating a longer shot from scratch. The per-second rate is the same as the Turbo image-to-video pair, at 540p or 720p.
Chain three extensions and you've paid for three segments and got yourself a 20-second clip out of a node family that advertises 16. Keep an eye on it, though: each extension is a separate billed run, so a four-part chain is four times the number next to a single take.
The fields
video_url - the clip to continue. MP4, MOV or WebM, up to 60 seconds in the source. Match your source's resolution in the setting below or you'll get a visible step in sharpness at the seam.
prompt - what happens next. The author's guidance is action, camera move, and sound. This is where most extensions fail aesthetically: if you don't state motion, you get a camera that keeps drifting because the model is extrapolating from the last second of the previous shot.
movement_amplitude - auto, small, medium, large, applied to the new segment only. auto is fine; small is the right call when you're extending a slow push and don't want it to turn into a charge.
duration_seconds - 1 to 16, the length of the new segment.
resolution - 540p or 720p, and the tooltip is blunt about its real function: it sets how sharp the new part is. That's the single most useful sentence on this node. Mismatched resolution is the classic "the join looks wrong" complaint.
generate_audio - generate sound for the new segment. The source keeps its own sound either way.
bgm - a music bed over the new segment only, also without touching the source. So a clip that was scored by the model will suddenly switch beds at the seam if you extend with bgm on and the source had something different. That's the audio version of the resolution mismatch.
seed - fixed by default, meaning a repeat queue gives you the same result instead of a second bill.
Outputs: video (the joined clip) and task id.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
or install PopNow from Manager and restart, or comfy node install popnow-comfyui. No weights, no extra dependencies - it's an HTTPS client for api.popnow.ai. Key goes in Settings > PopNow or POPNOW_API_KEY, then restart once more so the catalog-driven node list rebuilds. Coming from the standalone popnow_api.py file? Delete it.
Where it goes wrong
Starting from a file on disk needs a loader. If your clip came from somewhere else, load it with a video loader node first so it arrives as VIDEO - pointing at a path won't work, the socket wants the type.
The seam is a real seam. Two segments, two generations, and the model has read the last frame but not the music, the grade or the intent. Extending once works; extending five times produces a clip that gradually forgets what it was about.
Resolution mismatch is the most common quality complaint and it's self-inflicted: 540p source, 720p segment, or the reverse. Match it.
Sources longer than 60 seconds are rejected - trim first.
Credit errors. PopNow 40201 means the wallet's empty; PopNow 40004 means the model won't serve that combination, usually a resolution the source can't be matched at. Set Max credits per run to cap a chain you're not sure about.
Cancelling stops the wait, not the job. The extension keeps rendering on PopNow, is charged if it succeeds, and ends up in the API console rather than ComfyUI/output.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| video_url | VIDEO | The clip to continue: MP4, MOV or WebM, up to 60 seconds. Its last frame opens the new segment, and the result is your clip with the new segment joined on. | |
| prompt | STRING | Describe what happens next: the action that follows, the camera move and the sound. | |
| movement_amplitude | COMBO | auto | How much things in the new segment move. |
| duration_seconds | INT | 51–16 | Length of the new segment in seconds, from 1 to 16. The source clip is added on top and is not billed. |
| resolution | COMBO | 720p | Resolution of the generated new segment. It sets how sharp the new part is; match your source clip. |
| generate_audio | BOOLEAN | true | Generate sound for the new segment. The source keeps its own sound either way. |
| bgm | BOOLEAN | true | Add a background music bed to the new segment. The source keeps its own sound. |
| 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. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The PopNow task id, for the API console logs or support. |