Nodes/Comfyui-zhenzhen/Concurrent Submit | zhenzhen-Topaz 视频高清修复(平价小屋)
ComfyUI Node

Concurrent Submit | zhenzhen-Topaz 视频高清修复(平价小屋)

Topaz Video Upscaling from Inside ComfyUI — Ten Clips in Parallel

By T8mars·Created about a year ago·Updated 3 days ago· 755
Concurrent Submit | zhenzhen-Topaz 视频高清修复(平价小屋)
  • input_video
  • api_config
  • task
◄video_url►
◄resolution1080p►
◄modelMax►
◄skip_errorfalse►
◄seed0►

Topaz is still the commercial video-restoration benchmark everyone measures against - it's the number the open models get compared to, and in the KB's own tally it shows up in more 2026 discussions than SUPIR and ESRGAN combined. It's also the thing you can't run in ComfyUI, because there are no weights to download. So this node rents it.

It is the concurrent twin of zhenzhen-Topaz 视频高清修复: same inputs, but instead of blocking until the clip comes back, it pushes the job into the pack's shared 10-worker video pool and returns a ticket. Ten clips finish in about the time the slowest one takes. Given that Topaz passes are minutes-per-clip rather than seconds, that's the difference between a coffee break and an afternoon.

How it works

Like every concurrent node in this pack, it's generated at import rather than hand-written: the pack walks its own registry, and for each node whose primary output is VIDEO it mints a submit class with a deep-copied INPUT_TYPES and a submit() that runs the original on a background thread. The return is a single task of type COMFLY_VIDEO_FUTURE. While the plain node submits, polls, downloads and decodes in one blocking call, this one hands you the receipt and moves on.

So the wiring rule is non-negotiable: task goes into Concurrent Collect Videos (10), which waits on every connected ticket and returns video_1 … video_10 in slot order plus a status string. Its failure_mode is fail_fast by default; switch it to placeholder if you'd rather keep a ten-clip batch alive when one clip is rejected upstream. A submit node with nothing downstream of it never executes at all - no wasted credits, just silence.

The video pool is separate from the 30-slot image pool but shared across the whole pack, so your upscales queue behind any other video node you've fired. COMFLY_VIDEO_CONCURRENCY and COMFLY_VIDEO_PENDING override the defaults at startup.

The three inputs, and the one that lies

  • video_url - a public HTTP(S) MP4 URL. Must parse as a real URL; the validator checks.
  • input_video - a VIDEO from your graph instead. You supply exactly one of these two; both or neither is an error, not a silent preference.
  • resolution - 720p, 1080p, 2K, 4K. The tooltip is careful about what this means: an output pixel budget that preserves the source aspect ratio. It will not letterbox your vertical clip into landscape.
  • model - and here's the lie. The widget says model; the tooltip says restoration model; the code submits it as metadata.quality. It's Ultra, Max, High, Medium, Low. There is no second model to pick. Max is the default and the sensible starting point; Ultra is for when the source is genuinely rough and you've accepted what restoration does to grain.

Nothing else goes out - no prompt, no duration, no frame rate. You are not generating, you are restoring. seed is ComfyUI cache control only and is never sent to Topaz, which matters: leave it fixed while you try different quality tiers, so re-running with an unchanged graph doesn't re-bill the same clip.

Install

Manager → search zhenzhen, or:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
# restart ComfyUI

Then add a zhenzhen-seedance2-low-price-api-settings node, paste the key from the provider's site, and wire it into api_config - or set SEEDANCE_API_KEY. Nothing here runs locally, so no model files and no VRAM. First startup installs aiohttp, transformers, opencv-python and the rest from requirements.txt, and the pack starts a small helper web app on port 8080 for its front-end widgets.

Where people get burned

A timed-out submission is not a failed submission. The code refuses to replay a create request that times out, deliberately, because the job may already be running - and you'd be paying for it twice. The error message tells you to check the task list on the provider's website before retrying. Do that.

Check your source before you spend. Topaz is a restorer, not a generator: it cleans noise, sharpens, and resolves detail that's actually present. Feed it a 256p clip and you get a bigger 256p clip with confident edges. If you need a genuinely soft source rebuilt rather than cleaned, that's generative territory - the same pack ships a FlashVSR upscale node for the cheap low-resolution case, and the KB's upscaler hierarchy is the right map for choosing between restoration and regeneration.

And set expectations on identity. Any restore pass touches faces, and faces are where people notice. Long clips through Topaz look great on texture and slightly off on the person you were trying to keep. That's the medium, not this node.

Categoryzhenzhen/Seedance2 Low Price/Concurrent Submit

Inputs (7)

NameTypeDefaultDescription
video_urlSTRINGPublic MP4 URL; leave empty for input_video.
resolutionCOMBO1080pOutput pixel budget; preserves source aspect ratio.
modelCOMBOMaxRestoration model; submitted as metadata.quality.
input_videooptVIDEO—
api_configoptZHENZHEN_SEEDANCE2_CONFIG—
skip_erroroptBOOLEANfalse—
seedoptINT00–18446744073709550000ComfyUI cache seed only; not sent to Topaz.

Outputs (1)

NameTypeDescription
taskCOMFLY_VIDEO_FUTURE—