Fixing Variable Frame Rate (VFR) Phone & Screen Recordings in Avidemux

Variable frame rate (VFR) is the number-one hidden cause of audio/video drift in phone and screen recordings opened in Avidemux. Instead of capturing a steady 30 frames per second, a VFR recording captures more frames when the scene is busy and fewer when it is static — the frames are real, but their timestamps are unevenly spaced. Avidemux’s timeline expects a regular frame grid, so the further you play, the more the audio drifts out of sync.

If your file plays in sync at the start and gets progressively worse, the file is probably VFR. The good news: this is fixable, and diagnosing it takes about one minute.

Symptom check: is VFR your problem?

  • The source is a phone recording (iPhone/Android camera app) or a screen recording (game capture, Zoom, Teams, OBS with default settings).
  • Audio and video start in sync but drift apart gradually — the offset grows with playback time.
  • A fixed audio shift (the same offset everywhere) does not fix it. (For that case, see fixing audio sync instead.)
  • Other players (VLC, MPC) play it fine, but Avidemux shows growing drift.

Why other players cope. Players like VLC honor the file’s irregular timestamps directly. Avidemux’s editing engine maps the video onto a regular timeline so it can seek and cut frame-precisely — that mapping is where VFR timestamps get misinterpreted and drift appears.

Step 1: confirm VFR with MediaInfo

MediaInfo is a free third-party tool (available for Windows, macOS, and Linux) that shows the technical metadata of any video file. Open your file in it and look at the video stream section:

  • Frame rate mode — if it says Variable, your file is VFR. (It may also show a minimum/maximum frame rate pair, e.g. 7.500 fps / 60.000 fps.)
  • Frame rate — the nominal/average rate, e.g. 30.000 fps. This is the rate you will standardize on.

If Frame rate mode says Constant, your drift has a different cause — check the audio sync guide for the full diagnostic path.

Why VFR causes drift in Avidemux

In a constant-frame-rate (CFR) file, frame N always starts at time N × (1/fps). Audio stays in sync trivially: both clocks advance together. In a VFR file, each frame carries its own presentation timestamp (PTS), and the gaps between them are uneven — a busy action sequence may have frames 16 ms apart while a static slide has gaps of several hundred milliseconds.

Avidemux reconstructs a regular frame index from these timestamps. Where the file’s timestamps bunch up or stretch out, Avidemux’s frame grid disagrees with the audio track’s clock, and the disagreement accumulates: a few milliseconds here, a few there, until by minute 20 the audio is seconds off. It is not a bug in the usual sense — it is a mismatch between VFR storage and an editor built on a fixed-grid assumption.

Step 2: fix it in Avidemux — Resample FPS vs Change FPS

The fix is to convert the VFR timeline into a CFR timeline. Avidemux offers two similarly named tools, and only one of them does what you want:

Resample FPS (the fix) Change FPS (not the fix)
Where Video Filters → Resample FPS Video Filters → Change FPS (or Video Output options, depending on build)
What it does Re-times every frame onto an even grid at the chosen rate (duplicating or dropping frames as needed) and re-encoding the video Only rewrites the declared frame rate number; frame timestamps are untouched
Fixes VFR drift? Yes — this is the VFR-to-CFR conversion No — the uneven timestamps remain
Cost Requires re-encoding (Video Output = encoder, e.g. x264) Fast, but irrelevant here
Use it when Your file is VFR and you want stable sync You want to deliberately speed up/slow down footage (see change video speed)

Do not confuse these. “Change FPS” is a speed/interpretation control — the classic example being 24 fps film flagged as 25 fps. It has no effect on VFR drift and will not fix a drifting phone recording. You want Resample FPS.

Practical settings. Add Resample FPS in the Video Filters manager and set it to the file’s nominal rate (the Frame rate value MediaInfo reported, typically 30 or 60 fps). Set Video Output to an encoder (x264 with a reasonable CRF), leave Audio Output as-is (or Copy if the container permits), save, and check sync at several points through the file — beginning, middle, and end. Depending on your build, the filter may appear under a slightly different name or submenu; the resampling behavior is what matters.

Step 3: the audio side — keep pitch natural

Resampling the video to CFR realigns the video clock, but some VFR files also have an audio track whose duration no longer matches exactly. If after the video fix you still hear a small residual offset:

  • Use Audio → Time Shift for a constant offset (a fixed number of milliseconds).
  • For a remaining gradual drift, apply a gentle audio resample/stretch with pitch preservation — in Avidemux 2.8.1 the audio resampling options preserve pitch by default when you resample the sample rate, so voices do not go chipmunk. (Audio filter availability depends on your build and on Audio Output being set to an encoder rather than Copy.)
  • Verify with headphones at three timestamps. If the drift is gone everywhere, you are done.

When to pre-convert with HandBrake instead

Avidemux’s Resample FPS works for most VFR files. Consider converting to CFR in HandBrake before opening the file in Avidemux when:

  • The VFR is extreme (frame rate swings from ~5 to 60 fps, common in screen recordings of static desktops).
  • Resample FPS produces visibly jerky motion or Avidemux seeks/cuts behave erratically on the file.
  • You plan heavy editing anyway and want a clean CFR master to work from.

In HandBrake, the relevant setting is Framerate: constant at the file’s nominal rate — “Peak Framerate (VFR)” keeps it variable, which defeats the purpose. Convert once, then do your Avidemux editing on the CFR output.

What to expect: this fix requires re-encoding

There is no way to convert VFR to CFR without re-encoding the video: every frame must be placed on a new, regular grid. Expect the same trade-offs as any re-encode — slower than Copy mode, and a small quality loss you control with the encoder’s quality setting (x264 CRF ~18–20 is visually transparent for most sources). The audio can usually stay untouched. Do not try to use Copy mode here: copying a VFR stream keeps the irregular timestamps, and the drift comes back.

Quick recap. Confirm VFR in MediaInfo → Video Filters → Resample FPS to the nominal rate (not Change FPS) → re-encode with x264 → verify sync at three points. Pre-convert in HandBrake first if the file is wildly variable.

This is an independent guide site and is not affiliated with the Avidemux developers. For the official project, visit avidemux.org. MediaInfo is a third-party open-source tool; we have no affiliation with it.

Frequently asked questions

What is variable frame rate (VFR)?

Variable frame rate means a video file stores frames with unevenly spaced timestamps — more frames per second during busy scenes, fewer during static ones. Phone cameras and screen recorders use VFR to save space, but it confuses editing timelines that expect a regular frame grid.

How do I check if my video is VFR?

Open the file in MediaInfo (a free third-party tool) and look at the video stream’s “Frame rate mode”. If it says Variable, the file is VFR. It may also show a minimum/maximum frame rate pair, such as 7.500 fps / 60.000 fps.

Should I use Resample FPS or Change FPS to fix VFR drift?

Use Resample FPS. It re-times every frame onto an even frame grid, which is the actual VFR-to-CFR conversion. Change FPS only rewrites the declared frame rate number without touching timestamps, so it does not fix drift.

Do I have to re-encode to fix VFR?

Yes. Converting VFR to CFR means placing every frame on a new regular grid, which requires re-encoding the video. Use an encoder like x264 with a good CRF value for visually lossless results; the audio can usually be copied untouched.