FAL Topaz Upscale Video (Soze)
Send your clips to Topaz's cloud, keep the timeline on your machine
- video
- video
- video_url
- status
Topaz Video AI is the desktop app people buy for one reason: it makes old, soft or low-res footage look dramatically better, at the cost of a GPU grinding for a long time. FAL Topaz Upscale Video puts the same models behind a fal API endpoint (fal-ai/topaz/upscale/video) and wraps them in a node: source video in, upscaled video back, and your local GPU never breaks a sweat.
The upscaling hierarchy from the KB is worth recalling here: this is the "more pixels over time" category, where every frame has to agree with its neighbors. That's a genuinely different job from single-image upscaling, and it's the one with the least settled local answer - which is why a hosted Topaz tier has a real niche. Paid API, pay per video, nothing local.
How it works
Required inputs:
video- the source clip, as aVIDEOtensor.model- the Topaz model dropdown, defaulting toProteus(the general-purpose favorite). Others include the Artemis family (HQ/MQ/LQ), Nyx and its variants, Gaia HQ/CG/2, and Starlight Precise. Model choice is the single biggest quality lever - Proteus for general footage, Nyx for faces-heavy content, Artemis for cleaner sources; the differences are exactly the "which model for which footage" lore Topaz users argue about.upscale_factor- 1.0 to 4.0 in 0.25 steps. 2.0 doubles width and height (and quadruples pixels), which is the sensible default; 4.0 is where file sizes and cost climb steeply.
The optional sliders are where Topaz's enhancement controls live, all defaulting to -1 meaning "model default": compression (artifact removal 0–1), noise (0–1), halo (0–1), grain (film grain, 0–0.1), and recover_detail (0–1). Leave them at -1 and the model decides - which is honestly the right first move; start tuning one at a time when you know what the source suffers from. Two more: target_fps (0 = off; above 0 enables frame interpolation to that FPS, i.e. 24→60 for smoother motion) and H264_output (default False = H.265, which is smaller; flip to H.264 if you need the wider compatibility).
Outputs: video (the upscaled clip as a VIDEO tensor for ComfyUI's save/preview nodes), video_url (hosted, for sharing), and status, with live progress.
When it's worth it
When you have a clip that deserves Topaz treatment but don't want to rent a GPU or babysit the desktop app. Low-res archival footage, upscaled source material before a final render, or a batch of clips where your own card isn't up to the task. If your source is already clean and just needs pixels, the KB's advice applies: a plain upscale of a decent source can be cheap - but video interpolation/restoration is exactly the heavy job a hosted tier is for.
Getting it running and gotchas
Standard pack install plus the FAL key:
cd ComfyUI/custom_nodes
git clone https://github.com/SozeInc/ComfyUI_Soze.git
pip install -r ComfyUI_Soze/requirements.txt
FAL_KEY in your environment, a .env in the pack root, or config.ini under [API].
The gotchas that bite: enhancement sliders only send to the API when set to 0 or above - -1 means "omit," so you can't actually request "less than default" anything, and a slider you pushed slightly negative does nothing. target_fps is all-or-nothing - any value above 0 enables interpolation, so don't leave stray values in it. And remember every upscale is a paid API call, so a 4x on a long clip is a real line item - set upscale_factor to what the deliverable needs, not what would be fun.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| video | VIDEO | Source video to upscale. | |
| model | COMBO | Proteus | 19 options: Proteus, Artemis HQ, Artemis MQ, Artemis LQ, Nyx, Nyx Fast, +13 |
| upscale_factor | FLOAT | 2.001–4 | e.g. 2.0 doubles width and height. |
| target_fpsopt | INT | 00–120 | 0 = off. If > 0, enables frame interpolation to this FPS. |
| compressionopt | FLOAT | -1.00-1–1 | Compression artifact removal (0-1). -1 = model default. |
| noiseopt | FLOAT | -1.00-1–1 | Noise reduction (0-1). -1 = model default. |
| haloopt | FLOAT | -1.00-1–1 | Halo reduction (0-1). -1 = model default. |
| grainopt | FLOAT | -1.000-1–0.1 | Film grain amount (0-0.1). -1 = model default. |
| recover_detailopt | FLOAT | -1.00-1–1 | Recover original detail (0-1). -1 = model default. |
| H264_outputopt | BOOLEAN | false | Output H.264 instead of the default H.265. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| status | STRING | — |