Timeline output fps: omit it to follow your clips, or get a warning

Leave output.fps out and Timeline 1.0 follows your longest video sources. Force 30 on 24 fps clips and the job warns output_fps_resamples_sources.

5 min readSume
All posts

Leave output.fps out of a Timeline 1.0 render and the job follows the frame rate of your sources. The docs say the longest video sources decide. If you force a rate that differs from a source, the job repeats or drops a frame every few frames, which causes judder on motion, and the result carries the warning output_fps_resamples_sources with the rate that the sources wanted.

How the rate is chosen

The default output is a 1080x1920 MP4. The rate follows this order, from the Timeline docs.

Output frame rate rules, Timeline 1.0 (read 2026-10-08)
CaseResulting rate
output.fps omitted, sources have a ratethe rate of the longest video sources
output.fps omitted, only stillsstills have no rate; 30 applies only when no source has a rate
output.fps set to 24, 25, 30 or 60, same as the sourcesno resample
output.fps set and different from a sourceframes repeated or dropped; warning output_fps_resamples_sources
any other output.fps valuerefused: allowed values are 24, 25, 30, 60

A worked example

Say you have three AI-generated clips at 24 fps and one 30 fps screen recording of the same length. The longest sources decide, so if the three AI clips are longer in total than the recording, the output follows 24 fps. The 30 fps recording is then resampled to 24. If you want to avoid that, record or re-encode the screen capture at 24 fps before you import it.

If you set output.fps to 30 for the same job, the three AI clips are resampled instead. Neither choice is wrong, but the warning tells you which part of the picture moved from its native rate. Read the warnings[] in GET /v1/jobs/:id/result and decide before you publish.

The same warning in compose

Timeline compose has the same behaviour for a single shot. Its default output is 1080x1920 at the frame rate of the video layer, which the docs call the only rate that does not repeat or drop a frame. An explicit output.fps that differs from the clip warns output_fps_resamples_sources. Compose is a flat $0.02 per job and the render step that follows is $0.10 per ceil(output minute).

Why judder shows up

Moving from 24 to 30 fps means that every fourth frame must be shown twice. The eye sees that as an uneven rhythm on pans and walking subjects, even if each frame is sharp. Static shots and talking heads hide it. That is why the warning matters most for camera moves in generated clips.

A practical rule

Find the rate of each clip first. Video inspect returns probe facts for a Sume-hosted clip, and you can pass frames: false if you want no stills. Then pick one of these:

  • All clips share one rate: omit output.fps.
  • Clips have mixed rates and one rate dominates by length: omit output.fps and accept that the minority is resampled.
  • The destination needs a fixed rate: set output.fps and expect the warning if any source differs.
  • Only stills and a silent spine: the job uses 30 when no source has a rate.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume