Crisp › Learn › Variable frame rate

What is variable frame rate?

Most video stores frames at a fixed interval. Thirty frames per second means a frame every thirty-third of a second, forever, and everything downstream can rely on that. Variable frame rate breaks the assumption: the gap between frames changes during the recording.

Why anything records this way

It's usually a sensible decision made for good reasons. Screen recorders capture a new frame when something on screen changes, so a static document produces almost no frames and a scrolling page produces many. That saves an enormous amount of space.

Phones do something similar for a different reason. In low light the sensor needs a longer exposure per frame, so the capture rate drops to let more light in, then climbs again when you walk outside. Thermal limits and battery saving push the same way. The file that comes out says 30fps in its metadata and contains stretches that were really recorded at 24, or 17.

How it shows up as a problem

Editors and encoders overwhelmingly assume a constant rate. Hand them a variable-rate file and they read the nominal rate from the header, lay the frames out at that spacing, and everything is fine until it isn't. Audio was recorded against real time and doesn't drift. Video laid out at the wrong spacing does.

The signature is unmistakable once you know it: sync is perfect at the start of the clip and progressively worse towards the end. If your lips are half a second ahead by the five minute mark but fine at the beginning, you have a variable frame rate file, not a sync problem.

Two other symptoms come from the same cause. Cuts landing a frame or two off where you placed them, and exported files whose duration doesn't match the source.

The fix is conversion, not correction

You can't repair the timing after the fact by nudging the audio, because the error accumulates rather than being a fixed offset. The fix is to convert the video to a constant frame rate before editing, duplicating or dropping frames as needed so that real time and frame position agree again.

Done properly, this is close to invisible. The frames themselves are untouched; only their spacing changes. Done badly, by simply reinterpreting the file at a different nominal rate, it makes the drift worse.

Crisp resamples to a constant rate as part of its decode stage, so anything you run through it comes out with the timing already regularised and the audio still lined up. That's not a feature anybody asks for by name. It's the reason screen recordings and phone clips behave predictably afterwards.

Catching it before it costs you an edit

The quickest check is duration against frame count. If the two disagree with the declared frame rate, the file is variable. Failing that, the practical habit is simply to normalise anything that came from a screen recorder, a phone shot in low light, or a game capture tool before it goes near a timeline. Those three sources account for the overwhelming majority of cases.

Frame rate questions

Why is my audio in sync at the start and drifting by the end?

That pattern is nearly always variable frame rate. A fixed offset would be wrong from the first frame. Progressive drift means video and audio are being laid out against different clocks, and the gap accumulates as the clip plays.

Does converting to constant frame rate lose quality?

The frames themselves aren't re-encoded by the resampling itself, so the picture is unchanged. What changes is spacing, which means some frames get duplicated or dropped. On footage that was genuinely varying a lot you can occasionally see a small hitch where a frame was repeated.

Which sources are usually variable?

Screen recorders almost always, phone footage frequently once light drops, and game capture tools very often. Dedicated cameras generally record constant frame rate, which is why footage from a proper camera tends to behave in an editor.

Can I just tell my editor the real frame rate?

No, because there isn't one. The rate genuinely changed during the recording, so no single number describes the file. That's what makes conversion rather than reinterpretation the only reliable fix.

Download Crisp for Mac Free to try, one-time $19 to remove the watermark. Runs entirely on your Mac.