Variable Frame Rate: The Uneven Timestamp Trap
A "30fps" video does not guarantee every frame sits 1/30 second apart. When gaps stretch and shrink, the clip is variable frame rate, and that is the root of several "mystery" problems.
CFR and VFR: two timestamp shapes
Constant frame rate (CFR) keeps gaps identical: every frame in a 30fps clip sits exactly 1/30 second apart. Variable frame rate (VFR) lets gaps follow content: fewer frames while the picture is still, denser when it moves. It saves space and recording effort.
VFR is not a defect; it is a sensible optimization for recording. Screens stay still most of the time, so screen recorders emit frames only when needed. The trouble starts downstream, because most editing and merging tools align timelines assuming CFR, and VFR material breaks that assumption.
Classic VFR symptoms
Three recurring symptoms: merged segments drift further out of sync the later they play, because each segment carries a different drift that accumulates at seams; seeking lands on the wrong moment, with picture and audio offset; platform uploads trigger abnormal transcoding or stall on HD versions, since platform pipelines are sensitive to irregular timestamps.
The common thread is that problems surface only after processing: direct playback looks fine, but merging, editing or transcoding starts the drift. When a clip plays alone but drifts in a merge, suspect VFR first.
Who produces VFR
Phone screen recordings are almost always VFR: iOS and Android capture frames on demand and emit nothing during still periods. Some live-stream recordings, old FLV files and certain camera high-frame-rate modes also output VFR. Normal phone camera footage is usually CFR or close to it; the screen-recording and streaming paths are the main offenders.
Detection: run an encoding check and look for an "average frame rate" reading, or two different frame-rate numbers coexisting. The practical test is a merge trial: fine alone, drifting together, case closed.
Strategy: when to convert to CFR
The rule: material entering a merge, edit or multi-segment assembly should be re-encoded to CFR first. Transcoding rebuilds the frame sequence on a uniform timeline, and downstream steps stop drifting. Material that only plays or uploads directly can stay VFR and keep its size savings.
When converting, pick the clip’s nominal frame rate, typically 30 or 60fps for screen recordings. Size grows slightly because still periods now emit frames; that is the fair price of a straightened timeline. Audio is unaffected: drift is between the video timeline and the audio clock, not inside the audio itself.