Media Containers

container

Represents a specific type of file containing video, audio and subtitle media streams.

PropertyTypeDescription
namestringUniquely identifies the container.
typestringFour character code that identifies the container implementation.
sizeintegerSize of the container file (or files) in bytes.
pathstringFile system path to the primary container file.
startstringStart time or timecode in HH:MM:SS.SSS or HH:MM:SS:FF.
endstringEnd time or timecode in HH:MM:SS.SSS or HH:MM:SS:FF.
durationstringDuration of the container in HH:MM:SS.SSS.
optionalbooleanIndicates whether a composition input container is optional.

If the input container is not supplied all output stream references are removed from the composition.
manifestarrayLists the relative or absolute path of each file referenced by the container.
templatearrayProvides the path template for each file produced by the container.
propertiesobjectContainer specific properties.
extensionarrayLists the container property extensions.
encryptionobjectDescribes the encryption and protection systems applied to the container.
trackarrayLists each video, audio or subtitle track in the container
videoarrayLists each video stream in the container.
audioarrayLists each audio stream in the container.
subtitlearrayLists each subtitle stream in the container.

package

Represents a a specific type of adaptive bit rate (ABR) package.

PropertyTypeDescription
namestringUniquely identifies the package.
typestringFour character code that identifies the package implementation.
pathstringFile system path to the package folder.
manifestarrayLists the relative or absolute path of each file referenced by the package.
templatearrayProvides the path template for each file produced by the package.
propertiesobjectPackage specific properties.
encryptionobjectDescribes the encryption and protection systems applied to the package.
videoarrayLists each video stream in the package.
audioarrayLists each audio stream in the package.
subtitlearrayLists each subtitle stream in the package.
containerarrayLists each variant container in the package.

manifest

A manifest contains a list of the absolute or relative file paths referenced (or produced) by a media container or package. For example the following illustrates the manifest for a typical Interoperable Master Format (IMF) container:

---
type: 'imf '
name: output1
manifest:
- CPL_dcd70179-817c-47e1-9654-03070ae5a855.xml
- VOLINDEX.xml
- ASSETMAP.xml
- PKL_a0be0813-fa4f-49f1-b2b9-3509e6fbeee8.xml
- OPL_f191e003-e035-4ea3-964d-410883a73359.xml
- 71e42f65-b344-403c-b2a9-bcab6d271059.mxf
- dc377ae4-dda5-4783-b0f0-288d36464e2d_en_51.mxf
- 7040fd1e-f419-432c-8b3e-098ce44cbc84_en_20.mxf
- fda0098f-b6ef-4fdb-b7a7-626d80db7e1e_en_tt.mxf
{
  "type": "imf ",
  "name": "output1",
  "manifest": [
    "CPL_dcd70179-817c-47e1-9654-03070ae5a855.xml",
    "VOLINDEX.xml",
    "ASSETMAP.xml",
    "PKL_a0be0813-fa4f-49f1-b2b9-3509e6fbeee8.xml",
    "OPL_f191e003-e035-4ea3-964d-410883a73359.xml",
    "71e42f65-b344-403c-b2a9-bcab6d271059.mxf",
    "dc377ae4-dda5-4783-b0f0-288d36464e2d_en_51.mxf",
    "7040fd1e-f419-432c-8b3e-098ce44cbc84_en_20.mxf",
    "fda0098f-b6ef-4fdb-b7a7-626d80db7e1e_en_tt.mxf"
  ]
}

The first entry in the manifest represents the primary file path. The remaining manifest entries represent secondary files referenced by the primary file.

template

A template is used to construct a path for each file produced by a container or package.

PropertyTypeDescription
namestringUniquely identifies the file. Each container and package type defines a set names.
pathstringThe path template for the file.

For example the following composition illustrates a typical template for an Interoperable Master Format (IMF) container:

---
output:
  container:
  - type: 'imf '
    name: output1
    template:
    - name: assetmap
      path: ASSETMAP.xml
    - name: volindex
      path: VOLINDEX.xml
    - name: cpl
      path: CPL_$title$.xml
    - name: pkl
      path: PKL_$uuid$.xml
    - name: opl
      path: OPL_$uuid$.xml
    - name: video
      path: $title$.mxf
    - name: ancillary
      path: $title$_anc.mxf
    - name: audio
      path: $title$_$language$_$layout$.mxf
    - name: subtitle
      path: $title$_$language$_$format$.mxf
{
  "output": {
    "container": [
      {
        "type": "imf ",
        "name": "output1",
        "template": [
          {
            "name": "assetmap",
            "path": "ASSETMAP.xml"
          },
          {
            "name": "volindex",
            "path": "VOLINDEX.xml"
          },
          {
            "name": "cpl",
            "path": "CPL_$title$.xml"
          },
          {
            "name": "pkl",
            "path": "PKL_$uuid$.xml"
          },
          {
            "name": "opl",
            "path": "OPL_$uuid$.xml"
          },
          {
            "name": "video",
            "path": "$title$.mxf"
          },
          {
            "name": "ancillary",
            "path": "$title$_anc.mxf"
          },
          {
            "name": "audio",
            "path": "$title$_$language$_$layout$.mxf"
          },
          {
            "name": "subtitle",
            "path": "$title$_$language$_$format$.mxf"
          }
        ]
      }
    ]
  }
}

encryption

Represents the encryption applied to a container or package.

PropertyTypeDescription
keyarrayLists the encryption keys applied to the package.
protectionarrayLists the protection systems available to retrieve encryption keys.

key

Represents an encryption key value.

PropertyTypeDescription
idstringUniquely identifies the key (KID).
seedstringPlayReady seed value used to generate encryption keys.
uristringIdentifies a resource containing the key. Typcially the location of the license server.
valuestringEncryption key value.
ivstringInitialization vector.

protection

Represents a specific type of protection system such as PlayReady, WideVine or FairPlay.

PropertyTypeDescription
typestringFour character code identifying the type of protection system.

track

Lists the video, audio and subtitle tracks in a container. By default each media stream represents a track in the container.

PropertyTypeDescription
videoarrayLists each video track in the container.
audioarrayLists each audio track in the container.
subtitlearrayLists each subtitle track in the container.

The select operator maps specific tracks (or audio channels) to an input media stream. Track properties are used to match a track (or channel) to a media stream.

The layout operator maps an output stream (or channels) to specific tracks. Track properties are used to route a media stream (or channel) to a track.

For example the following composition routes a stereo audio stream from channels 1 and 2 in the input container to channels 7 and 8 in the output container (channels 1 through 6 will be silent):

---
input:
  container:
  - name: input1
    audio:
    - name: stereo
      channels: 2
      select:
        channel:
        - 1
        - 2
output:
  container:
  - name: output1
    track:
      audio:
      - channels: 8
    audio:
    - name: stereo
      layout:
        channel:
        - 7
        - 8