elv-utils-js: Example Files

The elv-utils-js repo contains an /example-files directory with various kinds of data files

ABR Profiles

These files are used for the MezCreate.js utility's --abr-profile option.

Filename

Supported Aspect Ratios

DRM Formats

# of Video Resolutions/Bitrates

Top Resolution

Notes

abr_profile_4k_both.json

16:9

all (+ clear)

7

4k

Includes both DRM and clear playout

abr_profile_4k_drm.json

16:9

all

7

4k

abr_profile_4k_drm_public_access.json

16:9

Widevine, Sample-AES, AES-128

7

4k

For authorization use cases where Fairplay cannot be used

abr_profile_4k_drm_strict.json

16:9

Widevine, Fairplay

7

4k

Only includes the 2 strongest DRM formats

abr_profile_4k_no_drm_store_clear.json

16:9

none

7

4k

Stores data in Content Fabric in unencrypted form - use only for lowest-security media

abr_profile_4k_no_drm_store_encrypted.json

16:9

none

7

4k

Stores data in encrypted format, allowing later addition of DRM if desired

abr_profile_both.json

various

all (+ clear)

6

1080p

Includes both DRM and clear playout

abr_profile_drm.json

various

all

6

1080p

abr_profile_drm_public_access.json

various

Widevine, Sample-AES, AES-128

6

1080p

For authorization use cases where Fairplay cannot be used

abr_profile_drm_strict.json

various

Widevine, Fairplay

6

1080p

Only includes the 2 strongest DRM formats

abr_profile_x265_4k_16x9_crf28_medium_clear.json

16:9

none

1

4k

For creating x265 Mezzanine Offerings (optionally with HDR, if master includes it)

abr_profile_no_drm_store_clear.json

various

none

6

1080p

Stores data in Content Fabric in unencrypted form - use only for lowest-security media

abr_profile_no_drm_store_encrypted.json

various

none

6

1080p

Stores data in encrypted format, allowing later addition of DRM if desired

Additional Offering Specs

{
  "watermark": [
    {
      "op": "replace",
      "path": "/simple_watermark",
      "value": {
        "font_color": "white@0.6",
        "font_relative_height": 0.05,
        "shadow": true,
        "shadow_color": "black@0.15",
        "template": "Prepared for $USERNAME",
        "x": "(w-tw)*85/100",
        "y": "(h-th)*95/100"
      }
    }
  ]
}
{
  "default-clear-download": [
    {
      "op": "replace",
      "path": "/drm_optional",
      "value": true
    },
    {
      "op": "replace",
      "path": "/playout/playout_formats",
      "value": {
        "dash-clear": {
          "drm": null,
          "protocol": {
            "min_buffer_length": 2,
            "type": "ProtoDash"
          }
        },
        "hls-clear": {
          "drm": null,
          "protocol": {
            "type": "ProtoHls"
          }
        }
      }
    }
  ]
}

HDR Info

{
  "master_display": "G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(40000000,50)",
  "max_cll": "1514,172"
}

Library Metadata

{
  "abr": {
    "comments": [
      "For movies/TV - snapAR is set to true, this profile will attempt to conform aspect ratio to nearby standard",
      "also specifies 'store encrypted', offers both clear and drm playout formats"
    ],
    "mez_content_type": "YOUR_TITLE_(MEZ)_CONTENT_TYPE_ID",
    "mez_manage_groups": [
      "ADDRESS_FOR_YOUR_CONTENT_ADMINS_GROUP"
    ],
    "mez_permission_level": "ONE_OF_THE_FOLLOWING: owner, editable, viewable, listable, public",
    "default_profile": {
      "drm_optional": true,
      "store_clear": false,
      "video_parametric_ladder": {
        "baseAspectRatio": "16/9",
        "baseFrameRate": "30",
        "rungSpecs": [
          {
            "dim": 2160,
            "bitrate": 14000000
          },
          {
            "dim": 1440,
            "bitrate": 11500000
          },
          {
            "dim": 1080,
            "bitrate": 9500000
          },
          {
            "dim": 720,
            "bitrate": 4500000
          },
          {
            "dim": 480,
            "bitrate": 1750000
          },
          {
            "dim": 360,
            "bitrate": 810000
          },
          {
            "dim": 240,
            "bitrate": 500000
          }
        ],
        "options": {
          "upscale": false,
          "snapAR": true,
          "maxARSnap": 0.06,
          "minDimStepdown": 0.12,
          "frameRateScaleFactor": 0.5
        },
        "limits": {
          "aspectRatioMax": "3",
          "aspectRatioMin": "1/3",
          "avgBitrateMax": 100000000,
          "avgBitrateMin": 100000,
          "fileSizeMax": 100000000,
          "fileSizeMin": 10000,
          "durationMax": 14400,
          "durationMin": 1,
          "finalBitrateMax": 30000000,
          "frameRateMax": "60",
          "frameRateMin": "15",
          "heightMax": 5000,
          "heightMin": 100,
          "sampleAspectRatioMax": "3/2",
          "sampleAspectRatioMin": "2/3",
          "widthMax": 5000,
          "widthMin": 100
        }
      },
      "ladder_specs": {
        "{\"media_type\":\"audio\",\"channels\":1}": {
          "rung_specs": [
            {
              "bit_rate": 128000,
              "media_type": "audio",
              "pregenerate": true
            }
          ]
        },
        "{\"media_type\":\"audio\",\"channels\":2}": {
          "rung_specs": [
            {
              "bit_rate": 192000,
              "media_type": "audio",
              "pregenerate": true
            }
          ]
        },
        "{\"media_type\":\"audio\",\"channels\":6}": {
          "rung_specs": [
            {
              "bit_rate": 384000,
              "media_type": "audio",
              "pregenerate": true
            }
          ]
        }
      },
      "playout_formats": {
        "dash-widevine": {
          "drm": {
            "content_id": "",
            "enc_scheme_name": "cenc",
            "license_servers": [],
            "type": "DrmWidevine"
          },
          "protocol": {
            "min_buffer_length": 2,
            "type": "ProtoDash"
          }
        },
        "hls-aes128": {
          "drm": {
            "enc_scheme_name": "aes-128",
            "type": "DrmAes128"
          },
          "protocol": {
            "type": "ProtoHls"
          }
        },
        "hls-fairplay": {
          "drm": {
            "enc_scheme_name": "cbcs",
            "license_servers": [],
            "type": "DrmFairplay"
          },
          "protocol": {
            "type": "ProtoHls"
          }
        },
        "hls-sample-aes": {
          "drm": {
            "enc_scheme_name": "cbcs",
            "type": "DrmSampleAes"
          },
          "protocol": {
            "type": "ProtoHls"
          }
        },
        "dash-clear": {
          "drm": null,
          "protocol": {
            "min_buffer_length": 2,
            "type": "ProtoDash"
          }
        },
        "hls-clear": {
          "drm": null,
          "protocol": {
            "type": "ProtoHls"
          }
        }
      },
      "segment_specs": {
        "audio": {
          "segs_per_chunk": 15,
          "target_dur": 2
        },
        "video": {
          "segs_per_chunk": 15,
          "target_dur": 2
        }
      }
    }
  },
  "elv": {
    "media": {
      "drm": {
        "fps": {
          "cert": "MIIExzCCA6+gAwIBAgIIHyfkXhxLHC4wDQYJKoZIhvcNAQEFBQAwfzELMAkGA1UEBhMCVVMxEzARBgNVBAoMCkFwcGxlIEluYy4xJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MTMwMQYDVQQDDCpBcHBsZSBLZXkgU2VydmljZXMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAwOTEyMDMzMjI0WhcNMjIwOTEzMDMzMjI0WjBgMQswCQYDVQQGEwJVUzETMBEGA1UECgwKRWx1dmlvIEluYzETMBEGA1UECwwKMktIOEtDM01NWDEnMCUGA1UEAwweRmFpclBsYXkgU3RyZWFtaW5nOiBFbHV2aW8gSW5jMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDslbBURB6gj07g7VrS7Ojixe7FNZOupomcZt+mtMvyavjg7X7/T4RccmKUQxOoMLKCJcQ6WrdHhIpN8+bciq7lr0mNzaN467zREiUNYOpkVPi13sJLieY2m2MEPOQTbIl52Cu1YyH+4/g1dKPmeguSnzZRo36jsCGHlJBjHq0jkQIDAQABo4IB6DCCAeQwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRj5EdUy4VxWUYsg6zMRDFkZwMsvjCB4gYDVR0gBIHaMIHXMIHUBgkqhkiG92NkBQEwgcYwgcMGCCsGAQUFBwICMIG2DIGzUmVsaWFuY2Ugb24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2NybC5hcHBsZS5jb20va2V5c2VydmljZXMuY3JsMB0GA1UdDgQWBBR4jerseBHEUDC7mU+NQuIzZqHRFDAOBgNVHQ8BAf8EBAMCBSAwOAYLKoZIhvdjZAYNAQMBAf8EJgFuNnNkbHQ2OXFuc3l6eXp5bWFzdmdudGthbWd2bGE1Y212YzdpMC4GCyqGSIb3Y2QGDQEEAQH/BBwBd252bHhlbGV1Y3Vpb2JyZW4yeHZlZmV6N2Y5MA0GCSqGSIb3DQEBBQUAA4IBAQBM17YYquw0soDPAadr1aIM6iC6BQ/kOGYu3y/6AlrwYgAQNFy8DjsQUoqlQWFuA0sigp57bTUymkXEBf9yhUmXXiPafGjbxzsPF5SPFLIciolWbxRCB153L1a/Vh2wg3rhf4IvAZuJpnml6SSg5SjD19bN+gD7zrtp3yWKBKuarLSjDvVIB1SoxEToBs3glAEqoBiA2eZjikBA0aBlbvjUF2gqOmZjZJ7dmG1Tos2Zd4SdGL6ltSpKUeSGSxyv41aqF83vNpymNJmey2t2kPPtC7mt0LM32Ift3AkAl8Za9JbV/pOnc95oAfPhVTOGOI+u2BuB2qaKWjqHwkfqCz4A"
        }
      }
    }
  }
}
{
  "abr": {
    "comments": [
      "For animation NFTs that are not movie/TV clips - snapAR is set to false",
      "also specifies 'store clear', only offers clear playout formats (no drm)",
      "and object permission 'listable'.",
      "does not include DRM cert @ /elv/media/drm/fps/cert"
    ],
    "mez_content_type": "YOUR_TITLE_(NFT)_CONTENT_TYPE_ID",
    "mez_manage_groups": [
      "ADDRESS_FOR_YOUR_CONTENT_ADMINS_GROUP"
    ],
    "mez_permission_level": "listable",
    "default_profile": {
      "drm_optional": true,
      "store_clear": true,
      "video_parametric_ladder": {
        "baseAspectRatio": "16/9",
        "baseFrameRate": "30",
        "rungSpecs": [
          {
            "dim": 2160,
            "bitrate": 14000000
          },
          {
            "dim": 1440,
            "bitrate": 11500000
          },
          {
            "dim": 1080,
            "bitrate": 9500000
          },
          {
            "dim": 720,
            "bitrate": 4500000
          },
          {
            "dim": 480,
            "bitrate": 1750000
          },
          {
            "dim": 360,
            "bitrate": 810000
          },
          {
            "dim": 240,
            "bitrate": 500000
          }
        ],
        "options": {
          "upscale": false,
          "snapAR": false,
          "maxARSnap": 0.06,
          "minDimStepdown": 0.12,
          "frameRateScaleFactor": 0.5
        },
        "limits": {
          "aspectRatioMax": "3",
          "aspectRatioMin": "1/3",
          "avgBitrateMax": 100000000,
          "avgBitrateMin": 100000,
          "fileSizeMax": 100000000,
          "fileSizeMin": 10000,
          "durationMax": 14400,
          "durationMin": 1,
          "finalBitrateMax": 30000000,
          "frameRateMax": "60",
          "frameRateMin": "15",
          "heightMax": 5000,
          "heightMin": 100,
          "sampleAspectRatioMax": "3/2",
          "sampleAspectRatioMin": "2/3",
          "widthMax": 5000,
          "widthMin": 100
        }
      },
      "ladder_specs": {
        "{\"media_type\":\"audio\",\"channels\":1}": {
          "rung_specs": [
            {
              "bit_rate": 128000,
              "media_type": "audio",
              "pregenerate": true
            }
          ]
        },
        "{\"media_type\":\"audio\",\"channels\":2}": {
          "rung_specs": [
            {
              "bit_rate": 192000,
              "media_type": "audio",
              "pregenerate": true
            }
          ]
        },
        "{\"media_type\":\"audio\",\"channels\":6}": {
          "rung_specs": [
            {
              "bit_rate": 384000,
              "media_type": "audio",
              "pregenerate": true
            }
          ]
        }
      },
      "playout_formats": {
        "dash-clear": {
          "drm": null,
          "protocol": {
            "min_buffer_length": 2,
            "type": "ProtoDash"
          }
        },
        "hls-clear": {
          "drm": null,
          "protocol": {
            "type": "ProtoHls"
          }
        }
      },
      "segment_specs": {
        "audio": {
          "segs_per_chunk": 15,
          "target_dur": 2
        },
        "video": {
          "segs_per_chunk": 15,
          "target_dur": 2
        }
      }
    }
  }
}

Object Metadata

Script Configuration

Variant Stream Definition

{
  "audio_fr": {
    "default_for_media_type": true,
    "label": "Français",
    "language": "fr-fr",
    "sources": [
      {
        "files_api_path": "audio-french.mp4",
        "stream_index": 0
      }
    ],
    "type": "audio"
  },
  "video": {
    "default_for_media_type": true,
    "label": "video",
    "language": "",
    "mapping_info": "",
    "sources": [
      {
        "files_api_path": "video-1080p.mp4",
        "stream_index": 0
      }
    ],
    "type": "video"
  }
}

Watermark

{
  "align_h": "right",
  "align_v": "bottom",
  "image": "/image_watermark.png",
  "margin_h": "1/20",
  "margin_v": "1/10",
  "target_video_height": 1080
}
{
  "font_color": "white@0.5",
  "font_relative_height": 0.05,
  "shadow": true,
  "shadow_color": "black@0.5",
  "template": "PREPARED FOR $USERNAME - DO NOT DISTRIBUTE",
  "x": "(w-tw)/2",
  "y": "h-(4*lh)"
}