Nodes/ComfyUI-SeedVR2_VideoPathUpscaler/SeedVR2 Video Path Upscaler (v2.5.24)
ComfyUI Node

SeedVR2 Video Path Upscaler (v2.5.24)

Upscale a real video file without turning it into a VRAM bomb

By ethanfel·Created 25 days ago·Updated 23 days ago· 0
SeedVR2 Video Path Upscaler (v2.5.24)
  • video
  • dit
  • vae
  • auto_settings
  • video
  • audio
seed42
resolution1080
max_resolution0
batch_size5
chunk_size21
color_correctionlab
chunk_overlap2
uniform_batch_sizefalse
temporal_overlap0
prepend_frames0
input_noise_scale0.000
latent_noise_scale0.000
offload_devicecpu
temporary_video_crf18
enable_debugfalse

Most ComfyUI video nodes cheat: they unload the whole clip into memory as one big IMAGE tensor and process it in a single pass. That's exactly how SeedVR2 earned its OOM reputation - video was the "you'll need a datacenter GPU" direction for months, while the same model quietly became the default image upscaler. The SeedVR2 Video Path Upscaler is this add-on's answer. It takes a native ComfyUI VIDEO, streams it through the model in bounded chunks, and hands back a file-backed video. The complete frame sequence never becomes an IMAGE tensor in your workflow at all.

How it works

Instead of loading the clip, it decodes frames lazily with PyAV, processes them chunk_size frames at a time (default 21), writes each finished chunk to an H.264 intermediate, and carries a few context frames (chunk_overlap, default 2) from the previous chunk so temporal seams don't show. Those context frames are stripped from the output, so duration stays exactly the same. Once the clip is done it muxes the source audio back in.

Because the model is genuinely temporally aware - the 4n+1 batch pattern isn't cargo cult, the model needs those frame counts for temporal consistency - it sidesteps the shimmer you get from a per-frame image upscaler on fine repeating texture. That's the whole reason to use SeedVR2 on video rather than any good image upscaler applied 24 times a second.

The inputs that matter

  • video - a native VIDEO, normally from core Load Video. File-backed and decoded only as needed.
  • dit / vae - model configurations from the main package's loaders, or from the sibling Auto Configurator in this pack.
  • batch_size - frames processed together. Follows 4n+1: 1, 5, 9, 13, 17, 21… Default 5. Higher = better temporal consistency and speed, more VRAM.
  • chunk_size - max source frames held in RAM at once (default 21). Set 0 to disable chunking and process the complete active video in one pass.
  • resolution - short-edge target in pixels, aspect ratio preserved. max_resolution caps either dimension (0 = no limit) for extreme aspect ratios.
  • color_correction - lab is the default and the recommended one; none leaves the model's output uncorrected.

You can ignore most optional inputs, but temporary_video_crf (H.264 quality of the intermediate, default 18, lower is better) and offload_device (cpu default, for intermediate tensors between phases) matter if you're tuning. Connect auto_settings from the Auto Configurator and it overrides the corresponding controls above.

Outputs

  • video - a file-backed upscaled H.264 video with the source audio embedded when present. Connects directly to core Save Video or any native-video save node.
  • audio - the full, unchunked audio for the active source window as a separate AUDIO value, handy for alternate muxing or replacing the track.

Installing it

Same pack, same story: this is a companion add-on to the main numz/ComfyUI-SeedVR2_VideoUpscaler package - install that first, then:

cd ComfyUI/custom_nodes
git clone https://github.com/ethanfel/ComfyUI-SeedVR2_VideoPathUpscaler.git

Install its requirements into your ComfyUI venv (.venv/bin/python -m pip install -r custom_nodes/ComfyUI-SeedVR2_VideoPathUpscaler/requirements.txt), restart. ComfyUI Manager finds it under the same pack title. Models auto-download to ComfyUI/models/SEEDVR2 on first use.

