NorskTransform interface

Methods that allow you to manipulate your media streams

Signature:

export interface NorskTransform

Methods

Method Description

ancillary(settings)

Observe, modify or inject ancillary data such as SCTE-35 or timed metadata.

If intending to send ancillary messages without a specified timestamp this node should be subscribed to an audio or video stream from the given program to act as a timing source.

audioBuildMultichannel(settings)

Aggregate many single-channel audio streams into a stream with the specified channel layout. The streams must all have the same sample format and sample rate. The order of the streams provided for the channels is important.

audioEncode(settings)

Encode an audio stream.

audioGain(settings)

Apply gain to an audio stream

audioMix(settings)

Mix multiple audio streams together into a single output, with optional gain control on each input.

audioMixMatrix(settings)

Given an audio stream of N channels, mix it down to M channels through a matrix of NxM gains.

audioSplitMultichannel(settings)

Split a multichannel audio stream into its individual channels. The first channel receives the specified stream key, and each subsequent channel increments the stream id on the stream key.

audioTranscribeAws(settings)

Create a Media Node performing transcription into subtitles using the Amazon Transcribe AWS service.

audioTranscribeAzure(settings)

Create a Media Node performing transcription into subtitles using the Azure Speech service.

audioTranscribeWhisper(settings)

Create a Media Node performing transcription into subtitles using the Whisper speech recognition model via the whisper-cpp SDK.

For reference on general concepts https://github.com/ggerganov/whisper.cpp - many settings are directly settings on the underlying library and can be evaluted via the CLI tool there also.

audioWatermark(settings)

Embeds audio watermarks into the audio stream, using Kantar Media’s SNAP technology, see kantarmedia.com for details. Norsk supports both online and offline licensing models, and the relevant license information is provided to Norsk through the AudioWatermarkConfiguration message. At runtime, notifications are returned through the stream of AudioWatermarkEvent messages, which includes Kantar event information and, for offline licenses, a notification of the number of days remaining. Note that audio watermarking introduces around 50-60ms of delay to the audio stream; Norsk will ensure that all related media streams (e.g. video) are kept in sync.

jitterBuffer(settings)

Buffer a stream for the specified number of milliseconds. This can be used to reduce or eliminate jitter.

metadataCombine(settings)

Combine compatible streams of metadata (this refers to ancillary streams of metadata messages, such as that carried in an MPEG-TS PES metadata stream (e.g. KLV), unrelated to operations on the metadata of audio/video/etc streams.

streamAlign(settings)

This processor does multiple things - joins together multiple streams from multiple sources - rebases their timestamps so that they all start at the same point - sets the program id to a common value

It is useful for syncing multiple incoming streams that on paper are already synchronised but because of the time taken to set up connections and subscriptions across various protocols, are off by a few hundred milliseconds

streamChaosMonkey(settings)

Interferes with a stream by dropping frames Why would you want this? Stick one of these after a decoder and before anything else in order to simulate what the world is going to look like if you have network problems (packet drops for example) in your ingest

Just don’t forget to remove it again when you’ve finished testing!

streamCondition(settings)

Condition a stream for switching (i.e. for ad insertion)

Provides a mechanism for requesting that a straem be conditioned for switching, with in and out points. This means insertion of IDR frames, relevant to both continuous outputs (e.g. TS based), and hinting of segmentation breaks for segmented outputs (ie HLS).

This may be used in combination with an NorskTransform.ancillary() node for reacting to SCTE-35 message

streamKeyOverride(settings)

Provide a new stream key for a single stream. Cannot be subscribed to multiple streams at once.

The stream key is used for identifying streams within multiplexed sources and also is translated into URIs for HLS playlists and other resources.

This can be useful if changing sources and wanting to maintain a consistent streamkey going into an output

streamMetadataOverride(settings)

Override bitrate and language metadata on streams.

Audio and video bitrate metadata is required for playlists for the NorskOutput.cmafMultiVariant() node. It is automatically configured for some sources (like RTMP) and in cases where re-encoding is done, but is unset for other sources (like SRT).

streamSync(settings)

Sync multiple streams together by timestamps, queuing frames from streams that are behind the others. This is already included in most nodes, especially outputs.

streamTimestampNudge(settings)

A node to nudge the timestamps on a stream, which affects how it syncs with other streams. Useful for correcting for drift between different sources.

Subsequent nudges, via the nudge method, are applied gradually.

This functionality is also provided by a nudge method on many sources.

subtitleConvert(settings)

Convert subtitles/captions/transcriptions from one format to another

Similar to audio and video encodes, this may happen implicitly as required, but this explicit node allows choice of format and conversion parameters to be specified

subtitleTranslateAws(settings)

Translate subtitles using the AWS Translate service.

Credentials are provided either via the standard AWS environment variables (for the Norsk server instance), EC2 role credentials (IMDSv2), etc via the AWS SDK standard credential provider chain.

videoCompose(settings)

Compose multiple video streams together into a single output

videoDecode(settings)

Decode a video stream to a specific type of 'raw' format this isn’t usually needed because decode will happen automatically for nodes that need raw data however if we definitely want a hardware decode and we’re creating nodes that accept inMemory raw, we can use this node to ensure that the hardware decode takes place

videoEncode(settings)

Encode a video stream to one or more renditions using either software or appropriate hardware if available

videoTransform(settings)

Transform a single video stream (rescale, frame rate, etc)