1MP4(3) MP4 File Format Library MP4(3)
2
3
4
6 The MP4 library provides an API to create and modify mp4 files as
7 defined by ISO-IEC:14496-1:2001 MPEG-4 Systems. This file format is
8 derived from Apple's QuickTime file format that has been used as a mul‐
9 timedia file format in a variety of platforms and applications. It is a
10 very powerful and extensible format that can accomodate practically any
11 type of media.
12
13 The basic structure of an mp4 file is that the file is a container for
14 one or more tracks. These tracks contain one type of media, such as
15 audio or video. Each track has its own timeline, samples, and proper‐
16 ties. An example of a sample is a frame of video. The file describes
17 how to synchronize the timelines of the tracks and the aggregate prop‐
18 erties of the tracks.
19
20 The MP4 library is focussed on providing an easy to use API for the mp4
21 file format. It has been used with an encoder, a server, a player, and
22 a number of mp4 utilities. However, it may not be adequate for multime‐
23 dia editors that wish to work directly with mp4 files. It can be used
24 by these type of tools to export an mp4 file. (The library is open
25 source so contributions of extensions to the library are welcome.)
26
27 In providing a easy to use API not all the information in the mp4 file
28 is directly exposed via the API. To accomodate applications that need
29 access to information not otherwise available via the API there are
30 file and track level generic get and set property routines that use
31 arbitary string property names. To use these routines you will need to
32 be familar with the mp4 file specification or be willing to wade thru
33 the output of MP4Dump() to determine what you want. See MP4GetInte‐
34 gerProperty() for more details.
35
37 The libary API is defined in <mp4.h> which includes all the necessary
38 dependent include files.
39
40 The MP4 library can be used by either C or C++ programs. The calling
41 convention is C, but if C++ is used then the default argument feature
42 of that language can be used.
43
44 For example:
45 MP4Create("foo.mp4", 0, 0, 0); /* OK in C++ and C */
46 MP4Create("foo.mp4"); /* OK in C++, ERROR in C */
47
49 See mpeg4ip/lib/mp4v2/util and mpeg4ip/lib/mp4v2/test for simple exam‐
50 ple programs that use the MP4 library.
51
52 In particular:
53 mp4nullcreate.cpp
54 Program that creates an empty mp4 file.
55
56 mp4dump.cpp
57 Simple program to print a text version of an mp4 file
58
59 mp4extract.cpp
60 Program to read each track and sample and place them in a separate
61 file to ease inspection or recombination.
62
63 mp4broadcaster.cpp
64 Program to broadcast the hinted tracks of an mp4 file using RTP.
65
66 mp4nullvplayer.cpp
67 Program that reads the video track but doesn't actually render the
68 video.
69
70 For more complete applications that use the MP4 library see
71 mpeg4ip/server/mp4creator, mpeg4ip/server/mp4live, and
72 mpeg4ip/player/src.
73
74
75
76Cisco Systems Inc. Version 0.9 MP4(3)