Nodes/ComfyUI/LTXV Preprocess
ComfyUI Node Runs on cloud

LTXV Preprocess

Feed LTX a Worse Image on Purpose (Yes, Really)

By Comfy-Org·Created 4 years ago·Updated about 22 hours ago· 130,493
LTXV Preprocess
  • image
  • output_image
img_compression35

Your LTX image-to-video keeps returning a frozen frame - the video equivalent of a shrug. The model loads, the prompt is fine, and yet nothing moves. If that's your life right now, this node is very likely the fix, and it works by doing something that sounds backwards: it deliberately makes your input image worse. LTXVPreprocess is the one-widget secret behind "LTX actually animated my still," and it's been sitting in the official LTXV workflows since day one.

What it actually does

The name undersells the mechanism. The node takes your IMAGE, quantizes it to 8-bit, crops it to even dimensions, encodes it as a single-frame H.264 video with libx264 (the same encoder ffmpeg uses), and immediately decodes it back into an IMAGE. That's the entire trick: a lossy round-trip through a real video codec, running on your CPU, no API, no model file, no key.

Why bother? LTX was trained on compressed web video, through a VAE built for aggressive spatial and temporal compression. A pristine render out of Flux or SDXL is so far from that distribution that the model doesn't read the image as something to animate - so you get a still, or an eternal slow zoom. Feed it believable blocky H.264 artifacts and it recognizes its own world and finally moves. It's the same instinct as the "add noise to the guidance image so it generates motion" tweak that shipped with LTX support back in late 2024 - the current node just does it with real codec grime instead.

The inputs (both of them)

This is about as close to a one-knob node as ComfyUI gets.

  • image (IMAGE) - the still you want to animate.
  • img_compression (INT, default 35, 0–100) - per the author's own tooltip, "Amount of compression to apply on image." It maps straight onto the x264 CRF value: higher number, more compression, more artifacts. Set it to 0 and the node hands your image straight through untouched.

Output: a single output_image (IMAGE), which you wire into the image input of LTXVImgToVideo (or LTXVAddGuide for keyframe work). The rest of the LTX gang - EmptyLTXVLatentVideo, LTXVConditioning, the scheduler - never touches this node; it only affects the picture.

That's the whole node. No resolution, no crop mode, no denoise.

How you get it

It ships with ComfyUI core - it's been there since LTX support landed in November 2024, in comfy_extras/nodes_lt.py. No Manager, no git clone, nothing to install. It also loads zero model files; the only real dependency is the libx264 encoder bundled with ComfyUI's PyAV.

When to touch the dial

Default 35 is genuinely a good starting point and most people never move it. But it's the first knob you grab when I2V misbehaves:

  • Still video / no motion. The classic failure. Turning it up is the community's go-to: one widely-shared fix for LTX-2's "just zooms in forever" problem was bumping it from 33 to 42 alongside a real prompt. Crank it to 100 and some cases wake up - others do nothing, because compression nudges the model, it doesn't replace a good prompt and a good seed.
  • Overcooked output. Too high and you're feeding the model a blocky mess. People describe the result as over-processed, with artifacts and unrequested changes creeping in. The ranges that keep showing up in working workflows are 30–40, and 30–35 if you're also bypassing input blur. If your source already has real compression (a screenshot, a web JPEG), leave the dial alone or even drop it.
  • Odd dimensions. The node silently trims odd sizes down to even (libx264's yuv420p demands it), so a 1025×769 input quietly becomes 1024×768. LTX latents are built on multiples of 32 anyway, so it rarely bites - but it's exactly the kind of thing that breaks a pixel-perfect alignment and then blames you.

One last thing: it only touches the image. LTX-2's audio path runs through separate nodes entirely, so don't go hunting for a compression slider when your voice track comes out muffled. That's not this node's job.

Categoryvideo/preprocessors

Inputs (2)

NameTypeDefaultDescription
imageIMAGE
img_compressionINT350–100Amount of compression to apply on image.

Outputs (1)

NameTypeDescription
output_imageIMAGE