CMAF Media Playlist

This component creates, and optionally publishes, a cmaf media playlist for a single stream

Component Configuration

Option Description Required Environment override

id

A unique identifier for the component instance

displayName

The name shown in the Studio UI of this component

name

The name of the playlist (default: "norsk.m3u8")

sessionId

Generate a unique session id per run to avoid cache collisions (default: false)

publishingGroup

Each playlist will be published within a 'group', change this if you need multiple playlists for the same stream

discontinuityHandling

What to do when a gap or discontinuity is encountered (default: "gap")

segments

Detailed segment configuration

<COMPONENT_ID>_SEGMENTS

destinations

Destination to publish to (default: [])

<COMPONENT_ID>_DESTINATIONS

local

The engine's own local (pull) copy of the playlists. Enabled by default; its retention is independent of the pushed destinations, so keep it short unless something pulls a long tail directly from the engine.

pushMode

If pushing to a remote destination. include these playlist types (default: "hls_dash")

initialState

The publishing state of this endpoint by default on start-up (default: "enabled")

<COMPONENT_ID>_INITIALSTATE

addCmsdHeaders

Add CMSD headers (default: false)

c2paSigning

Sign init and media segments with a C2PA Live Video manifest before delivering them. Default is disabled. (default: {"type":"disabled"})

notes

Additional notes about this component

Options with an environment override can be set when Studio starts, without editing the workflow. <COMPONENT_ID> is this component’s id in your workflow, uppercased, with spaces and dashes replaced by underscores and other punctuation removed — a component named SRT Input reads SRT_INPUT_PORT. Renaming a component changes its id, and so changes these variable names.

Segments

Option Description Required

retentionPeriod

How many seconds of data to retain for playback in media playlists (default: 60)

defaultSegmentCount

How many segments to display in a default playlist (0 means show all) (default: 0)

targetSegmentDuration

How many seconds should be in each segment (default: 4)

targetPartDuration

For low latency playlists, what size parts should be generated in seconds (default: 1)

audioSegmentStrategy

Detailed segmentation strategy. Must be configured to match segment duration (after rounding) or invalid playlists may be generated (default: {"type":"default"})

videoSegmentStrategy

Detailed segmentation strategy. Must be configured to match segment duration (after rounding) or invalid playlists may be generated (default: {"type":"default"})

integralSegmentDuration

Round segment durations in playlist to integers instead of true decimal value. Possible workaround for certain player issues. (default: true)

holdBackSegments

How many segments back should a player start

holdBackParts

How many parts back should a player start

lowLatency

Produce low-latency HLS (EXT-X-PART / blocking reload). Turn this off for standard, CDN-cacheable playlists with no parts — recommended when delivering through a caching CDN. (default: true)

Destinations (Akamai)

Option Description Required

type

"akamai"

ingest

The complete URL to be pushed to

playback

The URL from which playback can be accessed

includeAdInsertions

If ad markers are inserted, include them in this publication (default: false)

customHeaders

Optional custom headers added to every push request sent to this destination (e.g. CDN authentication tokens) (default: [])

retention

Retention override for this destination. Any field left blank uses the shared Segment retention.

Destinations (S3)

Option Description Required

type

"s3"

host

The hostname of the s3 bucket to push to

prefix

The sub directory of the bucket to place playlists and segments into

includeAdInsertions

If ad markers are inserted, include them in this publication (default: false)

retention

Retention override for this destination. Any field left blank uses the shared Segment retention.

Destinations (OCI)

Option Description Required

type

"oci"

bucket

The OCI Object Storage bucket to push to

prefix

The object-name prefix under which playlists and segments are placed

auth

How Norsk authenticates to OCI. Instance principal (the default) needs no configuration when Norsk runs on a suitably-policied OCI instance; the other options supply user API-key material. (default: {"type":"instancePrincipal"})

namespace

Object Storage namespace. Discovered from the tenancy when omitted.

region

Region identifier, e.g. uk-london-1. Taken from the auth profile / instance metadata when omitted.

endpoint

Optional scheme://host[:port] override of the regional endpoint

realmDomainComponent

Realm domain (default oraclecloud.com; set for government realms)

includeAdInsertions

If ad markers are inserted, include them in this publication (default: false)

retention

Retention override for this destination. Any field left blank uses the shared Segment retention.

Local

Option Description Required

enabled

Serve a local copy at all. Turn off for push-only delivery so the engine retains nothing locally. (default: true)

retention

Retention override for this destination. Any field left blank uses the shared Segment retention.

C2pa Signing (Disabled)

Option Description Required

type

"disabled"

C2pa Signing (Enabled — Segment Manifest Box (§19.3))

Option Description Required

type

"segmentManifestBox"

alg

Signing algorithm. Must match the supplied certificate. (default: "es256")

privateKeyPath

Filesystem path (readable by the Norsk Media process) to the PEM-encoded private key. Not the key contents.

signCertPath

Filesystem path (readable by the Norsk Media process) to the PEM-encoded signing certificate. Not the certificate contents.

taUrl

Optional Time Authority URL for timestamping signatures. If omitted, the C2PA_TA_URL environment variable is consulted; if also unset, the manifest is signed without a timestamp token.

streamId

Identifier embedded in every signed segment's c2pa.livevideo.segment assertion. Should be unique per logical stream so downstream validators can correlate the sequence chain. (default: "cmaf-playlist")

chainOfTrust

Derived-signer mode: every output segment carries a parentOf C2PA ingredient pointing back at the verified upstream segment. Requires the input to have c2paVerification enabled — when no verified parent is available the segment is signed unchained and a c2pa_chain_dropped notification fires. (default: false)

C2pa Signing (Enabled — Verifiable Segment Info (§19.4))

Option Description Required

type

"verifiableSegmentInfo"

alg

Signing algorithm. Must match the supplied certificate. (default: "es256")

privateKeyPath

Filesystem path (readable by the Norsk Media process) to the PEM-encoded private key. Not the key contents.

signCertPath

Filesystem path (readable by the Norsk Media process) to the PEM-encoded signing certificate. Not the certificate contents.

taUrl

Optional Time Authority URL for timestamping signatures. If omitted, the C2PA_TA_URL environment variable is consulted; if also unset, the manifest is signed without a timestamp token.

streamId

Identifier embedded in every signed segment's c2pa.livevideo.segment assertion. Should be unique per logical stream so downstream validators can correlate the sequence chain. (default: "cmaf-playlist")

validityPeriodSecs

Validity window (seconds) advertised in the §19.4 c2pa.session-keys assertion. Leave empty to use the SDK default (86400, 24h).

Tags: cmaf playlist hls media