Nodes/TrentNodes/Batch Slowdown
ComfyUI Node

Batch Slowdown

Slow motion without the AI shimmer

By TrentHunter82·Created 9 months ago·Updated 4 days ago· 36
Batch Slowdown
  • images
  • mask
  • latent
  • images
  • mask
  • latent
  • original_count
  • new_count
  • effective_mult
  • info
data_typeIMAGE
modemultiplier
distributionspread
multiplier2.0
target_frames60
source_fps24.0
target_fps60.0
enable_speedupfalse

There are two ways to make slow motion: interpolate new frames, which can hallucinate detail and cost a model pass, or duplicate frames you already have, which is instant, deterministic, and looks exactly like what it is. Batch Slowdown is the duplication camp - GPU-accelerated frame repetition to stretch a batch out, with enough smarts about non-integer multipliers that it doesn't feel like a blunt tool.

The core operation is torch.repeat_interleave: every frame gets repeated N times, in one shot, on the GPU. The reason the node exists rather than a one-liner is the decimal case. A 1.5x slowdown isn't "repeat each frame 1.5 times" - you have to decide which frames carry the extra copy. distribution handles that: spread (default) distributes the extra frames evenly through the clip, front_weighted piles them at the start, back_weighted at the end. For a 1.5x on a 24-frame clip you get base repeats of 1 plus extra copies sprinkled across every other frame, so motion stays roughly even instead of stuttering in bursts.

Modes

  • multiplier - direct factor, 2.0 = 2x slower, 0.5 = 2x faster. The default mode.
  • target_frames - say "I need exactly 60 frames out of this 24" and it computes the multiplier for you.
  • fps_convert - the 24fps → 60fps case. Give it source_fps and target_fps and it derives the repeat pattern.

And the one that's easy to miss: enable_speedup. By default a multiplier below 1 (speeding up) is refused, because sampling every Nth frame loses frames and the author decided you should opt in. Turn it on and multipliers < 1 become stride sampling instead of duplication. If you're building a 60fps preview from a 24fps render, this is the mode that does the reverse direction.

Types and wiring

data_type gates which socket you feed: IMAGE, MASK, or LATENT. You can slow down a latent batch before sampling - which is often the smart move, since it's cheaper than slowing pixels after. Outputs are passthrough (images, mask, latent) plus the genuinely useful bookkeeping: original_count, new_count, effective_mult (the realized multiplier, which can differ from the requested one when rounding kicks in), and info, a string report.

The trap people hit: keeping the video and its masks in sync. If you slow down an image batch but the mask batch that pairs with it used a different multiplier or distribution, your compositing edges drift frame-by-frame. Run both through this node with identical settings, and use the count outputs to verify they match. This matters in any masked video workflow - the masking-detection layer of the ecosystem is unforgiving about misaligned masks.

No models, no downloads - the only dependency is torch, which ComfyUI already has. It installs with TrentNodes (ComfyUI Manager, "Trent Nodes", or clone + pip install -r requirements.txt). For the honest tradeoff: if your slow-mo needs new motion rather than held frames, look at the pack's Frame Ramp Boogie (actual interpolation); Batch Slowdown is the deterministic, artifact-free option.

CategoryTrent/Video

Inputs (11)

NameTypeDefaultDescription
data_typeCOMBOIMAGEType of data to process
modeCOMBOmultiplierHow to specify the slowdown amount
distributionCOMBOspreadHow to distribute extra frames for decimal multipliers
imagesoptIMAGEImage batch to slow down
maskoptMASKMask batch to slow down
latentoptLATENTLatent batch to slow down
multiplieroptFLOAT2.00.1–10Slowdown multiplier (2.0 = 2x slower, 0.5 = 2x faster)
target_framesoptINT601–10000Target frame count for output
source_fpsoptFLOAT24.01–240Source video FPS (for fps_convert mode)
target_fpsoptFLOAT60.01–240Target video FPS (for fps_convert mode)
enable_speedupoptBOOLEANfalseAllow speedup (sample every Nth frame) when multiplier < 1

Outputs (7)

NameTypeDescription
imagesIMAGE
maskMASK
latentLATENT
original_countINT
new_countINT
effective_multFLOAT
infoSTRING