Reel judders after mixing 24 and 30 fps clips: set Timeline output fps

Timeline repeats or drops frames when output fps differs from a source. Learn output_fps_resamples_sources, how the default is chosen, and when to pin 30.

5 min readSume
All posts

If a Reel built in Sume Timeline 1.0 judders on motion, check the output_fps_resamples_sources warning in the render result: it means the output frame rate differs from a source, and Timeline met it by repeating or dropping a frame every few frames. Omit output.fps and the render uses the rate the longest video sources already run at; pin output.fps only when you need a specific rate.

How the default is chosen

Per the Timeline docs, an omitted output.fps renders at the rate the sources already run at, decided by the longest video sources. Stills have no rate, and 30 is used only when nothing has one. Allowed explicit values are 24, 25, 30 and 60. The warning names the rate the sources wanted, which is the number to try next.

What to do when the warning appears (read 2026-10-03)
SituationAction
Most footage at one rateOmit output.fps
Mixed 24 and 30, motion mattersPin the rate most clips use
Only stills and generated clipsPin 30 or let the default decide
Compose shots feeding TimelineSet compose output.width and height to the timeline, leave fps alone

Reading the warning

Fetch GET /v1/jobs/{id}/result and look at warnings[] inside the data.result object. Soft warnings, including padded or looped short sources and snapped transitions, are not failures.

import os, requests

h = {"Authorization": "Bearer " + os.environ["SUME_API_KEY"]}
job_id = os.environ["JOB_ID"]
res = requests.get("https://api.sume.com/v1/jobs/" + job_id + "/result", headers=h)
res.raise_for_status()
for w in res.json()["data"]["result"].get("warnings", []):
    print(w)

Why Reels care

Instagram's Reels guide (read 2026-10-03) suggests a 15-second Reel for anyone starting out, and short Reels are often built from several clips, which is where mixed frame rates meet. The fix is on your side of the request, not in Instagram.

What Sume does not do

Sume does not interpolate new frames. A rate that differs from a source is met by repeating or dropping frames, which is what causes the judder. Matching the rate across your source clips before you assemble them is the cleaner fix.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume