VOSR2 2K 视频超分
2K video upscaling with zero VRAM — VOSR2_Video_Upscale hands the footage to the cloud
- input_video
- api_config
- video
- video_url
- task_id
- response
Video upscaling is the expensive corner of the upscaling world: per-frame image upscalers fall apart on motion, and the models that keep consecutive frames consistent are the ones that eat your whole GPU. So this node's whole pitch is "let someone else's GPU do it." VOSR2_Video_Upscale (display name "VOSR2 2K 视频超分") is an API node inside ComfyUI_Seedance: you connect a local video or paste a public URL, and the api.seedance.nz gateway runs a vosr2-video-upscale model server-side and returns a 2K video into your graph.
Why you'd reach for it
If you already run SeedVR2 or FlashVSR locally for video, this is probably not an upgrade - it's a paid alternative with a fixed output. Where it earns its keep is the situation the community actually hitches on: you have footage and no card big enough to upscale it in reasonable time, or you're already inside this pack's ecosystem for its cloud video generators and adding one more API model costs you nothing new to learn. You get a clean VIDEO output, a progress bar, and none of the temporal-consistency headaches that make local video SR fiddly - that part is the upstream model's problem, not yours.
The honest caveat, same as every API node: your source video is uploaded to a third-party server, and each job is metered. For a single clip you don't care; for a hundred, do the math first. And there's no quality/size control here - the output is 2K, period.
How it works
You give it exactly one source. Either connect a ComfyUI VIDEO to input_video, which the node uploads automatically (it handles mp4, mov, avi and mkv containers), or type a public video URL into video_url. Then it submits POST /v1/video/generations with model=vosr2-video-upscale and the source tucked into metadata.video_url, polls the task, and downloads the 2K result as a standard VIDEO. Set both inputs and it errors - one source only. Set neither and it errors too, before you've paid for anything.
The inputs and outputs that matter
- input_video - a local ComfyUI video. The most common choice; drag in a
Load Videooutput. - video_url - a public, direct-link video URL. Use this when the clip is already hosted (S3, Imgur-hosted mp4, whatever) and you don't want to upload. Leave it empty when you connect
input_video. - api_config - optional; connect a
Seedance API Confignode, or let it useSEEDANCE_API_KEY/config/.env. - skip_error - when on, failures return a placeholder video instead of aborting the workflow.
Outputs: video (the 2K result - feed it to SaveVideo or a preview node), plus video_url (the temporary result link), task_id, and response for logging.
Installing it
The node ships inside ComfyUI_Seedance, so install the whole pack:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/ComfyUI_Seedance.git
cd ../.. && python -m pip install -r custom_nodes/ComfyUI_Seedance/requirements.txt
Restart after that. In ComfyUI Manager, search "ComfyUI Seedance" or seedance and install from there - same result. No model files, and the only Python dependency is requests. You need an API token from api.seedance.nz/console.
Common issues
- "VOSR2 accepts exactly one source" - you filled
video_urland connectedinput_video. Pick one. - "connect input_video or provide video_url" - both were empty. The URL field defaults to blank, so a forgotten connection is the usual cause.
- The public URL didn't work - it must be an
http(s)direct link, not a YouTube or Drive page. The node validates the scheme up front. - Missing API key - connect
Seedance API Configor setSEEDANCE_API_KEYbefore launching. - Windows SSL errors - a known pack quirk; update
requests/certifi, or setSEEDANCE_CA_BUNDLE. There's alsoSEEDANCE_SSL_VERIFY=0, but treat that as a temporary debug lever. - Result gone later - gateway links are temporary. Save the
videooutput while it's fresh.
Upscale one clip now and again and this is a nice no-brainer. Upscale footage at scale and you'll want the concurrent sibling node instead, which fans this out to ten parallel jobs. That's the version this pack is really built around.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| video_url | STRING | Optional public video URL. Leave empty when connecting input_video. | 可选公网视频直链;连接 input_video 时留空。 | |
| input_videoopt | VIDEO | Local ComfyUI video to upload. Use exactly one local video or one public URL. The result is a 2K video. | 本地 ComfyUI 视频;本地视频和公网直链二选一,结果为 2K 视频。 | |
| api_configopt | SEEDANCE_CONFIG | Connect Seedance API Config; otherwise SEEDANCE_API_KEY is used. | |
| skip_erroropt | BOOLEAN | false | On failure return a placeholder error video instead of stopping the workflow. | 失败时输出占位错误视频而不中断工作流。 |
| seedopt | INT | 00–18446744073709550000 | ComfyUI cache seed. Fixed reuses the cached result while all other inputs stay unchanged; randomize/increment/decrement starts a new execution. This value is not sent to models without documented seed support. | ComfyUI 缓存种子;Fixed 在其他输入不变时复用缓存,随机、递增或递减会触发新任务。未声明支持 seed 的模型不会收到此参数。 |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| task_id | STRING | — |
| response | STRING | — |