LTX-2.5 duration predictor: optional, and Sume sets seconds

LTX-2.5 has an optional duration predictor that sets the frame count from the prompt. Sume has no such mode: you send duration in whole seconds.

5 min readSume
All posts

LTX-2.5 can pick a clip's length itself. Its Hugging Face card lists an optional duration predictor, an opt-in node that predicts length from the prompt and sets the frame count, and the CLI example says to omit --num-frames to let the duration head choose. Sume has no auto-duration mode for a named model: duration is an integer number of seconds, and the allowed range depends on the model.

LTX facts are from the LTX-2.5 model card and the LTX model page, read 2026-10-02. Sume facts are from Video generation and Video Router.

How does the LTX-2.5 duration predictor work?

The card says the predictor is optional and opt-in, and that it sets the frame count instead of a fixed-duration parameter. In the distilled pipeline you pass --duration-head-path pointing at ltx-2.5-duration-head-bf16.safetensors, a file in model_patches/ in the repo. If you leave out --num-frames, the head picks the length; if you set it, the value must satisfy frames % 8 == 1.

The LTX model page describes the same feature as Auto Duration: clip length is predicted from the described action. Neither page gives a range for the predicted length, so test your own prompts.

Length control on LTX-2.5 and on Sume, from the LTX card and the Sume docs, read 2026-10-02.
QuestionLTX-2.5 (open weights)Sume (named model)
Who sets length?You, or the optional duration headYou, with duration
UnitFrames; must satisfy frames % 8 == 1Whole seconds
RangeNot stated on the cardPer model: wan-3.0 2 to 30, seedance-2.5 4 to 30, H3 5 to 15, Omni 3 to 10, others up to 15
If you omit itThe duration head predicts, when installedSume Auto defaults to 8 seconds; read supported_durations for a named id

How do I convert seconds to a valid LTX frame count?

The card's diffusers example uses 121 frames at 24 fps, which is a little over 5 seconds. A small helper rounds a target duration to the nearest valid count. The 24 fps value is the example's, not a rule.

Round to the nearest 8k + 1, never below 9, then check the result against your pipeline's own limits.

def ltx_frames(seconds: float, fps: float = 24.0) -> int:
    k = max(1, round(seconds * fps / 8))
    return k * 8 + 1

for s in (2, 5, 10):
    n = ltx_frames(s)
    print(s, "s ->", n, "frames, assert", n % 8 == 1)

What changes if I call Sume instead?

Sume's OpenAPI describes duration as an integer from 2 to 30 with per-model limits, and the catalog's supported_durations array is the list to read per id. There is no LTX id in the OpenAPI model enum, so this is a comparison of controls, not a route. Pick the seconds you want, send duration, and let the model's range reject anything outside it.

Sources

Related posts

More in Models

All Models posts

Written by Sume