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)"
}