Generated reference · ComfyUI workflow · motion

SeedVR2 Upscale

One-step video restoration and upscale with SeedVR2 7B on ComfyUI's core SeedVR2 nodes. The graph is the ComfyUI template utility_seedvr2_3b_int8_upscale_video (the only core-node SeedVR2 video template), loading the manifest's …

motion15nodesGPU H100out unspecified~317sv1.0.0

On this page

One-step video restoration and upscale with SeedVR2 7B on ComfyUI's core SeedVR2 nodes. The graph is the ComfyUI template utility_seedvr2_3b_int8_upscale_video (the only core-node SeedVR2 video template), loading the manifest's seedvr2_7b_fp16 transformer in place of the template's seedvr2_3b_int8_convrot, the same loader and graph the 7B image template uses. The source audio is re-muxed. A complement to flashvsr-upscale: stronger on short AI-generated and compressed clips, slower.

15Graph nodes
15Node classes
7Inputs
2Models

Tags: motionseedvr2upscalerestorationsuper-resolutionrunpod-serverlessvolume-backed

Inputs (7)#

The typed parameter surface callers bind when they request this workflow. Enum options and numeric bounds are the values the workflow document declares.

source_videovideorequired
The clip to restore and upscale. Its frame rate, bit depth and audio are carried into the output.
scalefloatdefault 2.0min 1.0max 4.0
Output is this many times the source on each edge (the template's scale multiplier, default 2; lanczos resize before restoration). The motion caps bound the output to 1080p.
color_correctionenumdefault none
Optional colour match of the restored frames to the resized source (SeedVR2PostProcessing); the template's default is none.
options: nonelabwaveletadain
split_latentbooleandefault false
Sample the encoded clip in temporal chunks (SeedVR2TemporalChunk, auto chunk size) and merge them, the template's Split Latent switch (off by default). For long clips that do not fit in one pass.
temporal_overlapintegerdefault 0min 0max 64
split_latent only: latent frames shared between neighbouring chunks (the template's 0).
denoisefloatdefault 1.0min 0.0max 1.0
1.0 is a full restore (template). Lower keeps more of the source.
seedintegerdefault 0min 0
Sampler seed; the same inputs and seed give the same frames.

ComfyUI node graph (15)#

The executable ComfyUI prompt graph: 15 nodes across 15 distinct node classes, wired by 23 data dependencies. Nodes tinted green come from a custom node pack this workflow declares; the rest are ComfyUI core / baked-community classes.

flowchart TD n0["1: UNETLoader"] n1["2: VAELoader"] n2["3: LoadVideo"] n3["4: GetVideoComponents"] n4["5: ResizeImageMaskNode"] n5["6: SeedVR2Preprocess"] n6["7: VAEEncodeTiled"] n7["8: SeedVR2TemporalChunk"] n8["9: SeedVR2Conditioning"] n9["10: KSampler"] n10["11: SeedVR2TemporalMerge"] n11["12: VAEDecodeTiled"] n12["13: SeedVR2PostProcessing"] n13["14: CreateVideo"] n14["15: SaveVideo"] n2 -->|video| n3 n3 -->|input| n4 n4 -->|resized_images| n5 n5 -->|pixels| n6 n1 -->|vae| n6 n6 -->|latent| n7 n0 -->|model| n8 n7 -->|vae_conditioning| n8 n0 -->|model| n9 n8 -->|positive| n9 n8 -->|negative| n9 n7 -->|latent_image| n9 n9 -->|latents| n10 n7 -->|temporal_overlap| n10 n10 -->|samples| n11 n1 -->|vae| n11 n11 -->|images| n12 n4 -->|original_resized_images| n12 n12 -->|images| n13 n3 -->|audio| n13 n3 -->|fps| n13 n3 -->|bit_depth| n13 n13 -->|video| n14
Data-flow DAG — scroll to zoom, drag to pan.

Nodes (15)#

1UNETLoadercore
unet_name = seedvr2_7b_fp16.safetensorsweight_dtype = default
outputs: MODEL
2VAELoadercore
vae_name = seedvr2_ema_vae_fp16.safetensors
outputs: VAE
3LoadVideocore
file = {{source_video}} tmpl
outputs: VIDEO
4GetVideoComponentscore
video = ◂ node 3 · out[0]
outputs: IMAGEAUDIOFLOATCOMBOCOMBO
5ResizeImageMaskNodecore
input = ◂ node 4 · out[0]resize_type = scale by multiplierresize_type.multiplier = {{scale}} tmplscale_method = lanczos
outputs: IMAGE
6SeedVR2Preprocesscore
resized_images = ◂ node 5 · out[0]
outputs: IMAGE
7VAEEncodeTiledcore
pixels = ◂ node 6 · out[0]vae = ◂ node 2 · out[0]tile_size = 512overlap = 128temporal_size = 64temporal_overlap = 8
outputs: LATENT
8SeedVR2TemporalChunkcore
latent = ◂ node 7 · out[0]temporal_overlap = {{temporal_overlap}} tmplchunking_mode = auto
outputs: LATENTINT
9SeedVR2Conditioningcore
model = ◂ node 1 · out[0]vae_conditioning = ◂ node 8 · out[0]
outputs: CONDITIONINGCONDITIONING
10KSamplercore
model = ◂ node 1 · out[0]positive = ◂ node 9 · out[0]negative = ◂ node 9 · out[1]latent_image = ◂ node 8 · out[0]seed = {{seed}} tmplsteps = 1cfg = 1.0sampler_name = eulerscheduler = simpledenoise = {{denoise}} tmpl
outputs: LATENT
11SeedVR2TemporalMergecore
latents = ◂ node 10 · out[0]temporal_overlap = ◂ node 8 · out[1]
outputs: LATENT
12VAEDecodeTiledcore
samples = ◂ node 11 · out[0]vae = ◂ node 2 · out[0]tile_size = 512overlap = 128temporal_size = 64temporal_overlap = 8
outputs: IMAGE
13SeedVR2PostProcessingcore
images = ◂ node 12 · out[0]original_resized_images = ◂ node 5 · out[0]color_correction_method = {{color_correction}} tmpl
outputs: IMAGE
14CreateVideocore
images = ◂ node 13 · out[0]audio = ◂ node 4 · out[1]fps = ◂ node 4 · out[2]bit_depth = ◂ node 4 · out[3]
outputs: VIDEO
15SaveVideocore
video = ◂ node 14 · out[0]filename_prefix = seedvr2-upscaleformat = mp4

Parameter banks (1)#

The prompt / configuration lookup tables this workflow keys into from its inputs — the vocabulary that turns a style / palette / preset selection into graph parameters.

requires_families (1)#

seedvr2-7b

Models & dependencies#

Models required (2)#

seedvr2_7b_fp16.safetensors
seedvr2_ema_vae_fp16.safetensors

Output contract#

What a successful run of this workflow returns.

primary
{"type": "video", "format": "mp4", "codec": "h264", "fps_source": "source", "audio": true, "alpha": false, "description": "The restored clip at scale times the source size, with the source audio re-muxed."}

Taxonomy & routing#

How the control plane classifies this workflow — from the committed workflow-taxonomy-registry.json. It drives the consistency / control surface the agentic director can exercise over the workflow.

assetFamily
restored-video-master
outputPackageProfile
video-master-profile
controlModalities
model-lockseed-locktemporal-lock
consistencyDimensions
motion
notes
SeedVR2 7B one-step restoration and upscale (A.01.08). Like flashvsr-upscale it restores rather than authors; temporal-lock is literal, since the clip is encoded and restored as one video latent (or in overlapping temporal chunks), not frame by frame.