Skip to content

General Usage


MP4Box [option] input [option] [other_dash_inputs]

General Options

MP4Box is a multimedia packager, with a vast number of functionalities: conversion, splitting, hinting, dumping, DASH-ing, encryption, transcoding and others.
MP4Box provides a large set of options, classified by categories (see -h). These options do not follow any particular ordering.

By default, MP4Box rewrites the input file. You can change this behavior by using the -out option.
MP4Box stores by default the file with 0.5 second interleaving and meta-data (moov ...) at the beginning, making it suitable for HTTP download-and-play. This may however takes longer to store the file, use -flat to change this behavior.

MP4Box usually generates a temporary file when creating a new IsoMedia file. The location of this temporary file is OS-dependent, and it may happen that the drive/partition the temporary file is created on has not enough space or no write access. In such a case, you can specify a temporary file location with -tmp.

Track identifier for track-based operations (usually referred to as tkID in the help) use the following syntax:

  • INT: target is track with ID INT
  • nINT: target is track number INT
  • audio, video, text: target is first audio, video or text track
  • audioN, videoN, textN: target is the Nth audio, video or text track, with N=1 being the first track of desired type

Option values:
Unless specified otherwise, a track operation option of type integer expects a track identifier value following it.
An option of type boolean expects no following value.

-mem-track: enable memory tracker
-mem-track-stack: enable memory tracker with stack dumping
-p (string): use indicated profile for the global GPAC config. If not found, config file is created. If a file path is indicated, this will load profile from that file. Otherwise, this will create a directory of the specified name and store new config there. Reserved name 0 means a new profile, not stored to disk. Works using -p=NAME or -p NAME
-inter (number, default: 0.5): interleave file, producing track chunks with given duration in ms. A value of 0 disables interleaving
-old-inter (number): same as -inter but without drift correction
-tight: tight interleaving (sample based) of the file. This reduces disk seek operations but increases file size
-flat: store file with all media data first, non-interleaved. This speeds up writing time when creating new files
-frag (number): fragment file, producing track fragments of given duration in ms. This disables interleaving
-out (string): specify ISOBMFF output file name. By default input file is overwritten
-co64: force usage of 64-bit chunk offsets for ISOBMF files
-new: force creation of a new destination file
-newfs: force creation of a new destination file without temp file but interleaving support
-no-sys,-nosys: remove all MPEG-4 Systems info except IOD, kept for profiles. This is the default when creating regular AV content
-no-iod: remove MPEG-4 InitialObjectDescriptor from file
-mfra: insert movie fragment random offset when fragmenting file (ignored in dash mode)
-isma: rewrite the file as an ISMA 1.0 file
-ismax: same as -isma and remove all clock references
-3gp: rewrite as 3GPP(2) file (no more MPEG-4 Systems Info), always enabled if destination file extension is .3gp, .3g2 or .3gpp. Some tracks may be removed in the process
-ipod: rewrite the file for iPod/old iTunes
-psp: rewrite the file for PSP devices
-brand (string): set major brand of file (ABCD) or brand with optional version (ABCD:v)
-ab (string): add given brand to file's alternate brand list
-rb (string): remove given brand to file's alternate brand list
-cprt (string): add copyright string to file
-chap (string): set chapter information from given file. The following formats are supported (but cannot be mixed) in the chapter text file:

- ZoomPlayer: `AddChapter(nb_frames,chapter name)`, `AddChapterBySeconds(nb_sec,chapter name)` and `AddChapterByTime(h,m,s,chapter name)` with 1 chapter per line  
- Time codes: `h:m:s chapter_name`, `h:m:s:ms chapter_name` and ` chapter_name` with 1 chapter per line  
- SMPTE codes: `h:m:s;nb_f/fps chapter_name` and `h:m:s;nb_f chapter_name` with `nb_f` the number of frames and `fps` the framerate with 1 chapter per line  
- Common syntax: `CHAPTERX=h:m:s[:ms or .ms]` on first line and `CHAPTERXNAME=name` on next line (reverse order accepted)

-chapqt (string): set chapter information from given file, using QT signaling for text tracks
-set-track-id tkID:id2: change id of track to id2
-swap-track-id tkID1:tkID1: swap the id between tracks with id1 to id2
-rem (int): remove given track from file
-rap (int): remove all non-RAP samples from given track
-refonly (int): remove all non-reference pictures from given track
-enable (int): enable given track
-disable (int): disable given track
-timescale (int, default: 600): set movie timescale to given value (ticks per second)
-lang [tkID=]LAN: set language. LAN is the BCP-47 code (eng, en-UK, ...). If no track ID is given, sets language to all tracks
-delay tkID=TIME: set track start delay (>0) or initial skip (<0) in ms or in fractional seconds (N/D)
-par tkID=PAR: set visual track pixel aspect ratio. PAR is:

- N:D: set PAR to N:D in track, do not modify the bitstream  
- wN:D: set PAR to N:D in track and try to modify the bitstream  
- none: remove PAR info from track, do not modify the bitstream  
- auto: retrieve PAR info from bitstream and set it in track  
- force: force 1:1 PAR in track, do not modify the bitstream

-clap tkID=CLAP: set visual track clean aperture. CLAP is Wn,Wd,Hn,Hd,HOn,HOd,VOn,VOd or none

  • n, d: numerator, denominator
  • W, H, HO, VO: clap width, clap height, clap horizontal offset, clap vertical offset

