Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MP4Box(1)			     GPAC			     MP4Box(1)

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	behav-
       ior 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.

       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
       * n`INT`: 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 di-
	      rectory of the specified name and	store new  config  there.  Re-
	      served name 0 means a new	profile, not stored to disk. Works us-
	      ing -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 over-
	      written

       -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  (ig-
	      nored 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), AddChapter-
	      BySeconds(nb_sec,chapter name) and  AddChapterByTime(h,m,s,chap-
	      ter 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 framer-
	      ate 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  bit-
	      stream
		*  none:  remove  PAR  info from track,	do not modify the bit-
	      stream
		* 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:cri-
	      teria=lang:trackID=2     is      different      from	crite-
	      ria=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 (re-
	      move 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	 seri-
	      alized boxes
	      *	 src=FILE: location of the udta	data (will be stored in	a sin-
	      gle 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 encryp-
	      tion

       -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  be-
	      tween 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, me-
	      dia  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  in-
	      place 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:out-
	      put=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  - options -url-template and -segment-timelinecan be used in
	      this mode.
	      Note: This only provides basic  conversion,  for	more  advanced
	      conversions, see gpac -h dasher

	      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 dis-
       ables  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 peri-
       ods  may	be used. Periods appear	in the MPD in the same order as	speci-
       fied 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 sec-
       onds (fraction) (alias for period_duration:VALUE). This	is  only  used
       when  no	 input media is	specified (remote period insertion), e.g. :pe-
       riod=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 ele-
       ment. Only the xlink declared on	the first rep of a period will be used
       * :asID=VALUE: set the AdaptationSet ID to VALUE	(unsigned int)
       *  :role=VALUE: set the role of this representation (cf DASH spec). Me-
       dia with	different roles	belong to different adaptation sets.
       * :desc_p=VALUE:	add a descriptor at the	Period level.
       * :desc_as=VALUE: add a descriptor at the AdaptationSet level. Two  in-
       put files with different	values will be in different AdaptationSet ele-
       ments.
       *  :desc_as_c=VALUE: add	a descriptor at	the AdaptationSet level. Value
       is ignored while	creating AdaptationSet elements.
       * :desc_rep=VALUE: add a	descriptor at the Representation level.	 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.

       Note: Descriptors value must be a properly  formatted  XML  element(s),
       value is	not checked. Syntax can	use file@FILENAME to load content from
       file.

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 en-
	      sure conformance to the desired profile. Default profile is full
	      in static	mode, live in dynamic mode (old	syntax using :live in-
	      stead 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	(dura-
	      tion might vary depending	on the source encoding)

       -segment-name (string)
	      set the segment name for generated segments.  If	not  set  (de-
	      fault),  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 oth-
	      erwise
	      -	 $Index=NAME$  is replaced by NAME for index segments, ignored
	      otherwise
	      -	$Path=PATH$ is replaced	by PATH	when  creating	segments,  ig-
	      nored 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 switch-
	      ing 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
	      *	n: remove PSSH from MPD, initial movie and movie fragments

       -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 in-
	      stead

       -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. Ig-
	      nored 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: in-
       band|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 de-
	      rived 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	 dura-
	      tion 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, frac-
       tion). If E is prefixed with D, this sets E = S + time
       * `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, ...).
       Multiple	 time  ranges  can  be specified as a comma-separated list for
       -splitx,	-splitz	and -splitg.

       -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 spec-
	      ified 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. Oth-
	      erwise, 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

       -fuzz-chk
	      open file	without	probing	and exit (for fuzz tests)

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 fil-
       ters 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 interleav-
       ing  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	 stor-
       age, use	the .I -newfs option. The interleaving might not be as precise
       as  when	using .I new since it is dependent on multiplexer input	sched-
       uling (each execution might lead	to a slightly different	result). Addi-
       tionally	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 lay-
       out 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 (de-
       fault SRT/SUB importing uses default serif font,	fontSize 18  and  dis-
       play 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  im-
       ported  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 de-
	      pending 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)
	      S	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 compatibil-
	      ity)

       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 descrip-
	      tion

       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 prob-
	      ing and force ext	option on source

       profile (int)
	      S	override AVC profile. Integer value,  or  high444,  high,  ex-
	      tended, main, baseline

       level (int)
	      S	 override  AVC level, if value < 6, interpreted	as decimal ex-
	      pression

       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

       dlba (string)
	      S	force DolbyAtmos mode for EAC3.	Value can be
	      *	no: disable Atmos signaling
	      *	auto: use Atmos	signaling from first sample
	      *	N: force Atmos signaling using compatibility type index	N

       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. Value is format-
	      ted as:
		*  nclc,p,t,m: with p colour primary (int or string), t	trans-
	      fer characteristics (int or string) and m	matrix	coef  (int  or
	      string), cf -h cicp
		*  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 re-
	      stricted ICC color profile
		* 'none': removes color	info

       hdr (string)
	      S	set HDR	info on	track (see .I -hdr ), 'none' removes HDR info

       dvp,-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 sig-
	      naling, 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(fram-
	      erate); 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

       tkgp (string)
	      S	assign track group to track. Value is formatted	as TYPE,N with
	      TYPE the track group type	(4CC) and N the	track group ID.	A neg-
	      ative ID removes from track group	ID -N

       tkidx (string)
	      S	set track position in track list, 1 being first	track in file

       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 spec-
	      ified

	      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 concate-
	      nated

       -catx (string)
	      same as .I cat but new tracks can	be imported before  concatena-
	      tion  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 re-
	      sulting 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 re-
	      quires the framed	data (e.g. an IsoMedia sample) to be  continu-
	      ous 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  can-
	      not 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  accepted  for	 ISOBMFF  import but :rescale option should be
	      preferred

       -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	multi-
       plexing 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, dy-
	      namic 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	 (sup-
	      port 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 (par-
       tially) 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	broad-
       cast, 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  ver-
       sion 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 in-
	      ferred (BIFS encoding)

Encryption/Decryption Options
       MP4Box  supports	 encryption  and decryption of ISMA, OMA and CENC con-
       tent, 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  sys-
	      tem 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 exam-
       ples storing XML	information and	sample images for a movie. The result-
       ing 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 in-
	      put 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 sam-
	      ples 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 im-
	      ages also
	      *	rotation=a: set	the rotation angle for this image to 90*a  de-
	      grees 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 im-
	      porter, 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 ver-
	      tical offsets of the images in the overlay
	      *	image-overlay-color=r,g,b,a: set the canvas color of the over-
	      lay [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	refer-
	      enced 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 wid-
	      get 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).

   QT metadata key
       The tag is added	as a QT	metadata key if:
       - tag_name starts with QT/
       - or tag_name is	not recognized and longer than 4 characters

       The  tag_name can optionally be prefixed	with HDLR@, indicating the tag
       namespace 4CC, the default namespace being mdta.
       The tag_value can be prefixed with:
       * S: force string encoding (must	be placed first)  instead  of  parsing
       the tag value
       * b: use	8-bit encoding for signed or unsigned int
       * s: use	16-bit encoding	for signed or unsigned int
       * l: use	32-bit encoding	for signed or unsigned int
       * L: use	64-bit encoding	for signed or unsigned int
       * f: force float	encoding for numbers
       Numbers are converted by	default	and stored in variable-size mode.
       To  force  a  positive integer to use signed storage, add + in front of
       the number.
       Example
       -tags io.gpac.some_tag=s+32

       This will force storing value 32	in signed 16 bit format.
       The tag_value can also be formatted as:
       * XxY@WxH: a rectangle type
       * XxY: a	point type
       * W@H: a	size type
       * A,B,C,D,E,F,G,H,I: a 3x3 matrix
       * FNAME:	data is	loaded from FNAME, type	set to jpeg or png if needed

   Supported tag names (name, value, type, 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
       genre (A9gen) string (ID3 genre tag)
       location	(A9xyz)	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: 2.4
       Copyright: (c) 2000-2023	Telecom	Paris distributed under	LGPL  v2.1+  -
       https://gpac.io

SEE ALSO
       gpac(1)

MP4Box				     2019			     MP4Box(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=mp4box&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help