All documentation

Analyze video quality

Compare an encode with its reference using VMAF, a per-frame timeline, visual frame comparison, and side-by-side runs.

VMAF (Video Multi-Method Assessment Fusion) is a perceptual quality metric. It compares an encode with its source and scores how closely the encode preserves what viewers notice, rather than measuring raw pixel difference.

Video Commander can run the comparison, chart every frame, open problem frames side by side, compare runs against each other, and export the result without writing an FFmpeg command.

What VMAF measures

VMAF is a full-reference metric, so every run needs two files:

  • The reference is the source or mezzanine file—the highest-quality version available.
  • The distorted file is the encode you want to evaluate.

The score is relative to the reference, not an absolute grade. VMAF is most useful for comparing encoder settings on the same source, setting a quality floor for a delivery ladder, or catching a regression after changing an encoding pipeline.

Before you start

The files must contain the same content and timeline. Different frame rates, frame counts, trims, or extra leading frames misalign the frame-by-frame comparison and produce a misleading score.

VMAF also requires an FFmpeg build with the libvmaf filter. Open Settings → Local Tools, view the selected build's capabilities, and confirm VMAF is available. For faster iteration on long videos, analyze a representative range before running the complete title.

Configure the analysis

Open the Analyze view and use the Options tab:

  1. Choose the reference and distorted files.
  2. Select a model for the intended viewing case. New runs use VMAF v1 1080p at 3H when the selected FFmpeg build supports it.
  3. If either file is HDR, choose a Dynamic Range setting. See Score HDR sources.
  4. Optionally add PSNR, SSIM, MS-SSIM, or CAMBI to the run.
  5. Optionally score every second, fourth, or eighth frame for a quicker first look, or trim the run to a representative range.
  6. Choose a scaling algorithm if the inputs do not have matching dimensions.
  7. Leave threading on Auto unless you are diagnosing a specific FFmpeg build.

Auto uses one thread per core, up to 16. On libvmaf 3.2.0, which can run out of memory on long threaded runs, Auto uses a single thread.

Recent job outputs are available from the file selectors, so an encode or delivery result can become the distorted input without searching for it again. Press Cmd/Ctrl+Enter to start.

Score HDR sources

Every published VMAF model is trained on SDR video. Scoring an HDR reference against an SDR encode directly returns a number that looks plausible but does not mean much.

The Dynamic Range setting controls this:

SettingUse it for
Score as encodedSDR against SDR, or ranking HDR encodes of the same source against each other
Tone-map HDR to SDRAn HDR reference against an SDR deliverable

Tone mapping converts each PQ or HLG input to BT.709 SDR before scoring and leaves SDR inputs as they are. BT.2390 is the broadcast-standard curve, mapped from the reference's mastering peak, its MaxCLL, or 1,000 nits. Hable, Möbius, and Reinhard are also available. Pick the curve that was used to make the SDR version, since the score measures how close the encode is to that picture.

The conversion runs inside the VMAF command, so no intermediate files are written. The setup reads both files' color tags as soon as you choose them and warns about an HDR/SDR pair before the run starts.

Read the summary

The headline score is the mean across the run. The cards around it describe the rest of the distribution:

ResultWhat it tells you
MeanAverage quality across all compared frames
Harmonic meanAn average that weights low-scoring frames more heavily
5th percentile95% of frames score higher than this
1st percentile99% of frames score higher than this
MinimumThe worst-scoring frame, with its timecode
MaximumThe best-scoring frame
Standard deviationHow widely per-frame scores spread

The gap between the mean and the low percentiles often matters more than the mean alone. A high average with a much lower 1st percentile points to a difficult cut, a high-motion sequence, or a scene where rate control underspent. Treat differences smaller than roughly one VMAF point cautiously; they are rarely a useful reason to choose one encode over another by themselves.

Below the cards, the Summary shows:

  • a histogram of per-frame scores, with the share of frames at 95 and above, below 80, and below 60;
  • the lowest-scoring moments, as one-second windows at least 10 seconds apart, each with Open in Frames;
  • the reference and encode properties side by side, and the run's settings; and
  • any additional metrics, with a note on which direction is better.

A warning appears when the files differ in dynamic range, frame count, or frame rate.

VMAF is one model of perceptual quality. It does not replace checking cadence, audio, captions, or real playback on target devices.

Find where quality drops

The Timeline plots every frame. Click a point to select its frame, drag to zoom, scroll sideways to pan, and step with the arrow keys or the previous- and next-frame buttons. A steady graph means rate control is holding quality consistently; isolated cliffs reveal the exact scenes that need review.

Frames shares the same selected frame. Open it to inspect the reference and encode side by side, drag a wipe between them, amplify their difference, or blink between A and B. Zoom and pan stay locked so the same region remains aligned. Worst frame moves directly to the minimum score.

Compare runs

The Compare tab puts up to three analyses next to a baseline. Choose Compare with… on the Summary to start from the run on screen.

The scorecard lists mean, harmonic mean, 1% and 5% lows, minimum, the share of frames below 80, bitrate, and size, with each run's change from the baseline. Below it, every run's per-frame VMAF shares a chart, and each run's difference from the baseline is plotted on a second one. The one-second windows that fell furthest are listed, and each opens that frame in Frames.

Runs are only comparable when they were scored against the same reference with the same model, tone mapping, and scoring resolution. Compare flags a run that differs, shows no score changes for it, and leaves it off the charts.

Choose the right model

The model should match the intended playback environment. 3H means a viewing distance of three times the screen height.

ModelUse it for
VMAF v1 1080p, 3HMost 1080p and general streaming work
VMAF v1 Phone, 5HMobile-specific encodes viewed on a smaller screen
VMAF v1 4K, 1.5HDelivery intended for a 4K display viewed up close
VMAF v1 4K TV, 3H4K delivery for a living-room TV; scores run to 110
VMAF v0.6.1Comparing with results scored before VMAF v1

Each v1 model has a 50/60 fps variant for high-frame-rate content. VMAF v1 needs feature extractors that some FFmpeg builds lack; the app checks the selected build once and defaults to v0.6.1 when v1 is unavailable.

The same encode can score differently under each model because the assumed viewing conditions differ. Do not use the phone model to approve an encode that will primarily be watched on a television, and do not compare scores from different models directly.

Keep or export a result

Completed analyses remain in job history and can be reopened from Load Previous Analysis. From Export on the Summary:

  • Save Summary as PNG or Save Summary as PDF for a report or ticket. The PDF is A4 with selectable text.
  • Export as CSV for charting and comparing frame data.
  • Export as JSON for a regression check or automated workflow.

Encode to a quality target

The Target VMAF quality mode in Convert searches for the lowest-bitrate CRF that meets a score you choose. It encodes a representative probe, measures it, and adjusts CRF before running the final encode. See Convert a file for the complete workflow.

Common mistakes

  • Mismatched files: different resolutions, frame rates, trims, or durations can break alignment. Verify the two files before blaming the encoder.
  • The wrong reference: compare against the source that was actually encoded. Comparing a 1080p encode with a 4K master also measures the downscale.
  • HDR against SDR as encoded: use tone mapping when the reference is HDR and the encode is SDR.
  • Reading only the mean: use the percentiles, the lowest-scoring moments, and the timeline to find short visible failures hidden by a strong average.
  • Mixing models: a v1 score and a v0.6.1 score are not on the same scale.
  • Over-reading small differences: a fraction of a point is usually not a meaningful result.
Something wrong or missing on this page? Tell us.