NAME
MP4Box - GPAC command-line media packager
SYNOPSIS
MP4Box [options] [file] [options]
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 .I -h). These options do not follow any
particular ordering.
By default,
MP4Box rewrites the input file. You can change this behavior
by using the .I 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 .I 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 .I tmp.
Option values:
Unless specified otherwise, an option of type integer
expects a trackID value following it.An option of type
boolean expects no following value.Note: Track operations
identify tracks through their ID (usually referred to as
tkID in the help), not their order.
-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 .I 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 .I 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
h:m:s.ms 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 id1:id2
change id of track with id1 to id2
-swap-track-id id1:id2
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)
-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: ID of the 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: ID of the 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 id:XXXX:refID
add a reference of type 4CC from track ID to track refID
-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 | ||
-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
Extracting Options
MP4Box can be used to extract media tracks from MP4 files. If you need to convert these tracks however, please check the filters doc.
Options:
-raw (string)
extract given track in raw format when supported. Use tkID:output=FileName to set output file name
-raws (string)
extract each sample of the given track to a file. Use tkID:N to extract the Nth sample
-nhnt (int)
extract given track to NHNT format
-nhml (string)
extract given track to NHML format. Use tkID:full for full NHML dump with all packet properties
-webvtt-raw (string)
extract given track as raw media in WebVTT as metadata. Use tkID:embedded to include media data in the WebVTT file
-single (int)
extract given track to a new mp4 file
-six (int)
extract given track as raw media in experimental XML streaming instructions
-mux (string)
multiplex input file to given destination
-qcp (int)
same as .I raw but defaults to QCP file for EVRC/SMV
-saf |
multiplex input file to SAF multiplex |
-dvbhdemux
demultiplex DVB-H file into IP Datagrams sent on the network
-raw-layer (int)
same as .I raw but skips SVC/MVC/LHVC extractors when extracting
-diod |
extract file IOD in raw format |
-mpd (string)
convert given HLS or smooth
manifest (local or remote http) to MPD.
Warning: This is not compatible with other DASH options and
does not convert associated segments
DASH Options
Also see:
- the dasher ’gpac -h dash’ filter documentation
- [[DASH wiki|DASH-intro]].
Specifying input files
Input media
files to dash can use the following modifiers
* #trackID=N: only use the track ID N from the source file
* #N: only use the track ID N from the source file (mapped
to .I -tkid)
* #video: only use the first video track from the source
file
* #audio: only use the first audio track from the source
file
* :id=NAME: set the representation ID to NAME. Reserved
value NULL disables representation ID for multiplexed
inputs. If not set, a default value is computed and all
selected tracks from the source will be in the same output
multiplex.
* :dur=VALUE: process VALUE seconds (fraction) from the
media. If VALUE is longer than media duration, last sample
duration is extended.
* :period=NAME: set the representation’s period to
NAME. Multiple periods may be used. Periods appear in the
MPD in the same order as specified with this option
* :BaseURL=NAME: set the BaseURL. Set multiple times for
multiple BaseURLs
Warning: This does not modify generated files location (see
segment template).
* :bandwidth=VALUE: set the representation’s bandwidth
to a given value
* :pdur=VALUE: sets the duration of the associated period to
VALUE seconds (fraction) (alias for period_duration:VALUE).
This is only used when no input media is specified (remote
period insertion), e.g. :period=X:xlink=Z:pdur=Y
* :ddur=VALUE: override target DASH segment duration to
VALUE seconds (fraction) for this input (alias for
duration:VALUE)
* :xlink=VALUE: set the xlink value for the period
containing this element. Only the xlink declared on the
first rep of a period will be used
* :asID=VALUE: set the AdaptationSet ID to NAME
* :role=VALUE: set the role of this representation (cf DASH
spec). Media with different roles belong to different
adaptation sets.
* :desc_p=VALUE: add a descriptor at the Period level. Value
must be a properly formatted XML element.
* :desc_as=VALUE: add a descriptor at the AdaptationSet
level. Value must be a properly formatted XML element. Two
input files with different values will be in different
AdaptationSet elements.
* :desc_as_c=VALUE: add a descriptor at the AdaptationSet
level. Value must be a properly formatted XML element. Value
is ignored while creating AdaptationSet elements.
* :desc_rep=VALUE: add a descriptor at the Representation
level. Value must be a properly formatted XML element. Value
is ignored while creating AdaptationSet elements.
* :sscale: force movie timescale to match media timescale of
the first track in the segment.
* :trackID=N: only use the track ID N from the source file
* @f1[:args][@fN:args][@@fK:args]: set a filter chain to
insert between the source and the dasher. Each filter in the
chain is formatted as a regular filter, see filter doc
’gpac -h doc’. If several filters are set:
- they will be chained in the given order if separated by a
single @
- a new filter chain will be created if separated by a
double @@. In this case, no representation ID is assigned to
the source.
Example
source.mp4:@c=avc:b=1M@@c=avc:b=500k
This will load
a filter chain with two encoders connected to the source and
to the dasher.
Example
source.mp4:@c=avc:b=1M@c=avc:b=500k
This will load a filter chain with the second encoder connected to the output of the first (!!).
Note: @f must be placed after all other options.
Options
-dash (number)
create DASH from input files with given segment (subsegment for onDemand profile) duration in ms
-dash-live (number)
generate a live DASH session using the given segment duration in ms; using -dash-live=F will also write the live context to F. MP4Box will run the live session until q is pressed or a fatal error occurs
-ddbg-live (number)
same as .I dash-live without time regulation for debug purposes
-frag (number)
specify the fragment duration in ms. If not set, this is the DASH duration (one fragment per segment)
-out (string)
specify the output MPD file name
-profile,-dash-profile (string)
specify the target DASH profile, and set default options to ensure conformance to the desired profile. Default profile is full in static mode, live in dynamic mode (old syntax using :live instead of .live as separator still possible). Defined values are onDemand, live, main, simple, full, hbbtv1.5.live, dashavc264.live, dashavc264.onDemand, dashif.ll
-profile-ext (string)
specify a list of profile extensions, as used by DASH-IF and DVB. The string will be colon-concatenated with the profile used
-rap |
ensure that segments begin with random access points, segment durations might vary depending on the source encoding |
-frag-rap
ensure that all fragments begin with random access points (duration might vary depending on the source encoding)
-segment-name (string)
set the segment name for
generated segments. If not set (default), segments are
concatenated in output file except in live profile where
dash_%%s. Supported replacement strings are:
- $Number[%%0Nd]$ is replaced by the segment number,
possibly prefixed with 0
- $RepresentationID$ is replaced by representation name
- $Time$ is replaced by segment start time
- $Bandwidth$ is replaced by representation bandwidth
- $Init=NAME$ is replaced by NAME for init segment, ignored
otherwise
- $Index=NAME$ is replaced by NAME for index segments,
ignored otherwise
- $Path=PATH$ is replaced by PATH when creating segments,
ignored otherwise
- $Segment=NAME$ is replaced by NAME for media segments,
ignored for init segments
-segment-ext (string, default: m4s)
set the segment extension, null means no extension
-init-segment-ext (string, default: mp4)
set the segment extension for init, index and bitstream switching segments, null means no extension
-segment-timeline
use SegmentTimeline when generating segments
-segment-marker (string)
add a box of given type (4CC) at the end of each DASH segment
-insert-utc
insert UTC clock at the beginning of each ISOBMF segment
-base-url (string)
set Base url at MPD level. Can
be used several times.
Warning: this does not modify generated files location
-mpd-title (string)
set MPD title
-mpd-source (string)
set MPD source
-mpd-info-url (string)
set MPD info url
-cprt (string)
add copyright string to MPD
-dash-ctx (string)
store/restore DASH timing from indicated file
-dynamic
use dynamic MPD type instead of static
-last-dynamic
same as .I dynamic but close the period (insert lmsg brand if needed and update duration)
-mpd-duration (number)
set the duration in second of a live session (if 0, you must use .I mpd-refresh)
-mpd-refresh (number)
specify MPD update time in seconds
-time-shift (int)
specify MPD time shift buffer depth in seconds, -1 to keep all files)
-subdur (number)
specify maximum duration in ms of the input file to be dashed in LIVE or context mode. This does not change the segment duration, but stops dashing once segments produced exceeded the duration. If there is not enough samples to finish a segment, data is looped unless .I no-loop is used which triggers a period end
-run-for (int)
run for given ms the dash-live session then exits
-min-buffer (int)
specify MPD min buffer time in ms
-ast-offset (int)
specify MPD AvailabilityStartTime offset in ms if positive, or availabilityTimeOffset of each representation if negative
-dash-scale (int)
specify that timing for .I dash, .I dash-live, .I subdur and .I do_frag are expressed in given timescale (units per seconds) rather than ms
-mem-frags
fragmentation happens in memory rather than on disk before flushing to disk
-pssh (int)
set pssh store mode
* v: initial movie
* f: movie fragments
* m: MPD
* mv, vm: in initial movie and MPD
* mf, fm: in movie fragments and MPD
-sample-groups-traf
store sample group descriptions in traf (duplicated for each traf). If not set, sample group descriptions are stored in the initial movie
-mvex-after-traks
store mvex box after trak boxes within the moov box. If not set, mvex is before
-sdtp-traf (int)
use sdtp box in traf
(Smooth-like)
* no: do not use sdtp
* sdtp: use sdtp box to indicate sample dependencies and do
not write info in trun sample flags
* both: use sdtp box to indicate sample dependencies and
also write info in trun sample flags
-no-cache
disable file cache for dash inputs
-no-loop
disable looping content in live mode and uses period switch instead
-hlsc |
insert UTC in variant playlists for live HLS | ||
-bound |
segmentation will always try to split before or at, but never after, the segment boundary |
-closest
segmentation will use the closest frame to the segment boundary (before or after)
-subsegs-per-sidx,-frags-per-sidx (int)
set the number of subsegments
to be written in each SIDX box
* 0: a single SIDX box is used per segment
* -1: no SIDX box is used
-ssix |
enable SubsegmentIndexBox describing 2 ranges, first one from moof to end of first I-frame, second one unmapped. This does not work with daisy chaining mode enabled |
-url-template
use SegmentTemplate instead of explicit sources in segments. Ignored if segments are stored in the output file
-url-template-sim
use SegmentTemplate simulation while converting HLS to MPD
-daisy-chain
use daisy-chain SIDX instead of hierarchical. Ignored if frags/sidx is 0
-single-segment
use a single segment for the whole file (OnDemand profile)
-single-file
use a single file for the whole file (default)
-bs-switching (string,
default: inband, values:
inband|merge|multi|no|single)
set bitstream switching mode
* inband: use inband param set and a single init segment
* merge: try to merge param sets in a single sample
description, fallback to no
* multi: use several sample description, one per quality
* no: use one init segment per quality
* pps: use out of band VPS,SPS,DCI, inband for PPS,APS and a
single init segment
* single: to test with single input
-moof-sn (int)
set sequence number of first moof to given value
-tfdt (int)
set TFDT of first traf to given value in SCALE units (cf -dash-scale)
-no-frags-default
disable default fragments flags in trex (required by some dash-if profiles and CMAF/smooth streaming compatibility)
-single-traf
use a single track fragment per moof (smooth streaming and derived specs may require this)
-tfdt-traf
use a tfdt per track fragment (when -single-traf is used)
-dash-ts-prog (int)
program_number to be considered in case of an MPTS input file
-frag-rt
when using fragments in live mode, flush fragments according to their timing
-cp-location (string)
set ContentProtection element
location
* as: sets ContentProtection in AdaptationSet element
* rep: sets ContentProtection in Representation element
* both: sets ContentProtection in both elements
-start-date (string)
for live mode, set start date
(as xs:date, e.g. YYYY-MM-DDTHH:MM:SSZ). Default is current
UTC
Warning: Do not use with multiple periods, nor when DASH
duration is not a multiple of GOP size
-cues (string)
ignore dash duration and segment according to cue times in given XML file (tests/media/dash_cues for examples)
-strict-cues
throw error if something is wrong while parsing cues or applying cue-based segmentation
-merge-last-seg
merge last segment if shorter than half the target duration
File splitting
MP4Box can
split input files by size, duration or extract a given part
of the file to new IsoMedia file(s).
This requires that at most one track in the input file has
non random-access points (typically one video track at
most).
Splitting will ignore all MPEG-4 Systems tracks and hint
tracks, but will try to split private media tracks.
The input file must have enough random access points in
order to be split. If this is not the case, you will have to
re-encode the content.
You can add media to a file and split it in the same pass.
In this case, the destination file (the one which would be
obtained without splitting) will not be stored.
Time ranges are
specified as follows:
* ’S-E’: S start and E end times, formatted as
HH:MM:SS.ms, MM:SS.ms or time in seconds (int, double,
fraction)
* ’S:E’: S start time and E end times in seconds
(int, double, fraction)
* ’S:end’ or ’S:end-N’: S start time
in seconds (int, double), N number of seconds (int, double)
before the end
MP4Box
splitting runs a filter session using the reframer filter as
follows:
- splitrange option of the reframer is always set
- source is demultiplexed with alltk option set
- start and end ranges are passed to xs and xe options of
the reframer
- for -splitz, options xadjust and xround=after are enforced
- for -splitg, options xadjust and xround=before are
enforced
- for -splitf, option xround=seek is enforced and
propbe_refset if not specified at prompt
- for -splitx, option xround=closest and propbe_ref are
enforced if not specified at prompt
The default
output storage mode is to full interleave and will require a
temp file for each output. This behavior can be modified
using -flat, -newfs, -inter and -frag.
The output file name(s) can be specified using -out and
templates (e.g. -out split$num%04d$.mp4 produces
split0001.mp4, split0002.mp4, ...).
-split (string)
split in files of given max
duration (float number) in seconds. A trailing unit can be
specified:
* ’M’, ’m’: duration is in minutes
* ’H’, ’h’: size is in hours
-split-rap,-splitr (string)
split in files at each new RAP
-split-size,-splits (string)
split in files of given max
size (integer number) in kilobytes. A trailing unit can be
specified:
* ’M’, ’m’: size is in megabytes
* ’G’, ’g’: size is in gigabytes
-split-chunk,-splitx (string)
extract the specified time
range as follows:
- the start time is moved to the RAP sample closest to the
specified start time
- the end time is kept as requested
-splitz (string)
extract the specified time
range so that ranges A:B and B:C share exactly the same
boundary B:
- the start time is moved to the RAP sample at or after the
specified start time
- the end time is moved to the frame preceding the RAP
sample at or following the specified end time
-splitg (string)
extract the specified time
range as follows:
- the start time is moved to the RAP sample at or before the
specified start time
- the end time is moved to the frame preceding the RAP
sample at or following the specified end time
-splitf (string)
extract the specified time range and insert edits such that the extracted output is exactly the specified range
File Dumping
MP4Box has many dump functionalities, from simple track listing to more complete reporting of special tracks.
Options:
-std |
dump/write to stdout and assume stdout is opened in binary mode | ||
-stdb |
dump/write to stdout and try to reopen stdout in binary mode |
-tracks
print the number of tracks on stdout
-info (string)
print movie info (no parameter) or track extended info with specified ID
-infon (string)
print track info for given track number, 1 being the first track in the file
-infox |
print movie and track extended info (same as -info N for each track) |
-diso,-dmp4
dump IsoMedia file boxes in XML output
-dxml |
dump IsoMedia file boxes and known track samples in XML output | ||
-disox |
dump IsoMedia file boxes except sample tables in XML output |
-keep-ods
do not translate ISOM ODs and ESDs tags (debug purpose only)
-bt |
dump scene to BT format | ||
-xmt |
dump scene to XMT format | ||
-wrl |
dump scene to VRML format | ||
-x3d |
dump scene to X3D XML format | ||
-x3dv |
dump scene to X3D VRML format | ||
-lsr |
dump scene to LASeR XML (XSR) format | ||
-svg |
dump scene to SVG | ||
-drtp |
dump rtp hint samples structure to XML output | ||
-dts |
print sample timing, size and position in file to text output | ||
-dtsx |
same as .I dts but does not print offset | ||
-dtsc |
same as .I dts but analyses each sample for duplicated dts/cts (slow !) | ||
-dtsxc |
same as .I dtsc but does not print offset (slow !) |
-dnal (int)
print NAL sample info of given track
-dnalc (int)
print NAL sample info of given track, adding CRC for each nal
-dnald (int)
print NAL sample info of given track without DTS and CTS info
-dnalx (int)
print NAL sample info of given track without DTS and CTS info and adding CRC for each nal
-sdp |
dump SDP description of hinted file |
-dsap (int)
dump DASH SAP cues (see -cues) for a given track
-dsaps (int)
same as .I dsap but only print sample number
-dsapc (int)
same as .I dsap but only print CTS
-dsapd (int)
same as .I dsap but only print DTS
-dsapp (int)
same as .I dsap but only print presentation time
-dcr |
dump ISMACryp samples structure to XML output |
-dchunk
dump chunk info
-dump-cover
extract cover art
-dump-chap
extract chapter file as TTXT format
-dump-chap-ogg
extract chapter file as OGG format
-dump-chap-zoom
extract chapter file as zoom format
-dump-udta [tkID:]4cc
extract user data for the given 4CC. If tkID is given, dumps from UDTA of the given track ID, otherwise moov is used
-mergevtt
merge vtt cues while dumping
-ttxt (int)
convert input subtitle to GPAC TTXT format if no parameter. Otherwise, dump given text track to GPAC TTXT format
-srt (int)
convert input subtitle to SRT format if no parameter. Otherwise, dump given text track to SRT format
-nstat |
generate node/field statistics for scene |
-nstats
generate node/field statistics per Access Unit
-nstatx
generate node/field statistics for scene after each AU
-hash |
generate SHA-1 Hash of the input file |
-comp (string)
replace with compressed version all top level box types given as parameter, formatted as orig_4cc_1=comp_4cc_1[,orig_4cc_2=comp_4cc_2]
-topcount (string)
print to stdout the number of top-level boxes matching box types given as parameter, formatted as 4cc_1,4cc_2N
-topsize (string)
print to stdout the number of bytes of top-level boxes matching types given as parameter, formatted as 4cc_1,4cc_2N or all for all boxes
-bin |
convert input XML file using NHML bitstream syntax to binary |
-mpd-rip
fetch MPD and segment to disk
-udp-write (string, default: IP[:port])
write input name to UDP (default port 2345)
-raw-cat (string)
raw concatenation of given file with input file
-wget (string)
fetch resource from http(s) URL
-dm2ts |
dump timing of an input MPEG-2 TS stream sample timing |
-check-xml
check XML output format for -dnal*, -diso* and -dxml options
Importing Options
File importing
Syntax is .I
add / .I cat URL[#FRAGMENT][:opt1...:optN=val]
This process will create the destination file if not
existing, and add the track(s) to it. If you wish to always
create a new destination file, add .I -new.
The supported input media types depend on your installation,
check filters documentation for more info.
To select a
desired media track from a source, a fragment identifier
’#’ can be specified, before any other options.
The following syntax is used:
* ’#video’: adds the first video track found in
source
* ’#audio’: adds the first audio track found in
source
* ’#auxv’: adds the first auxiliary video track
found in source
* ’#pict’: adds the first picture track found in
source
* ’#trackID=ID’ or ’#ID’: adds the
specified track. For IsoMedia files, ID is the track ID. For
other media files, ID is the value indicated by MP4Box -info
inputFile
* ’#pid=ID’: number of desired PID for MPEG-2 TS
sources
* ’#prog_id=ID’: number of desired program for
MPEG-2 TS sources
* ’#program=NAME’: name of desired program for
MPEG-2 TS sources
By default all imports are performed sequentially, and final interleaving is done at the end; this however requires a temporary file holding original ISOBMF file (if any) and added files before creating the final output. Since this can become quite large, it is possible to add media to a new file without temporary storage, using .I -flat option, but this disables media interleaving.
If you wish to
create an interleaved new file with no temporary storage,
use the .I -newfs option. The interleaving might not be as
precise as when using .I new since it is dependent on
multiplexer input scheduling (each execution might lead to a
slightly different result). Additionally in this mode:
- Some multiplexing options (marked with X below) will be
activated for all inputs (e.g. it is not possible to import
one AVC track with xps_inband and another without).
- Some multiplexing options (marked as D below) cannot be
used as they require temporary storage for file edition.
- Usage of .I cat is possible, but concatenated sources will
not be interleaved in the output. If you wish to perform
more complex cat/add operations without temp file, use a
playlist.
Source URL can be any URL supported by GPAC, not limited to local files.
Note: When importing SRT or SUB files, MP4Box will choose default layout options to make the subtitle appear at the bottom of the video. You SHOULD NOT import such files before any video track is added to the destination file, otherwise the results will likely not be useful (default SRT/SUB importing uses default serif font, fontSize 18 and display size 400x60). For more details, check TTXT doc.
When importing several tracks/sources in one pass, all options will be applied if relevant to each source. These options are set for all imported streams. If you need to specify these options per stream, set per-file options using the syntax -add stream[:opt1:...:optN].
The import file
name may be set to empty or self, indicating that the import
options should be applied to the destination file track(s).
Example
-add self:moovts=-1:noedit src.mp4
This will apply
moovts and noedit option to all tracks in src.mp4
Example
-add self#2:moovts=-1:noedit src.mp4
This will apply
moovts and noedit option to track with ID=2 in src.mp4
Only per-file options marked with a S are possible in this
mode.
When importing an ISOBMFF/QT file, only options marked as C or S can be used.
Allowed
per-file options:
dur (int)
XC import only the specified
duration from the media. Value can be:
* positive float: specifies duration in seconds
* fraction: specifies duration as NUM/DEN fraction
* negative integer: specifies duration in number of coded
frames
start (number)
C target start time in source media, may not be supported depending on the source
lang (string)
S set imported media language code
delay (int)
S set imported media initial delay (>0) or initial skip (<0) in ms or as fractional seconds (N/D)
par (string)
S set visual pixel aspect ratio (see .I -par )
clap (string)
S set visual clean aperture (see .I -clap )
mx (string)
S set track matrix (see .I -mx )
name (string)
S set track handler name
ext (string)
override file extension when importing
hdlr (string)
S set track handler type to the given code point (4CC)
stype (string)
S force sample description type to given code point (4CC), may likely break the file
tkhd (int)
S set track header flags has hex integer or as comma-separated list of enable, movie, preview, size_ar keywords (use tkhd+=FLAGS to add and tkhd-=FLAGS to remove)
disable
S disable imported track(s), use disable=no to force enabling a disabled track
group (int)
S add the track as part of the G alternate group. If G is 0, the first available GroupID will be picked
fps (string)
same as .I fps
rap |
DS import only RAP samples |
|||
refs |
DS import only reference pictures |
trailing
keep trailing 0-bytes in AVC/HEVC samples
agg (int)
X same as .I agg
dref |
XC same as .I dref |
keep_refs
C keep track reference when importing a single track
nodrop |
same as .I nodrop |
|||
packed |
X same as .I packed |
|||
sbr |
same as .I sbr |
|||
sbrx |
same as .I sbrx |
|||
ovsbr |
same as .I ovsbr |
|||
ps |
same as .I ps |
|||
psx |
same as .I psx |
asemode (string)
XS set the mode to create the
AudioSampleEntry. Value can be:
* v0-bs: use MPEG AudioSampleEntry v0 and the channel count
from the bitstream (even if greater than 2) - default
* v0-2: use MPEG AudioSampleEntry v0 and the channel count
is forced to 2
* v1: use MPEG AudioSampleEntry v1 and the channel count
from the bitstream
* v1-qt: use QuickTime Sound Sample Description Version 1
and the channel count from the bitstream (even if greater
than 2). This will also trigger using alis data references
instead of url, even for non-audio tracks
audio_roll (int)
S add a roll sample group with roll_distance N for audio tracks
roll (int)
S add a roll sample group with roll_distance N
proll (int)
S add a preroll sample group with roll_distance N
mpeg4 |
X same as .I mpeg4 option | ||
nosei |
discard all SEI messages during import | ||
svc |
import SVC/LHVC with explicit signaling (no AVC base compatibility) | ||
nosvc |
discard SVC/LHVC data when importing |
svcmode (string)
DS set SVC/LHVC import mode.
Value can be:
* split: each layer is in its own track
* merge: all layers are merged in a single track
* splitbase: all layers are merged in a track, and the AVC
base in another
* splitnox: each layer is in its own track, and no
extractors are written
* splitnoxib: each layer is in its own track, no extractors
are written, using inband param set signaling
temporal (string)
DS set HEVC/LHVC temporal
sublayer import mode. Value can be:
* split: each sublayer is in its own track
* splitbase: all sublayers are merged in a track, and the
HEVC base in another
* splitnox: each layer is in its own track, and no
extractors are written
subsamples
add SubSample information for AVC+SVC
deps |
import sample dependency information for AVC and HEVC | ||
ccst |
S add default HEIF ccst box to visual sample entry |
forcesync
force non IDR samples with I
slices (OpenGOP or GDR) to be marked as sync points
Warning: RESULTING FILE IS NOT COMPLIANT WITH THE SPEC but
will fix seeking in most players
xps_inband
XC set xPS inband for AVC/H264 and HEVC (for reverse operation, re-import from raw media)
xps_inbandx
XC same as xps_inband and also keep first xPS in sample description
au_delim
keep AU delimiter NAL units in the imported file
max_lid (int)
set HEVC max layer ID to be imported to N (by default imports all layers)
max_tid (int)
set HEVC max temporal ID to be imported to N (by default imports all temporal sublayers)
tiles |
S add HEVC tiles signaling and NALU maps without splitting the tiles into different tile tracks |
split_tiles
DS split HEVC tiles into different tile tracks, one tile (or all tiles of one slice) per track
negctts
S use negative CTS-DTS offsets (ISO4 brand). Use negctts=no to force using positive offset on existing track
chap |
S specify the track is a chapter track |
chapter (string)
S add a single chapter (old nero format) with given name lasting the entire file
chapfile (string)
S add a chapter file (old nero format)
layout (string)
S specify the track layout as WxH[xXxY][xLAYER]. If W (resp H) is 0, the max width (resp height) of the tracks in the file are used
rescale (int)
S force media timescale to TS (int or fraction) and change the media duration
sampdur (int)
S force all samples duration (D) or sample durations and media timescale (D/TS), used to patch CFR files with broken timings
timescale (int)
S set imported media timescale to TS
moovts (int)
S set movie timescale to TS. A negative value picks the media timescale of the first track imported
noedit |
XS do not set edit list when importing B-frames video tracks |
rvc (string)
S set RVC configuration for the media
fmt (string)
override format detection with given format - disable data probing and force ext option on source
profile (int)
S override AVC profile. Integer value, or high444, high, extended, main, baseline
level (int)
S override AVC level, if value < 6, interpreted as decimal expression
compat (int)
S force the profile compatibility flags for the H.264 content
novpsext
remove VPS extensions from HEVC VPS
keepav1t
keep AV1 temporal delimiter OBU in samples, might help if source file had losses
font (string)
specify font name for text import (default Serif)
size (int)
specify font size for text import (default 18)
text_layout (string)
specify the track text layout
as WxHxXxY
* if W (resp H) = 0: the max width (resp height) of the
tracks in the file are used
* if Y=-1: the layout is moved to the bottom of the track
area
* X and Y can be omitted: :layout=WxH
swf-global
all SWF defines are placed in first scene replace rather than when needed
swf-no-ctrl
use a single stream for movie control and dictionary (this will disable ActionScript)
swf-no-text
remove all SWF text
swf-no-font
remove all embedded SWF Fonts (local playback host fonts used)
swf-no-line
remove all lines from SWF shapes
swf-no-grad
remove all gradients from SWF shapes
swf-quad
use quadratic bezier curves instead of cubic ones
swf-xlp
support for lines transparency and scalability
swf-ic2d
use indexed curve 2D hardcoded proto
swf-same-app
appearance nodes are reused
swf-flatten (number)
complementary angle below which 2 lines are merged, 0 means no flattening
kind (string)
S set kind for the track as schemeURI=value
txtflags (int)
set display flags (hexa number) of text track. Use txtflags+=FLAGS to add flags and txtflags-=FLAGS to remove flags
rate (int)
force average rate and max rate to VAL (in bps) in btrt box. If 0, removes btrt box
stz2 |
S use compact size table (for low-bitrates) |
bitdepth (int)
set bit depth to VAL for imported video content (default is 24)
colr (string)
S set color profile for
imported video content (see ISO/IEC 23001-8). Value is
formatted as:
* nclc,p,t,m: with p colour primary (int or string), t
transfer characteristics (int or string) and m matrix coef
(int or string)
* nclx,p,t,m,r: same as nclx with r full range flag (yes, on
or no, off)
* prof,path: with path indicating the file containing the
ICC color profile
* rICC,path: with path indicating the file containing the
restricted ICC color profile
* ’none’: removes color info
hdr (string)
S set HDR info on track (see .I -hdr ), ’none’ removes HDR info
dv-profile (string)
S set the Dolby Vision profile
on imported track
- Profile is an integer, or none to remove DV signaling
- Profile can be suffixed with compatibility ID, e.g.
5.hdr10
- Allowed compatibility ID are none, hdr10, bt709, hlg709,
hlg2100, bt2020, brd, or integer value as per DV spec
- Profile can be prefixed with ’f’ to force DV
codec type signaling, e.g. f8.2
fullrange (string)
S force the video fullrange type in VUI for the AVC|H264 content (value yes, on or no, off)
videofmt (string)
S force the video format in VUI for AVC|H264 and HEVC content, value can be component, pal, ntsc, secam, mac, undef
colorprim (string)
S force the colour primaries in VUI for AVC|H264 and HEVC (int or string, cf -h cicp)
colortfc (string)
S force transfer characteristics in VUI for AVC|H264 and HEVC (int or string, cf -h cicp)
colormx (string)
S force the matrix coefficients in VUI for the AVC|H264 and HEVC content (int or string, cf -h cicp)
tc (string)
S inject a single QT timecode.
Value is formatted as:
* [d]FPS[/FPS_den],h,m,s,f[,framespertick]: optional drop
flag, framerate (integer or fractional), hours, minutes,
seconds and frame number
* : d is an optional flag used to indicate that the counter
is in drop-frame format
* : the framespertick is optional and defaults to
round(framerate); it indicates the number of frames per
counter tick
edits (string)
S override edit list, same syntax as .I edits
lastsampdur (string)
S set duration of the last
sample. Value is formatted as:
* no value: use the previous sample duration
* integer: indicate the duration in milliseconds
* N/D: indicate the duration as fractional second
ID (int)
S set target ID
- a value of 0 (default) will try to keep source track ID
- a value of -1 will ignore source track ID
- other value will try to set track ID to this value if no
other track with same ID is present
stats,-fstat
C print filter session stats after import
graph,-fgraph
C print filter session graph after import
sopt:[OPTS]
set OPTS as additional arguments to source filter. OPTS can be any usual filter argument, see filter doc ’gpac -h doc’
dopt:[OPTS]
X set OPTS as additional arguments to destination filter. OPTS can be any usual filter argument, see filter doc ’gpac -h doc’
@f1[:args][@fN:args]
set a filter chain to insert before the multiplexer. Each filter in the chain is formatted as a regular filter, see filter doc ’gpac -h doc’. A @@ separator starts a new chain (see DASH help). The last filter in each chain shall not have any ID specified
Note: sopt, dopt and @f must be placed after all other options.
Global import options
-add (string)
add given file tracks to file. Multiple inputs can be specified using +, e.g. -add url1+url2
-cat (string)
concatenate given file samples
to file, creating tracks if needed. Multiple inputs can be
specified using +, e.g/ -cat url1+url2.
Note: This aligns initial timestamp of the file to be
concatenated
-catx (string)
same as .I cat but new tracks can be imported before concatenation by specifying +ADD_COMMAND where ADD_COMMAND is a regular .I add syntax
-catpl (string)
concatenate files listed in the
given playlist file (one file per line, lines starting with
# are comments).
Note: Each listed file is concatenated as if called with
-cat
-unalign-cat
do not attempt to align timestamps of samples in-between tracks
-force-cat
skip media configuration check
when concatenating file.
Warning: THIS MAY BREAK THE CONCATENATED TRACK(S)
-keep-sys
keep all MPEG-4 Systems info when using .I add and .I cat (only used when adding IsoMedia files)
-dref |
keep media data in original file using data referencing. The resulting file only contains the meta-data of the presentation (frame sizes, timing, etc...) and references media data in the original file. This is extremely useful when developing content, since importing and storage of the MP4 file is much faster and the resulting file much smaller. |
Note: Data referencing may fail on some files because it requires the framed data (e.g. an IsoMedia sample) to be continuous in the original file, which is not always the case depending on the original interleaving or bitstream format (AVC or HEVC cannot use this option)
-no-drop,-nodrop
force constant FPS when importing AVI video
-packed
force packed bitstream when importing raw MPEG-4 part 2 Advanced Simple Profile
-sbr |
backward compatible signaling of AAC-SBR | ||
-sbrx |
non-backward compatible signaling of AAC-SBR | ||
-ps |
backward compatible signaling of AAC-PS | ||
-psx |
non-backward compatible signaling of AAC-PS | ||
-ovsbr |
oversample SBR import (SBR AAC, PS AAC and oversampled SBR cannot be detected at import time) |
-fps (string)
force frame rate for video and
SUB subtitles import to the given value, expressed as a
number, as TS-inc or TS/inc.
Note: For raw H263 import, default FPS is 15, otherwise 25.
This is ignored for ISOBMFF import, use :rescale option for
that
-mpeg4 |
force MPEG-4 sample descriptions when possible. For AAC, forces MPEG-4 AAC signaling even if MPEG-2 |
-agg (int)
aggregate N audio frames in 1 sample (3GP media only, maximum value is 15)
Hinting Options
IsoMedia
hinting consists in creating special tracks in the file that
contain transport protocol specific information and
optionally multiplexing information. These tracks are then
used by the server to create the actual packets being sent
over the network, in other words they provide the server
with hints on how to build packets, hence their names hint
tracks.
MP4Box supports creation of hint tracks for RTSP servers
supporting these such as QuickTime Streaming Server,
DarwinStreaming Server or 3GPP-compliant RTSP servers.
Note: GPAC streaming tools rtp output and rtsp server do not
use hint tracks, they use on-the-fly packetization from any
media sources, not just MP4
Options:
-hint |
hint the file for RTP/RTSP |
-mtu (int, default: 1450)
specify RTP MTU (max size) in bytes (this includes 12 bytes RTP header)
-copy |
copy media data to hint track rather than reference (speeds up server but takes much more space) |
-multi [maxptime]
enable frame concatenation in RTP packets if possible (with max duration 100 ms or maxptime ms if given)
-rate (int, default: 90000)
specify rtp rate in Hz when no default for payload
-mpeg4 |
force MPEG-4 generic payload whenever possible |
|||
-latm |
force MPG4-LATM transport for AAC streams |
-static
enable static RTP payload IDs whenever possible (by default, dynamic payloads are always used)
-add-sdp (string)
add given SDP string to movie (string) or track (tkID:string), tkID being the track ID or the hint track ID
-no-offset
signal no random offset for sequence number and timestamp (support will depend on server)
-unhint
remove all hinting information from file
-group-single
put all tracks in a single hint group
-ocr |
force all MPEG-4 streams to be synchronized (MPEG-4 Systems only) | ||
-rap |
signal random access points in RTP packets (MPEG-4 Systems) | ||
-ts |
signal AU Time Stamps in RTP packets (MPEG-4 Systems) | ||
-size |
signal AU size in RTP packets (MPEG-4 Systems) | ||
-idx |
signal AU sequence numbers in RTP packets (MPEG-4 Systems) | ||
-iod |
prevent systems tracks embedding in IOD (MPEG-4 Systems), not compatible with .I isma |
MPEG-4 Scene Encoding Options
General
considerations
MP4Box supports encoding and decoding of of BT, XMT, VRML
and (partially) X3D formats int MPEG-4 BIFS, and encoding
and decoding of XSR and SVG into MPEG-4 LASeR
Any media track specified through a MuxInfo element will be
imported in the resulting MP4 file.
See https://wiki.gpac.io/MPEG-4-BIFS-Textual-Format and
related pages.
Scene Random
Access
MP4Box can encode BIFS or LASeR streams and insert random
access points at a given frequency. This is useful when
packaging content for broadcast, where users will not turn
in the scene at the same time. In MPEG-4 terminology, this
is called the scene carousel.## BIFS Chunk Processing
The BIFS chunk encoding mode allows encoding single BIFS
access units from an initial context and a set of commands.
The generated AUs are raw BIFS (not SL-packetized), in files
called FILE-ESID-AUIDX.bifs, with FILE the basename of the
input file.
Commands with a timing of 0 in the input will modify the
carousel version only (i.e. output context).
Commands with a timing different from 0 in the input will
generate new AUs.
Options:
-mp4 |
specify input file is for BIFS/LASeR encoding |
|||
-def |
encode DEF names in BIFS |
-sync (int)
force BIFS sync sample generation every given time in ms (cannot be used with .I shadow or .I carousel )
-shadow (int)
force BIFS sync shadow sample generation every given time in ms (cannot be used with .I sync or .I carousel )
-carousel (int)
use BIFS carousel (cannot be used with .I sync or .I shadow )
-sclog |
generate scene codec log file if available |
-ms (string)
import tracks from the given file
-ctx-in (string)
specify initial context (MP4/BT/XMT) file for chunk processing. Input file must be a commands-only file
-ctx-out (string)
specify storage of updated context (MP4/BT/XMT) file for chunk processing, optional
-resolution (int)
resolution factor (-8 to 7, default 0) for LASeR encoding, and all coordinates are multiplied by 2^res before truncation (LASeR encoding)
-coord-bits (int)
number of bits used for encoding truncated coordinates (0 to 31, default 12) (LASeR encoding)
-scale-bits (int)
extra bits used for encoding truncated scales (0 to 4, default 0) (LASeR encoding)
-auto-quant (int)
resolution is given as if using .I resolution but coord-bits and scale-bits are inferred (LASeR encoding)
-global-quant (int)
resolution is given as if using .I resolution but the res is inferred (BIFS encoding)
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
https://wiki.gpac.io/Common-Encryption
Image files (HEIF) can also be crypted / decrypted, using
CENC only.
Options:
-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
Meta and HEIF Options
IsoMedia files can be used as generic meta-data containers, for examples storing XML information and sample images for a movie. The resulting file may not always contain a movie as is the case with some HEIF files or MPEG-21 files.
These
information can be stored at the file root level, as is the
case for HEIF/IFF and MPEG-21 file formats, or at the movie
or track level for a regular movie.
-set-meta ABCD[:tk=tkID]
set meta box type, with ABCD
the four char meta type (NULL or 0 to remove meta)
* tk not set: use root (file) meta
* tkID == 0: use moov meta
* tkID != 0: use meta of given track
-add-item (string)
add resource to meta, with
parameter syntax file_path[:opt1:optN]
* file_path ’this’ or ’self’: item
is the file itself
* tk=tkID: meta location (file, moov, track)
* name=str: item name, none if not set
* type=itype: item 4cc type (not needed if mime is provided)
* mime=mtype: item mime type, none if not set
* encoding=enctype: item content-encoding type, none if not
set
* id=ID: item ID
* ref=4cc,id: reference of type 4cc to an other item (can be
set multiple times)
* group=id,type: indicate the id and type of an alternate
group for this item
* replace: replace existing item by new item
-add-image (string)
add the given file as HEIF
image item, with parameter syntax file_path[:opt1:optN]. If
filepath is omitted, source is the input MP4 file
* name, id, ref: see .I add-item
* primary: indicate that this item should be the primary
item
* time=t[-e][/i]: use the next sync sample after time t
(float, in sec, default 0). A negative time imports ALL
intra frames as items
- If e is set (float, in sec), import all sync samples
between t and e
- If i is set (float, in sec), sets time increment between
samples to import
* split_tiles: for an HEVC tiled image, each tile is stored
as a separate item
* image-size=wxh: force setting the image size and ignoring
the bitstream info, used for grid, overlay and identity
derived images also
* rotation=a: set the rotation angle for this image to 90*a
degrees anti-clockwise
* mirror-axis=axis: set the mirror axis: vertical,
horizontal
* clap=Wn,Wd,Hn,Hd,HOn,HOd,VOn,VOd: see track clap
* image-pasp=axb: force the aspect ratio of the image
* image-pixi=(a|a,b,c): force the bit depth (1 or 3
channels)
* hidden: indicate that this image item should be hidden
* icc_path: path to icc data to add as color info
* alpha: indicate that the image is an alpha image (should
use ref=auxl also)
* depth: indicate that the image is a depth image (should
use ref=auxl also)
* it=ID: indicate the item ID of the source item to import
* itp=ID: same as it= but copy over all properties of the
source item
* tk=tkID: indicate the track ID of the source sample. If 0,
uses the first video track in the file
* samp=N: indicate the sample number of the source sample
* ref: do not copy the data but refer to the final
sample/item location, ignored if filepath is set
* agrid[=AR]: creates an automatic grid from the image items
present in the file, in their declaration order. The grid
will try to have AR aspect ratio if specified (float), or
the aspect ratio of the source otherwise. The grid will be
the primary item and all other images will be hidden
* av1_op_index: select the AV1 operating point to use via
a1op box
* replace: replace existing image by new image, keeping
props listed in keep_props
* keep_props=4CCs: coma-separated list of properties types
to keep when replacing the image, e.g. keep_props=auxC
* auxt=URN: mark image as auxiliary using given URN
* auxd=FILE: use data from FILE as auxiliary extensions (cf
auxC box)
- any other options will be passed as options to the media
importer, see .I add
-add-derived-image (string)
create an image grid, overlay
or identity item, with parameter syntax
:type=(grid|iovl|iden)[:opt1:optN]
* image-grid-size=rxc: set the number of rows and columns of
the grid
* image-overlay-offsets=h,v[,h,v]*: set the horizontal and
vertical offsets of the images in the overlay
* image-overlay-color=r,g,b,a: set the canvas color of the
overlay [0-65535]
- any other options from .I add-image can be used
-rem-item,-rem-image item_ID[:tk=tkID]
remove resource from meta
-set-primary item_ID[:tk=tkID]
set item as primary for meta
-set-xml xml_file_path[:tk=tkID][:binary]
set meta XML data
-rem-xml [tk=tkID]
remove meta XML data
-dump-xml file_path[:tk=tkID]
dump meta XML to file
-dump-item item_ID[:tk=tkID][:path=fileName]
dump item to file
-package (string)
package input XML file into an ISO container, all media referenced except hyperlinks are added to file
-mgt (string)
package input XML file into an MPEG-U widget with ISO container, all files contained in the current folder are added to the widget package
SWF Importer Options
MP4Box can
import simple Macromedia Flash files (".SWF")
You can specify a SWF input file with ’-bt’,
’-xmt’ and ’-mp4’ options
Options:
-global
all SWF defines are placed in first scene replace rather than when needed
-no-ctrl
use a single stream for movie control and dictionary (this will disable ActionScript)
-no-text
remove all SWF text
-no-font
remove all embedded SWF Fonts (local playback host fonts used)
-no-line
remove all lines from SWF shapes
-no-grad
remove all gradients from swf shapes
-quad |
use quadratic bezier curves instead of cubic ones |
|||
-xlp |
support for lines transparency and scalability |
|||
-ic2d |
use indexed curve 2D hardcoded proto |
-same-app
appearance nodes are reused
-flatten (number)
complementary angle below which 2 lines are merged, value 0 means no flattening
Tagging support
Tags are
specified as a colon-separated list
tag_name=tag_value[:tag2=val2]
Setting a tag with no value or value NULL removes the tag.
Special tag value clear (or reset) removes all tags.
Unsupported tags can be added using their four character
code as a tag name, and string value will be assumed.
If the tag name length is 3, the prefix 0xA9 is used to
create the four character code.
Tags can also
be loaded from a text file using -itags filename. The file
must be in UTF8 with:
- lines starting with tag_name=value specify the start of a
tag
- other lines specify the remainder of the last declared
tag
If tag name starts with WM/, the tag is added to Xtra box (WMA tag, string only).
Supported tag
names, values, types, aliases:
title (A9nam) string (alias name)
artist (A9ART) string
album_artist (aART) string (alias albumArtist)
album (A9alb) string
group (A9grp) string (alias grouping)
composer (A9com) string
writer (A9wrt) string
conductor (A9con) string
comment (A9cmt) string (alias comments)
genre (gnre) string (ID3 genre tag)
created (A9day) string (alias releaseDate)
track (A9trk) string
tracknum (trkn) fraction (syntax: A/B or A, B will be 0)
disk (disk) fraction (syntax: A/B or A, B will be 0)
tempo (tmpo) integer
compilation (cpil) bool (yes or no)
show (tvsh) string (alias tvShow)
episode_id (tven) string (alias tvEpisodeID)
season (tvsn) integer (alias tvSeason)
episode (tves) integer (alias tvEPisode)
network (tvnn) string (alias tvNetwork)
sdesc (desc) string (alias description)
ldesc (ldes) string (alias longDescription)
lyrics (A9lyr) string
sort_name (sonm) string (alias sortName)
sort_artist (soar) string (alias sortArtist)
sort_album_artist (soaa) string (alias sortAlbumArtist)
sort_album (soal) string (alias sortAlbum)
sort_composer (soco) string (alias sortComposer)
sort_show (sosn) string (alias sortShow)
cover (covr) file path (alias artwork)
copyright (cprt) string
tool (A9too) string (alias encodingTool)
encoder (A9enc) string (alias encodedBy)
pdate (purd) string (alias purchaseDate)
podcast (pcst) bool (yes or no)
url (purl) string (alias podcastURL)
keywords (kyyw) string
category (catg) string
hdvideo (hdvd) integer
media (stik) integer (alias mediaType)
rating (rtng) integer (alias contentRating)
gapless (pgap) bool (yes or no)
art_director (A9ard) string
arranger (A9arg) string
lyricist (A9aut) string
acknowledgement (A9cak) string
song_description (A9des) string
director (A9dir) string
equalizer (A9equ) string
liner (A9lnt) string
record_company (A9mak) string
original_artist (A9ope) string
phono_rights (A9phg) string
producer (A9prd) string
performer (A9prf) string
publisher (A9pub) string
sound_engineer (A9sne) string
soloist (A9sol) string
credits (A9src) string
thanks (A9thx) string
online_info (A9url) string
exec_producer (A9xpd) string
Live Scene Encoder Options
The options
shall be specified as opt_name=opt_val.
Options:
-live |
enable live BIFS/LASeR encoder |
-dst (string)
destination IP
-port (int, default: 7000)
destination port
-mtu (int, default: 1450)
path MTU for RTP packets
-ifce (string)
IP address of the physical interface to use
-ttl (int, default: 1)
time to live for multicast packets
-sdp (string, default: session.sdp)
output SDP file
-dims |
turn on DIMS mode for SVG input |
-no-rap
disable RAP sending and carousel generation
-src (string)
source of scene updates
-rap (int)
duration in ms of base carousel; you can specify the RAP period of a single ESID (not in DIMS) using ESID=X:time
Runtime
options:
* q: quits
* u: inputs some commands to be sent
* U: same as u but signals the updates as critical
* e: inputs some commands to be sent without being
aggregated
* E: same as e but signals the updates as critical
* f: forces RAP sending
* F: forces RAP regeneration and sending
* p: dumps current scene
EXAMPLES
Basic and
advanced examples are available at
https://wiki.gpac.io/MP4Box
MORE
Authors: GPAC
developers, see git repo history (-log)
For bug reports, feature requests, more information and
source code, visit https://github.com/gpac/gpac
build: 1.1.0-DEV-rev1777-gb91a8dad3-master
Copyright: (c) 2000-2022 Telecom Paris distributed under
LGPL v2.1+ - http://gpac.io