The MP4 library provides an API to create and modify mp4 files as defined by
ISO-IEC:14496-1:2001 MPEG-4 Systems. This file format is derived from Apple's
QuickTime file format that has been used as a multimedia file format in a
variety of platforms and applications. It is a very powerful and extensible
format that can accomodate practically any type of media.
The basic structure of an mp4 file is that the file is a container for one or
more tracks. These tracks contain one type of media, such as audio or video.
Each track has its own timeline, samples, and properties. An example of a
sample is a frame of video. The file describes how to synchronize the
timelines of the tracks and the aggregate properties of the tracks.
The MP4 library is focussed on providing an easy to use API for the mp4 file
format. It has been used with an encoder, a server, a player, and a number of
mp4 utilities. However, it may not be adequate for multimedia editors that
wish to work directly with mp4 files. It can be used by these type of tools to
export an mp4 file. (The library is open source so contributions of extensions
to the library are welcome.)
In providing a easy to use API not all the information in the mp4 file is
directly exposed via the API. To accomodate applications that need access to
information not otherwise available via the API there are file and track level
generic get and set property routines that use arbitary string property names.
To use these routines you will need to be familar with the mp4 file
specification or be willing to wade thru the output of MP4Dump() to determine
what you want. See MP4GetIntegerProperty() for more details.
The libary API is defined in <mp4.h> which includes all the necessary
dependent include files.
The MP4 library can be used by either C or C++ programs. The calling convention
is C, but if C++ is used then the default argument feature of that language
can be used.
MP4Create("foo.mp4", 0, 0, 0); /* OK in C++ and C */
MP4Create("foo.mp4"); /* OK in C++, ERROR in C */
See mpeg4ip/lib/mp4v2/util and mpeg4ip/lib/mp4v2/test for simple example
programs that use the MP4 library.
Program that creates an empty mp4 file.
Simple program to print a text version of an mp4 file
Program to read each track and sample and place them in a separate file to ease
inspection or recombination.
Program to broadcast the hinted tracks of an mp4 file using RTP.
Program that reads the video track but doesn't actually render the video.
For more complete applications that use the MP4 library see
mpeg4ip/server/mp4creator, mpeg4ip/server/mp4live, and