MP4 MP4 Analyzer by MediaOnDeck

// guide

Guide

From opening a file to reading QP heatmaps and motion vectors — the whole workflow. Everything runs inside your browser; your file is never uploaded.

1. Open a file

Click Open File on the landing page, or drag a file onto the page. Containers MP4 / MOV / M4V / 3GP / MKV are supported, with H.264 (AVC) and H.265 (HEVC) video codecs.

A recent Chrome or Edge is recommended: frame preview uses the browser's built-in hardware decoder. Other browsers can still analyze the bitstream, just without the picture preview.

2. Read the box tree

The left panel shows the ISOBMFF structure — the skeleton of the file:

BoxPurpose
ftypFile type and compatible brands
moov / mvhdMedia metadata and global parameters (duration, timescale, rate)
trak / tkhdOne track (video or audio) and its track header
stbl / stsdSample tables and codec configuration (SPS/PPS)
stts / stss / stcoTiming, keyframe index, and sample byte offsets
mdatThe actual coded bitstream

Click any node to inspect its fields and a hex dump of its bytes. Container boxes can be expanded.

3. File info and frame list

File Info summarizes container-level facts: track count, codec, resolution, frame rate, duration and bitrate — useful for a quick sanity check.

Frame List enumerates every sample with its index, frame type, size and byte offset. The three frame types are the basis of everything else:

TypeMeaning
IIntra-coded, independently decodable (keyframe)
PForward prediction from past frames
BBi-directional prediction, referencing past and future frames

4. Frame detail: three modes

  1. Preview — decode and display the frame via the browser's built-in hardware decoder; it doubles as the backdrop for block analysis.
  2. Binary — a hex dump of the whole frame.
  3. Block analysis — the core of the tool: visualize this frame's coding decisions.

5. Reading the QP heatmap

QP (Quantization Parameter) is how aggressively a block is compressed: higher QP means coarser quantization, fewer retained details, lower bitrate; lower QP means more detail and more bits.

Each block is colored by its deviation from the frame's base QP:

ColorMeaning
GreenWell below base QP — the encoder spent bits here
Yellow / orangeAround the base QP — business as usual
RedWell above base QP — heavy compression, details dropped

Toggle QP values to print the number on each block, and Grid to outline coding block boundaries — useful to see how block sizes vary across the frame.

6. Reading motion vectors (MV)

With MV enabled, every inter-predicted block gets an arrow:

  • Start — the center of the current block;
  • End (dot) — the center of the best-matching reference block;
  • Length — motion magnitude; a dot with no line means a zero vector (still area);
  • Direction — where this content came from, i.e. the opposite of apparent motion.
ColorMeaning
BlueL0 vector — references a past frame (P and B frames)
OrangeL1 vector — references a future frame (B frames only)

Arrows are drawn only once a block is large enough on screen at the current zoom. Zoom in to reveal them.

Click any block to select it (red outline); the block info panel on the right reports exact values — QP, delta from base, motion vector components and prediction type — plus a magnified view of the block and its neighborhood.

7. Locating bytes with hex search

Both in box details and in a frame's binary view, the search box offers two modes: text (ASCII, e.g. find avcC or mdat) and hex (byte sequence).

  • Hex input is auto-uppercased and grouped in pairs: typing ffff becomes FF FF;
  • Non-hex characters are filtered as you type, and pasting 0xdeadbeef works;
  • Jump between matches with ↑ / ↓ (or Enter / Shift+Enter); matches are highlighted;
  • Text mode can be made case-sensitive.