TAMS

Record video and audio streams into the Time Addressable Media Store (TAMS) and open a player for the recording.

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

storePath

The path to which recordings will be made

<COMPONENT_ID>_STOREPATH

cutsPath

The path to which cuts will be made

<COMPONENT_ID>_CUTSPATH

expiryHours

How long segments (and any cut files) are kept on local disk, in hours. This is the local retention tier; when replicating to a remote store you can set a separate, longer remote expiry. (default: 24)

<COMPONENT_ID>_EXPIRYHOURS

audioFragmentDurationSeconds

How long recorded audio fragments are, in seconds. Audio defaults to 11s, which sets how close to live a reader consuming both audio and video can play; a smaller value (e.g. 1) lowers that floor for near-live playback, at the cost of more, smaller objects. Leave blank to keep the 11s default.

<COMPONENT_ID>_AUDIOFRAGMENTDURATIONSECONDS

remoteReplication

How recorded segments are retained. `None (local only)` keeps them on local disk for the expiry above and nowhere else. Choosing a remote object store (HTTP, S3 or OCI) replicates each segment there — advertised as a `remote` get_url on the TAMS timeline — and unlocks two tiered-storage modes via the retention setting: `Local + remote` (a fast local tier plus a durable remote copy, each with its own expiry) or `Expire when replicated` (local is freed once replicated and the remote store becomes the retention tier). S3 credentials come from the Norsk container's environment; OCI is supported natively with explicit auth defaulting to the instance principal. (default: {"type":"none"})

<COMPONENT_ID>_REMOTEREPLICATION

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.

Remote Replication (None (local only))

Option Description Required

type

"none"

Remote Replication (HTTP)

Option Description Required

type

"http"

baseUrl

Base URL that segment objects are PUT under

headers

Optional custom headers added to each PUT request (default: [])

localRetention

What happens to a segment's local copy once it is safely on the remote store. "Local + remote" keeps it for the local expiry above, so the store has a fast local tier alongside the durable remote copy. "Expire when replicated" removes it, making the remote store the retention tier. Cuts and local playback need the local bytes, so choose "Local + remote" if you cut from this store. (default: "keepLocal")

remoteExpiryHours

How long the remote store keeps each replicated segment, in hours. Leave blank to keep it indefinitely. Independent of the local expiry above — pair a short local expiry with a long (or blank) remote expiry for a small local cache backed by a durable remote archive.

Remote Replication (S3)

Option Description Required

type

"s3"

bucket

Target S3 bucket

region

AWS region (defaults to the AWS_REGION environment variable)

keyPrefix

Optional key prefix under which objects are uploaded

endpoint

Override endpoint for S3-compatible stores (e.g. OCI Object Storage)

forcePathStyle

Use path-style addressing, required by some S3-compatible stores (e.g. OCI)

presign

Advertise presigned get_urls instead of plain object URLs

presignExpirySeconds

Expiry, in seconds, for presigned get_urls

localRetention

What happens to a segment's local copy once it is safely on the remote store. "Local + remote" keeps it for the local expiry above, so the store has a fast local tier alongside the durable remote copy. "Expire when replicated" removes it, making the remote store the retention tier. Cuts and local playback need the local bytes, so choose "Local + remote" if you cut from this store. (default: "keepLocal")

remoteExpiryHours

How long the remote store keeps each replicated segment, in hours. Leave blank to keep it indefinitely. Independent of the local expiry above — pair a short local expiry with a long (or blank) remote expiry for a small local cache backed by a durable remote archive.

Remote Replication (OCI)

Option Description Required

type

"oci"

bucket

Target OCI Object Storage bucket

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.

keyPrefix

Optional key prefix under which objects are uploaded

endpoint

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

realmDomainComponent

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

presign

Advertise presigned get_urls instead of plain object URLs

presignExpirySeconds

Expiry, in seconds, for presigned get_urls

localRetention

What happens to a segment's local copy once it is safely on the remote store. "Local + remote" keeps it for the local expiry above, so the store has a fast local tier alongside the durable remote copy. "Expire when replicated" removes it, making the remote store the retention tier. Cuts and local playback need the local bytes, so choose "Local + remote" if you cut from this store. (default: "keepLocal")

remoteExpiryHours

How long the remote store keeps each replicated segment, in hours. Leave blank to keep it indefinitely. Independent of the local expiry above — pair a short local expiry with a long (or blank) remote expiry for a small local cache backed by a durable remote archive.

Tags: tams media store recorder