Skip to content

mp4dash

Usage: mp4-dash.py [options] <media-file> [<media-file> ...]

Each <media-file> is the path to a fragmented MP4 file, optionally prefixed
with a stream selector delimited by [ and ]. The same input MP4 file may be
repeated, provided that the stream selector prefixes select different streams.
Version 2.0.0 r637

Options:
  -h, --help            show this help message and exit
  -v, --verbose         Be verbose
  -d, --debug           Print out debugging information
  -o <output-dir>, --output-dir=<output-dir>
                        Output directory
  -f, --force           Allow output to an existing directory
  --mpd-name=<filename>
                        MPD file name
  --profiles=<profiles>
                        Comma-separated list of one or more profile(s).
                        Complete profile names can be used, or profile aliases
                        ('live'='urn:mpeg:dash:profile:isoff-live:2011', 'on-
                        demand'='urn:mpeg:dash:profile:isoff-on-demand:2011',
                        'hbbtv-1.5='urn:hbbtv:dash:profile:isoff-live:2012')
  --no-media            Do not output media files (MPD/Manifests only)
  --rename-media        Use a file name pattern instead of the base name of
                        input files for output media files.
  --media-prefix=<prefix>
                        Use this prefix for prefixed media file names (instead
                        of the default prefix "media")
  --init-segment=<filename>
                        Initialization segment name
  --no-split            Do not split the file into individual segment files
  --use-segment-list    Use segment lists instead of segment templates
  --use-segment-template-number-padding
                        Use padded numbers in segment URL/filename templates
  --use-segment-timeline
                        Use segment timelines (necessary if segment durations
                        vary)
  --min-buffer-time=<duration>
                        Minimum buffer time (in seconds)
  --max-playout-rate=<strategy>
                        Max Playout Rate setting strategy for trick-play
                        support. Supported strategies: lowest:X
  --language-map=<lang_from>:<lang_to>[,...]
                        Remap language code <lang_from> to <lang_to>. Multiple
                        mappings can be specified, separated by ','
  --always-output-lang  Always output an @lang attribute for audio tracks even
                        when the language is undefined
  --subtitles           Enable Subtitles
  --attributes=<attributes-definition>
                        Specify the attributes of a set of tracks. This option
                        may be used multiple times, once per attribute set.
  --smooth              Produce an output compatible with Smooth Streaming
  --smooth-client-manifest-name=<filename>
                        Smooth Streaming Client Manifest file name
  --smooth-server-manifest-name=<filename>
                        Smooth Streaming Server Manifest file name
  --smooth-h264-fourcc=<fourcc>
                        Smooth Streaming FourCC value for H.264 video
                        (default=H264) [some older players use AVC1]
  --hls                 Output HLS playlists in addition to MPEG DASH
  --hls-key-url=<url>   HLS key URL (default: key.bin)
  --hls-master-playlist-name=<filename>
                        HLS master playlist name (default: master.m3u8)
  --hls-media-playlist-name=<filename>
                        HLS media playlist name (default: media.m3u8)
  --hls-iframes-playlist-name=<filename>
                        HLS I-Frames playlist name (default: iframes.m3u8)
  --hippo               Produce an output compatible with the Hippo Media
                        Server
  --hippo-server-manifest-name=<filename>
                        Hippo Media Server Manifest file name
  --use-compat-namespace
                        Use the original DASH MPD namespace as it was
                        specified in the first published specification
  --use-legacy-audio-channel-config-uri
                        Use the legacy DASH namespace URI for the
                        AudioChannelConfiguration descriptor
  --encryption-key=<key-spec>
                        Encrypt some or all tracks with MPEG CENC (AES-128),
                        where <key-spec> specifies the KID(s) and Key(s) to
                        use, using one of the following forms: (1) <KID>:<key>
                        or <KID>:<key>:<IV> with <KID> (and <IV> if
                        specififed) as a 32-character hex string and <key>
                        either a 32-character hex string or the character '#'
                        followed by a base64-encoded key seed; or (2) @<key-
                        locator> where <key-locator> is an expression of one
                        of the supported key locator schemes. Each entry may
                        be prefixed with an optional track filter, and
                        multiple <key-spec> entries can be used, separated by
                        ','. (see online docs for details)
  --encryption-cenc-scheme=<cenc-scheme>
                        MPEG Common Encryption scheme (cenc, cbc1, cens or
                        cbcs). (default: cenc)
  --encryption-args=<cmdline-arguments>
                        Pass additional command line arguments to mp4encrypt
                        (separated by spaces)
  --eme-signaling=<eme-signaling-type>
                        Add EME-compliant signaling in the MPD and PSSH boxes
                        (valid options are 'pssh-v0' and 'pssh-v1')
  --merge-keys          Merge all keys in a single set used for all
                        <ContentProtection> elements
  --marlin              Add Marlin signaling to the MPD (requires an encrypted
                        input, or the --encryption-key option)
  --marlin-add-pssh     Add an (optional) Marlin 'pssh' box in the init
                        segment(s)
  --playready           Add PlayReady signaling to the MPD (requires an
                        encrypted input, or the --encryption-key option)
  --playready-version=PLAYREADY_VERSION
                        PlayReady version to use (4.0, 4.1, 4.2, 4.3),
                        defaults to 4.0
  --playready-header=<playready-header>
                        Add a PlayReady PRO element in the MPD and a PlayReady
                        PSSH box in the init segments. The use of this option
                        implies the --playready option. The <playready-header>
                        argument can be either: (1) the character '@' followed
                        by the name of a file containing a PlayReady XML
                        Rights Management Header (<WRMHEADER>) or a PlayReady
                        Header Object (PRO) in binary form,  or (2) the
                        character '#' followed by a PlayReady Header Object
                        encoded in Base64, or (3) one or more <name>:<value>
                        pair(s) (separated by '#' if more than one) specifying
                        fields of a PlayReady Header Object (field names
                        include LA_URL, LUI_URL and DS_ID)
  --playready-add-pssh  Store the PlayReady header in a 'pssh' box in the init
                        segment(s) [deprecated: this is now implicitly on by
                        default when the --playready or --playready-header
                        option is used]
  --playready-no-pssh   Do not store the PlayReady header in a 'pssh' box in
                        the init segment(s)
  --widevine            Add Widevine signaling to the MPD (requires an
                        encrypted input, or the --encryption-key option)
  --widevine-header=<widevine-header>
                        Add a Widevine entry in the MPD, and a Widevine PSSH
                        box in the init segments. The use of this option
                        implies the --widevine option. The <widevine-header>
                        argument can be either: (1) the character '#' followed
                        by a Widevine header encoded in Base64 (either a
                        complete PSSH box or just the PSSH box payload), or
                        (2) one or more <name>:<value> pair(s) (separated by
                        '#' if more than one) specifying fields of a Widevine
                        header (field names include 'provider' [string],
                        'content_id' [byte array in hex], 'policy' [string])
  --primetime           Add Primetime signaling to the MPD (requires an
                        encrypted input, or the --encryption-key option)
  --primetime-metadata=<primetime-metadata>
                        Add Primetime metadata in a PSSH box in the init
                        segments. The use of this option implies the
                        --primetime option. The <primetime-data> argument can
                        be either: (1) the character '@' followed by the name
                        of a file containing the Primetime Metadata to use, or
                        (2) the character '#' followed by the Primetime
                        Metadata encoded in Base64
  --fairplay-key-uri=FAIRPLAY_KEY_URI
                        Specify the key URI to use for FairPlay Streaming key
                        delivery (only valid with --hls option)
  --clearkey            Add Clear Key signaling to the MPD (requires an
                        encrypted input, or the --encryption-key option))
  --clearkey-license-uri=CLEARKEY_LICENSE_URI
                        Specify the license/key URI to use for Clear Key (only
                        valid with --clearkey option)
  --exec-dir=<exec_dir>
                        Directory where the Bento4 executables are located
                        (use '-' to look for executable in the current PATH)