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 |
✗ |
|
destinations |
Destination to publish to (default: []) |
✗ |
|
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") |
✗ |
|
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. |
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 (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