mp4encrypt

mp4encrypt is a tool that encrypts an MP4 file (multiple encryption schemes are supported)
Running the tool without any argument will print out a summary of the tool’s command line options and parameters.

Running the tool without any argument will print out a summary of the tool’s command line options and parameters.

Usage

MP4 Encrypter - Version 1.6
(Bento4 Version 1.4.3.0)
(c) 2002-2015 Axiomatic Systems, LLC

usage: mp4encrypt --method <method> [options] <input> <output>
     <method> is OMA-PDCF-CBC, OMA-PDCF-CTR, MARLIN-IPMP-ACBC,
     MARLIN-IPMP-ACGK, ISMA-IAEC, PIFF-CBC, PIFF-CTR, or MPEG-CENC
  Options:
  --show-progress
      Show progress details
  --fragments-info <filename>
      Encrypt the fragments read from <input>, with track info read
      from <filename>
  --key <n>:<k>:<iv>
      Specifies the key to use for a track (or group key).
      <n> is a track ID, <k> a 128-bit key in hex (32 characters)
      and <iv> a 64-bit or 128-bit IV or salting key in hex
      (16 or 32 characters) depending on the cipher mode
      The key and IV values can also be specified with the keyword 'random'
      instead of a hex-encoded value, in which case a randomly generated value
      will be used.
      (several --key options can be used, one for each track)
  --strict
      Fail if there is a warning (ex: one or more tracks would be left unencrypted)
  --property <n>:<name>:<value>
      Specifies a named string property for a track
      <n> is a track ID, <name> a property name, and <value> is the
      property value
      (several --property options can be used, one or more for each track)
  --global-option <name>:<value>
      Sets the global option <name> to be equal to <value>
  --pssh <system-id>:<filename>
      Add a 'pssh' atom for this system ID, with the payload
      loaded from <filename>.
      (several --pssh options can be used, with a different system ID for each)
      (the filename can be left empty after the ':' if no payload is needed)
  --pssh-v1 <system-id>:<filename>
      Same as --pssh but generates a version=1 'pssh' atom
      (this option must appear *after* the --property options on the command line)
  --kms-uri <uri>
      Specifies the KMS URI for the ISMA-IAEC method

  Method Specifics:
    OMA-PDCF-CBC, MARLIN-IPMP-ACBC, MARLIN-IPMP-ACGK, PIFF-CBC: 
    the <iv> can be 64-bit or 128-bit
    If the IV is specified as a 64-bit value, it will be padded with zeros.

    OMA-PDCF-CTR, ISMA-IAEC, PIFF-CTR, MPEG-CENC: the <iv> should be a 64-bit
    hex string. If a 128-bit value is supplied, it will be truncated
    to 64-bit.

    OMA-PDCF-CBC, OMA-PDCF-CTR: The following properties are defined,
    and all other properties are stored in the textual headers:
      ContentId       -> the content ID for the track
      RightsIssuerUrl -> the Rights Issuer URL

    MARLIN-IPMP-ACBC, MARLIN-IPMP-ACGK: The following properties are defined:
      ContentId -> the content ID for the track

    MARLIN-IPMP-ACGK: The group key is specified with --key where <n>
    is 0. The <iv> part of the key must be present, but will be ignored;
    It should therefore be set to 0000000000000000

    MPEG-CENC, PIFF-CTR, PIFF-CBC: The following properties are defined:
      KID -> the value of KID, 16 bytes, in hexadecimal (32 characters)
      ContentId -> Content ID mapping for KID (Marlin option)
      PsshPadding -> pad the 'pssh' container to this size
                    (only when using ContentId).
                    This property should be set for track ID 0 only