Auto CMAF
Component Configuration
| Option | Description | Required |
|---|---|---|
id |
A unique identifier for the component instance |
✓ |
displayName |
The name shown in the Studio UI of this component |
✓ |
name |
The name of the multivariant/dash playlist (default: "default") |
✗ |
sessionId |
Generate a unique session id per run to avoid cache collisions (default: true) |
✗ |
allowPreview |
Whether to allow the preview to be shown in the UI (default: true) |
✗ |
notes |
Additional notes about this component |
✗ |
segments |
Detailed segment configuration |
✗ |
destinations |
Destination to publish to (default: []) |
✗ |
pushMode |
If pushing to a remote destination. include these playlist types (default: "hls_dash") |
✗ |
pdtEverySegment |
Insert Program Date Time every segment (default: true) |
✗ |
initialState |
The publishing state of this endpoint by default on start-up (default: "enabled") |
✗ |
drmProvider |
Encrypt with a DRM provider (if configured globally) |
✗ |
multiplePrograms |
Produce multiple multivariants if more than one program is present (default: false) |
✗ |
discontinuityHandling |
What to do when a gap or discontinuity is encountered (default: "discontinuity") |
✗ |
pdtSource |
What to use for Program-Date-Time - Norsk time or (where available, e.g. form SEI timecodes) source time (default: "norsk") |
✗ |
consistentSegments |
Generate segments consistently across Norsk instances (default: false) |
✗ |
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"}) |
✗ |
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 |
✗ |
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) |
✗ |
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) |
✗ |
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: "auto-cmaf") |
✗ |
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: "auto-cmaf") |
✗ |
validityPeriodSecs |
Validity window (seconds) advertised in the §19.4 c2pa.session-keys assertion. Leave empty to use the SDK default (86400, 24h). |
✗ |
Global Configuration
DRM encryption is available through EZDRM and Axinom DRM.
For both providers you need to configure authentication to enable Norsk to obtain encryption keys through the provider’s servers.
You may also configure additional settings for Studio to be able to obtain a license for local playback for the encrypted content.
After setting this global configuration, enabling on an it is as simple as setting drmProvider to true.
Ezdrm Config
| Option | Description | Required |
|---|---|---|
token |
Token for EZDRM |
✓ |
pX |
The last six digits of your Widevine Profile ID |
✗ |
Axinom Config
| Option | Description | Required |
|---|---|---|
tenantId |
Tenant ID from your Axinom DRM account |
✓ |
managementKey |
Management Key from your Axinom DRM account |
✓ |
comKeyId |
Communication Key ID from your Axinom DRM account |
✗ |
comKey |
Communication Key from your Axinom DRM account |
✗ |
Example Configuration
Here is an example of how to configure the output.autoCmaf component in a YAML file:
- type: output.autoCmaf
config:
displayName: autoCmaf
name: default
sessionId: true
segments:
retentionPeriod: 60
defaultSegmentCount: 0
targetSegmentDuration: 4
targetPartDuration: 1
s3Destinations: []
id: autocmaf