ArtificialGuyBR

Home / Blog / AI video

AI Video Upscaling and Interpolation Order of Operations

Learn the correct pipeline order for upscaling, interpolating, and finishing AI-generated video without flicker or artifacts.

8 sources cited AI video

AI Video Upscaling and Interpolation Order of Operations

When you generate video with AnimateDiff or similar tools, the raw output often needs upscaling and frame-rate smoothing before it looks production-ready. The sequence you run those steps in determines whether the final clip flickers, loses temporal coherence, or introduces ghosting. This article breaks down the verified pipeline order, the tools involved, and the common mistakes that create artifacts.

TL;DR

What Is the Correct Pipeline Order?

The RTFKT workflow published on Civitai sequences nodes in this order:

  1. ADE_AnimateDiffLoaderWithContext — loads the motion module (e.g., temporaldiff-v1-animatediff.ckpt)
  2. KSampler (30 steps, cfg 7.5, dpmpp_2m, karras) — generates the animated latents
  3. VAEDecode — decodes latents to pixel-space frames at base resolution (576×1024)
  4. UpscaleModelLoader + ImageUpscaleWithModel — upscales with 4x-AnimeSharp.pth to 1080×1920
  5. VHS_VideoCombine — muxes frames into ProRes MOV and h264 MP4 at 24 fps

Source: workflow JSON attachment from Civitai article 3172.

Why Motion Generation Comes Before Upscaling

AnimateDiff injects a pre-trained motion module into a base text-to-image model. Each generated frame already encodes the temporal motion prior the module learned from real-world video. Upscaling after generation preserves that structure frame by frame.

Evidence: RTFKT workflow places AnimateDiff loader → KSampler → VAE Decode → UpscaleModelLoader → ImageUpscaleWithModel → VHS_VideoCombine. The motion module architecture is described in the AnimateDiff paper (arXiv:2307.04725).

Does VideoCombine Perform Frame Interpolation?

No. The downloaded workflow (Fictiverse_QR_Vid2Vid.json) contains no interpolation node. The terminal node is VHS_VideoCombine, which the VideoHelperSuite README describes as a tool that "combines a series of images into an output video" with parameters frame_rate, loop_count, format, pingpong, and save_output. It does not synthesize new frames via optical flow, FILM, or RIFE.

If you need true temporal interpolation — creating in-between frames — you must add a dedicated interpolation node between the upscale step and the final combine.

Evidence: VideoHelperSuite README lists no interpolation function for VideoCombine; workflow node list extracted from attachment 2354 shows no frame-blend node.

What Causes Flicker in AnimateDiff Output?

The AnimateDiff v3 README lists "Small fickering is noticable" as a known limitation under general text-to-video settings. Neither the README nor the arXiv paper quantifies a flicker budget or recommends a specific mitigation pass.

Evidence: under "Limitations": "Small fickering is noticable;" — https://github.com/guoyww/AnimateDiff/blob/main/README.md

What Does VideoCombine Actually Do?

The VideoHelperSuite README documents VideoCombine with these required parameters: images (input frames), frame_rate (frames per second), loop_count, filename_prefix, format (supports image/gif, image/webp, and ffmpeg-based formats like video/h264-mp4 and video/ProRes), pingpong, and save_output. It also accepts an optional audio input. The RTFKT workflow uses two VideoCombine nodes — one outputting ProRes MOV, one outputting h264 MP4 — both at 24 fps with CRF 20 quality.

Evidence: "required": {"images": ..., "frame_rate": ..., "loop_count": ..., "filename_prefix": ..., "format": ..., "pingpong": ..., "save_output": ...} — https://raw.githubusercontent.com/Kosinkadink/ComfyUI-VideoHelperSuite/master/README.md

What Is the "QRcode Monster" Really?

The name appears only as a ControlNet checkpoint filename: control_v1p_sd15_qrcode_monster.safetensors, loaded via ControlNetLoaderAdvanced in the RTFKT workflow. No GitHub repository, Hugging Face model card, or product page documents an entity called "QRcode Monster" outside this Civitai attachment.

Evidence: workflow node configuration shows "ControlNetLoaderAdvanced ['control_v1p_sd15_qrcode_monster.safetensors']".

Is setget.js Required for Video Workflows?

