Skip to main content

Lightweight MP4 box analyzer

Project description

MP4 Analyzer

CI Release PyPI - Version License: MIT

Tool for analyzing MP4 files, providing both command-line box parsing and GUI-based frame-level analysis.

CLI GUI
CLI GUI

Features

CLI Tool

  • Parse and display MP4 box structure
  • Extract metadata and technical information (e.g. duration, bitrate, codec info, track details)
  • Supports output to JSON. No external dependencies needed

GUI Application

  • Frame-by-frame video analysis with timeline visualization
  • Per-frame details: type (I/P/B), byte size, timestamp, and decode vs presentation order
  • Requires FFmpeg for video decoding

Installation and Usage

CLI Tool

pip install mp4analyzer

CLI Help

usage: mp4analyzer [-h] [-o {stdout,json}] [-d] [-s] [-e] [-c | --no-color] [-j JSON_PATH] file

Analyze MP4 files and display metadata information

positional arguments:
  file                  MP4 file to analyze

options:
  -h, --help            show this help message and exit
  -o {stdout,json}, --output {stdout,json}
                        Output format (default: stdout)
  -d, --detailed        Show detailed box properties and internal fields
  -s, --summary         Show concise summary instead of full analysis
  -e, --expand          Expand all arrays and large data structures
  -c, --color           Enable colored output (default: True)
      --no-color        Disable colored output
  -j JSON_PATH, --json-path JSON_PATH
                        Path to save JSON output. If specified, JSON will be saved even if
                        output format is not json.

Examples:
  mp4analyzer video.mp4                    # Basic analysis with color
  mp4analyzer -d video.mp4                 # Detailed view with box properties
  mp4analyzer -s video.mp4                 # Quick summary
  mp4analyzer -e -d video.mp4              # Expand arrays/matrices in details
  mp4analyzer --no-color video.mp4         # Disable ANSI colors
  mp4analyzer -o json video.mp4            # JSON to stdout
  mp4analyzer -j output.json video.mp4     # Save JSON to file (in addition to stdout)

GUI Application

Download and run the executable from GitHub Releases. The application will not run without FFmpeg. Works best with files < 100 MB.

Supported Box Types

ISO Base Media (MP4)

ac4, av01, av1C, avc1, avcC, btrt, colr, ctts, dac4, dinf, dref, edts, elst, esds, free, ftyp, hdlr, hev1, hvcC, iods, mdat, mdhd, mdia, mehd, meta, mfhd, mfra, mfro, minf, moof, moov, mp4a, mvex, mvhd, pasp, sbgp, sdtp, sgpd, smhd, stbl, stco, stsc, stsd, stss, stsz, stts, tfdt, tfhd, tfra, tkhd, traf, trak, tref, trex, trun, udta, url , vmhd

QuickTime Extensions

chpl, gmhd, gmin, text (gmhd), ilst, data, text (sample entry), fiel

TODO

Add more boxes (e.g., VP9 codec, fragmented MP4, etc.)

Development

# Setup
uv sync --extra dev

# Run tests
uv run pytest

# Build CLI package
uv build

# Build GUI app
uv run python build_exe.py

# Create large .mp4 test file
ffmpeg -f lavfi -i "testsrc2=duration=1800:size=1920x1080:rate=30" -c:v libx264 -fs 1000M test_1000mb.mp4

Built With

Technologies

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mp4analyzer-1.1.6.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mp4analyzer-1.1.6-py3-none-any.whl (67.8 kB view details)

Uploaded Python 3

File details

Details for the file mp4analyzer-1.1.6.tar.gz.

File metadata

  • Download URL: mp4analyzer-1.1.6.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mp4analyzer-1.1.6.tar.gz
Algorithm Hash digest
SHA256 c9664cd04449d3a9bce0fe190d410e2cf1802f9862fe5129d590ffff027441ba
MD5 0c97cf74663014d5c6cdb00ef9b4fa42
BLAKE2b-256 6e8d8bae49cf12f1498d2b2788b3cf1edf4c93a565fdaae1ae38d139380e6c3b

See more details on using hashes here.

File details

Details for the file mp4analyzer-1.1.6-py3-none-any.whl.

File metadata

  • Download URL: mp4analyzer-1.1.6-py3-none-any.whl
  • Upload date:
  • Size: 67.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mp4analyzer-1.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 e4ebc698550b81151f4b5d5f593f1955e4899d4554322864b9661ce9e6166607
MD5 4398b055cad263a61c08397b605395df
BLAKE2b-256 aa61fe52b25b3ed4cc967825344069fc1f121b2e9ee0f1485d740ad994832978

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page