Lightweight MP4 box analyzer
Project description
MP4 Analyzer
Tool for analyzing MP4 files, providing both command-line box parsing and GUI-based frame-level analysis.
| 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9664cd04449d3a9bce0fe190d410e2cf1802f9862fe5129d590ffff027441ba
|
|
| MD5 |
0c97cf74663014d5c6cdb00ef9b4fa42
|
|
| BLAKE2b-256 |
6e8d8bae49cf12f1498d2b2788b3cf1edf4c93a565fdaae1ae38d139380e6c3b
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4ebc698550b81151f4b5d5f593f1955e4899d4554322864b9661ce9e6166607
|
|
| MD5 |
4398b055cad263a61c08397b605395df
|
|
| BLAKE2b-256 |
aa61fe52b25b3ed4cc967825344069fc1f121b2e9ee0f1485d740ad994832978
|