Article 2354 states "You will need setget.js" and gives the path ComfyUI/web/extensions/diffus3. The actual file lives at ComfyUI-extensions/main/setget/setget.js in a separate repository — it is a standalone extension that registers diffus3.SetNode and diffus3.GetNode for tunnel connections. Crucially, the 2354 workflow JSON contains no diffus3.SetNode or diffus3.GetNode instances.

Evidence: raw setget.js source shows standalone extension structure; node-type extraction from Fictiverse_QR_Vid2Vid.json shows no set/get nodes.

Common Errors and Fixes

SymptomCauseFixSource
Article title promises interpolation but workflow lacks it"Interpolation" used loosely for final muxingAdd a dedicated temporal interpolation node (FILM/RIFE) between upscale and combine if true frame synthesis is neededhttps://raw.githubusercontent.com/Kosinkadink/ComfyUI-VideoHelperSuite/master/README.md
setget.js missing from workflow despite article saying it's requiredArticle may reference a different workflow version or optional utilityVerify against the specific workflow JSON; install setget only if graph expects diffus3.SetNode/GetNodehttps://civitai.com/api/download/attachments/208
"QRcode Monster" treated as a product nameName is only the checkpoint filenameRefer to it as the ControlNet checkpoint control_v1p_sd15_qrcode_monster.safetensorshttps://civitai.com/api/download/attachments/16044
"Frame-by-frame animation" phrasing with AnimateDiffAnimateDiff is text-to-video generation, not manual per-frame editingReframe as "motion prior generation using AnimateDiff"https://github.com/guoyww/AnimateDiff/blob/main/README.md

Gaps — What We Still Don't Know

Everything you could not verify, blunt and complete. The writer is forbidden from filling these in.

FAQ

Does VideoCombine perform frame interpolation, or is it just a muxer?

It is a muxer. The VideoHelperSuite README describes it as combining images into a video container with codec and frame-rate controls; no interpolation function is listed.

Where in the pipeline should upscaling occur relative to motion generation?

After motion generation and VAE decode. The RTFKT workflow sequences AnimateDiff → KSampler → VAEDecode → UpscaleModelLoader → ImageUpscaleWithModel → VideoCombine.

Is there any documented technique for reducing flicker in AnimateDiff output?

The v3 README lists visible flicker as a known limitation but does not quantify mitigation. No opened primary source documents a specific flicker-reduction pass tied to pipeline order.

What is the diffus3/setget extension used for, and is it required?

It provides SetNode/GetNode for tunnel connections in ComfyUI graphs. The 2354 workflow JSON does not include these nodes, so the "required" claim is single-source and unverified for that workflow.

Is the QRcode Monster a product or just a checkpoint filename?

Just a checkpoint filename: control_v1p_sd15_qrcode_monster.safetensors loaded via ControlNetLoaderAdvanced. No separate product documentation was found in opened sources.

Can I upscale before running AnimateDiff to save time?

The published workflow does the opposite. Upscaling before motion generation would resample base frames and potentially degrade the latent features the motion module depends on, though no benchmark quantifies the penalty.

What frame rate does AnimateDiff natively output?

The VideoHelperSuite README suggests keeping frame_rate at 8 for AnimateDiff, matching the model's native output. The RTFKT workflow then muxes at 24 fps via VideoCombine.

Are there alternative interpolation nodes in ComfyUI?

Yes — FILM and RIFE implementations exist as custom nodes, but their optimal placement relative to upscale is not covered in the opened primary sources.

Images Needed

Sources

SourceURL
AnimateDiff official repositoryhttps://github.com/guoyww/AnimateDiff
AnimateDiff paper (arXiv:2307.04725)https://arxiv.org/abs/2307.04725
ComfyUI-VideoHelperSuite READMEhttps://raw.githubusercontent.com/Kosinkadink/ComfyUI-VideoHelperSuite/master/README.md
diffus3 setget.js sourcehttps://raw.githubusercontent.com/diffus3/ComfyUI-extensions/main/setget/setget.js
RTFKT workflow JSON (Civitai attachment 16044)https://civitai.com/api/download/attachments/16044
Fictiverse workflow JSON (Civitai attachment 208)https://civitai.com/api/download/attachments/208
AnimateDiff README (flicker limitation)https://github.com/guoyww/AnimateDiff/blob/main/README.md
ComfyUI-AnimateDiff-Evolved README (recommended node packs)https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved/blob/main/README.md