Skip to content


Subversion checkout URL

You can clone with
Download ZIP
A library to allow programmatic access to and manipulation of MPEG 4 container files.
branch: master

Merge pull request #1 from crabhit/master

Default 'rt' mode parse mp4 fail when meet 0x0a in windows platform
latest commit cd13f104ab
@SteveMarshall authored
Failed to load latest commit information.
.gitignore Make tests executable, ignore compiled Python files.
README.markdown Allow searching descendants. Allow searching descendants. change open mode to 'rb'



A library to allow programmatic access to and manipulation of MPEG 4 container files.


William Herrera’s (superb) Audio::M4P::Quicktime Perl module does everything I wanted but is designed for use with small MP4 files, such as AAC audio downloaded from the iTunes Store. Some of the design decisions, then, are not apt to working with larger MP4 files such as high-definition video.

This is where my interest lies: I intend for my library to allow access to—and manipulation of—any size of MP4 file, from half-megabyte AAC audio files through to multi-gigabyte high-definition multimedia files. Further, it shouldn’t be constrained, as far as possible, by hardware limitations: Audio::M4P::Quicktime module is limited by the fact that it loads the entire MP4 file into memory; for a multi-gigabyte file, this is simply not feasible.

Use cases

  • Read the content of an MP4 file
  • Create an MP4 file from scratch
  • Add atoms (and atom data) to an MP4 file (new or already extant)
  • Extract atoms from one MP4 file and add them to another (eg. extract all audio tracks from file A and add them to file B)


Future plans

  • Plugin-style architecture to support other media formats?
Something went wrong with that request. Please try again.