Gotchas

  • chunk_overlap must be smaller than chunk_size - the node raises a clear error otherwise.
  • Alpha isn't preserved. The H.264 intermediate is RGB only; if you need transparency, the main package's tensor upscaler is the path.
  • Quant still matters. The standing community advice: FP16 if it fits - GGUF damages skin texture and FP8 can introduce tiling on some content, so don't judge SeedVR2 on a quant it wasn't meant for.
  • Budget the compute. Even memory-bounded, video upscaling is expensive; community numbers put 720p→4K at roughly twelve minutes on a rented 48 GB L40S. Test a short clip with enable_debug on before committing a long video.
  • PyAV (av) does the file work here. ComfyUI bundles it so you're fine in the GUI, but the requirements.txt oddly omits it - if you ever run the pack's CLI standalone, you may need to pip install av yourself.
CategorySeedVR2 Video Path

Inputs (19)

NameTypeDefaultDescription
videoVIDEONative file-backed VIDEO, normally from Load Video or MiniMax H3 Full-Chain Latent Video Adapter. Frames are decoded only as needed, so the full clip does not become a ComfyUI IMAGE tensor.
ditSEEDVR2_DITDiT model configuration from a SeedVR2 model loader or Auto Configurator.
vaeSEEDVR2_VAEVAE model configuration from a SeedVR2 model loader or Auto Configurator.
seedINT420–4294967295Random seed for reproducible generation (default: 42). The same seed and inputs produce the same output.
resolutionINT108016–16384Target resolution for the shortest edge in pixels (default: 1080). The input aspect ratio is preserved automatically.
max_resolutionINT00–16384Maximum resolution of either output dimension (default: 0, no limit). Useful for limiting VRAM use with extreme aspect ratios.
batch_sizeINT51–16384Frames processed together by SeedVR2 (default: 5). Use the 4n+1 pattern: 1, 5, 9, 13, 17, 21, ... Higher values generally improve temporal consistency and speed but use more VRAM.
chunk_sizeINT210–4096Maximum source frames decoded and held in RAM at once. Set to 0 to disable file chunking and process the complete active video at once.
color_correctionCOMBOlabCorrect output color shifts to resemble the source (default: lab). LAB is recommended; choose none to preserve the model output unchanged.
chunk_overlapoptINT20–32Raw context frames carried from the previous file chunk (default: 2). These context frames are removed from the output, so duration is unchanged.
uniform_batch_sizeoptBOOLEANfalsePad the final model batch to batch_size (default: False). This adds compute but can prevent artifacts from a very small final batch.
temporal_overlapoptINT00–16Overlapping frames between consecutive model batches (default: 0). Values from 1 to 4 can improve consistency across batch boundaries.
prepend_framesoptINT00–32Frames mirrored before the beginning of the video (default: 0). This can reduce start-of-video artifacts; added frames are removed from the result.
input_noise_scaleoptFLOAT0.0000–1Noise added to source frames before encoding (default: 0, disabled). Small values can help with some input artifacts.
latent_noise_scaleoptFLOAT0.0000–1Noise added in latent space during diffusion (default: 0, disabled). This can soften details when input noise is not sufficient.
offload_deviceoptCOMBOcpuDevice for intermediate tensors between processing phases (default: cpu). Use none to retain tensors on the inference GPU for maximum speed and VRAM use.
temporary_video_crfoptINT180–51H.264 quality of the file-backed intermediate; lower is higher quality.
enable_debugoptBOOLEANfalseEnable detailed memory, timing, and processing logs. Useful when diagnosing errors or tuning performance.
auto_settingsoptSEEDVR2_AUTO_SETTINGSOptional runtime settings from SeedVR2 Video Path Auto Configurator. When connected, the configurator overrides the corresponding controls above.

Outputs (2)

NameTypeDescription
videoVIDEOFile-backed upscaled video with source audio preserved when present.
audioAUDIOFull unchunked audio from the active source video window.