FlashVSR 480P 视频超分
480P video in, genuinely sharper video out — no weights
- input_video
- api_config
- video
- video_url
- task_id
- response
FlashVSR is a real-time video super-resolution model, and normally you'd need a decent GPU and a pile of weights to run it. This node calls a hosted copy of it instead - the pack's own tests turned a 854×480, 3-second H.264 clip into a valid 1920×1024 MP4. If you've got an old SD 1.5-era render or a phone clip sitting at 480P that you want upscaled before it goes anywhere near your final workflow, this is the cheap, zero-VRAM way to do it.
It's an API-wrapper node from T8mars/ComfyUI_Seedance, so the usual deal applies: you need a key from api.seedance.nz, not a graphics card. And don't expect a free lunch - video super-resolution is the priciest per-call job in this pack.
How it works
The model rides the "legacy" compatible video endpoint (/v1/video/generations, not the newer /v1/videos). You give it exactly one source - either a local ComfyUI VIDEO (which gets uploaded automatically) or a public MP4 video_url - and the node stuffs that into metadata.video_url, submits the task, polls until it's done, then downloads and verifies the result. Downloads go through the pack's resilient chain: .part temp file, MP4 ftyp header check, and a fallback to system curl if the Python connection dies. That reliability layer is the part people actually hit, because result servers are slow.
The inputs that matter
- video_url - a public MP4 direct link. Leave empty if you're wiring in local video.
- input_video - the local ComfyUI
VIDEO. This is the one you'll actually reach for 90% of the time: load a clip, drag it in. - api_config - connect a
Seedance API Confignode, or rely onSEEDANCE_API_KEY. - skip_error - on, it returns a placeholder video instead of killing the whole workflow. Nice for batch jobs.
Outputs are video (the upscaled VIDEO, ready for SaveVideo), video_url, task_id and response.
Where people get burned: the source must be 480P, 3–15 seconds - the model is trained for that input band, and the node won't negotiate. And it accepts exactly one source. Wire input_video and fill video_url and it'll refuse with a clear error. Keep them mutually exclusive.
Installing it
From ComfyUI Manager, search "ComfyUI Seedance", or:
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 ComfyUI, grab a key at api.seedance.nz/console, and connect the Config node. Only dependency in the whole pack is requests - no model files to babysit.
Common issues
- Source rejected - check duration (3–15s) and that it's actually 480P. Upscaling a 720P clip "just to be safe" is not the way; the model expects 480P.
- Both sources set - pick one:
input_videoorvideo_url. - Slow downloads - the result CDN can be slow; the node's timeout budget (180s total) usually covers it, but big clips on a slow line can trip. If downloads fail on a proxy, check
HTTP_PROXY/HTTPS_PROXY- a stale proxy env var is the classic culprit in this pack.
One honest caveat: for heavy jumps (256px → 1024px), the KB's own upscaling doc notes SeedVR2 beats FlashVSR on restoration quality. FlashVSR is the fast, free-your-GPU path; it's not the last word in detail-add.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| video_url | STRING | Optional public video URL. Leave empty when connecting input_video. The source must be 480P and 3-15 seconds. | 可选公网视频直链;连接 input_video 时留空。源视频必须为 480P,时长 3-15 秒。 | |
| input_videoopt | VIDEO | Local ComfyUI video to upload. Use exactly one local video or one public URL. | 本地 ComfyUI 视频;本地视频和公网直链二选一。 | |
| 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 | — |