-mx tkID=MX: set track matrix, with MX is M1:M2:M3:M4:M5:M6:M7:M8:M9 in 16.16 fixed point integers or hexa
-kind tkID=schemeURI=value: set kind for the track or for all tracks using all=schemeURI=value
-kind-rem tkID=schemeURI=value: remove kind if given schemeID for the track or for all tracks with all=schemeURI=value
-name tkID=NAME: set track handler name to NAME (UTF-8 string)
-tags,-itags (string): set iTunes tags to file, see -h tags
-group-add (string): create a new grouping information in the file. Format is a colon-separated list of following options:

  • refTrack=ID: track used as a group reference. If not set, the track will belong to the same group as the previous trackID specified. If 0 or no previous track specified, a new alternate group will be created
  • switchID=ID: ID of the switch group to create. If 0, a new ID will be computed for you. If <0, disables SwitchGroup
  • criteria=string: list of space-separated 4CCs
  • trackID=ID: track to add to this group

Warning: Options modify state as they are parsed, trackID=1:criteria=lang:trackID=2 is different from criteria=lang:trackID=1:trackID=2

-group-rem-track (int): remove given track from its group
-group-rem (int): remove the track's group
-group-clean: remove all group information from all tracks
-ref tkID:R4CC:refID: add a reference of type R4CC from track ID to track refID (remove track reference if refID is 0)
-keep-utc: keep UTC timing in the file after edit
-udta tkID:[OPTS]: set udta for given track or movie if tkID is 0. OPTS is a colon separated list of:

  • type=CODE: 4CC code of the UDTA (not needed for box= option)
  • box=FILE: location of the udta data, formatted as serialized boxes
  • box=base64,DATA: base64 encoded udta data, formatted as serialized boxes
  • src=FILE: location of the udta data (will be stored in a single box of type CODE)
  • src=base64,DATA: base64 encoded udta data (will be stored in a single box of type CODE)
  • str=STRING: use the given string as payload for the udta box

Note: If no source is set, UDTA of type CODE will be removed

-patch [tkID=]FILE: apply box patch described in FILE, for given trackID if set
-bo: freeze the order of boxes in input file
-init-seg (string): use the given file as an init segment for dumping or for encryption
-zmov: compress movie box according to ISOBMFF box compression or QT if mov extension
-xmov: same as zmov and wraps ftyp in otyp
-edits tkID=EDITS: set edit list. The following syntax is used (no separators between entries):

- `r`: removes all edits  
- `eSTART`: add empty edit with given start time. START can be
  • VAL: start time in seconds (int, double, fraction), media duration used as edit duration
  • VAL-DUR: start time and duration in seconds (int, double, fraction)

    • eSTART,MEDIA[,RATE]: add regular edit with given start, media start time in seconds (int, double, fraction) and rate (fraction or INT)
    • Examples:
  • re0-5e5-3,4: remove edits, add empty edit at 0s for 5s, then add regular edit at 5s for 3s starting at 4s in media track

  • re0-4,0,0.5: remove edits, add single edit at 0s for 4s starting at 0s in media track and playing at speed 0.5

-moovpad (int): specify amount of padding to keep after moov box for later inplace editing - if 0, moov padding is disabled

-no-inplace: disable inplace rewrite
-hdr (string): update HDR information based on given XML, 'none' removes HDR info
-time [tkID=]DAY/MONTH/YEAR-H:M:S: set movie or track creation time
-mtime tkID=DAY/MONTH/YEAR-H:M:S: set media creation time

Encryption/Decryption Options

MP4Box supports encryption and decryption of ISMA, OMA and CENC content, see encryption filter gpac -h cecrypt.
It requires a specific XML file called CryptFile, whose syntax is available at
Image files (HEIF) can also be crypted / decrypted, using CENC only.

-crypt (string): encrypt the input file using the given CryptFile
-decrypt (string): decrypt the input file, potentially using the given CryptFile. If CryptFile is not given, will fail if the key management system is not supported
-set-kms tkID=kms_uri: change ISMA/OMA KMS location for a given track or for all tracks if all= is used

Help Options

-h (string): print help

  • general: general options help
  • hint: hinting options help
  • dash: DASH segmenter help
  • split: split options help
  • import: import options help
  • encode: scene description encoding options help
  • meta: meta (HEIF, MPEG-21) handling options help
  • extract: extraction options help
  • dump: dump options help
  • swf: Flash (SWF) options help
  • crypt: ISMA E&A options help
  • format: supported formats help
  • live: BIFS streamer help
  • core: libgpac core options
  • all: print all the above help screens
  • opts: print all options
  • tags: print supported iTunes tags
  • cicp: print various CICP code points
  • VAL: search for option named VAL (without - or --) in MP4Box, libgpac core and all filters

-hx (string): look for given string in name and descriptions of all MP4Box and filters options
-nodes: list supported MPEG4 nodes
-nodex: list supported MPEG4 nodes and print nodes
-node (string): get given MPEG4 node syntax and QP infolist
-xnodes: list supported X3D nodes
-xnodex: list supported X3D nodes and print nodes
-xnode (string): get given X3D node syntax
-snodes: list supported SVG nodes
-languages: list supported ISO 639 languages
-boxes: list all supported ISOBMF boxes and their syntax
-stats,-fstat: print filter session statistics (import/export/encrypt/decrypt/dashing)
-graph,-fgraph: print filter session graph (import/export/encrypt/decrypt/dashing)
-v: verbose mode
-version: get build version
-- INPUT: escape option if INPUT starts with - character