Last updated
How VideoZ detects VFR
MP4 and MOV files store each frame’s duration in the stts (time-to-sample) table. VideoZ reads the whole table, so it checks every frame without decoding anything — instant even for hour-long recordings. Tiny differences of up to 1% (for example 23.976 fps stored in a 90 kHz timescale) are treated as constant.
Some tools estimate the frame rate from the start of the file only, so a recording that switches frame rate partway through can be reported as constant.
Where VFR comes from
- Phone cameras, which can lower the frame rate in low light
- Screen recorders and meeting recordings, which only emit frames when the screen changes
- Game capture and streaming software under load
How to convert to constant frame rate
Converting requires a re-encode. Pick the frame rate of your editing project; CRF 18 is visually near-lossless for H.264. In HandBrake, choose “Constant Framerate” in the Video tab.
ffmpeg -i input.mp4 -vf fps=30 -c:v libx264 -crf 18 -c:a copy output.mp4
Frequently asked questions
- Is variable frame rate bad?
- Not for playback — players handle it fine. It is a problem for editing, where timelines assume a fixed frame rate and audio can drift out of sync.
- Why does MediaInfo say my file is constant frame rate?
- MediaInfo and some editors inspect only part of the file. VideoZ checks the duration of every frame in the stts table.
- Does VideoZ check fragmented MP4?
- Not yet. Fragmented MP4 stores frame timing per fragment, and VideoZ reports that it was not checked rather than guessing.