MoqOutputSettings interface

Settings to configure a Moq Egest see NorskOutput.moq()

Signature:

export interface MoqOutputSettings extends SinkNodeSettings<MoqOutputNode>, StreamStatisticsMixin

Properties

Property Type Description

audioBitrate?

number

(Optional) Advertised (maximum) audio bitrate in bits per second, published in the catalog. See MoqOutputSettings.videoBitrate.

c2paSigning?

C2paSigningSettings

(Optional) Settings for C2PA (Content Provenance and Authenticity) signing of MoQ output. When set, the init segment and every fragment of each published track is signed before being broadcast.

forwardingPreference?

"subgroup" | "datagram"

(Optional) Per-object forwarding preference. Defaults to "subgroup" (reliable unidirectional streams). "datagram" sends each media object as an unreliable OBJECT_DATAGRAM for lower latency (catalog and codec init still go reliably) — best paired with outputFormat: "loc".

jitterBuffer?

JitterBufferConfig

(Optional) Optional jitter buffer configuration for smoothing output timing.

listener?

MoqOutputListenerSettings

(Optional) Optional: start a QUIC listener for direct MoQT subscriber connections.

moqProtocolVersion?

"auto" | "draft14" | "draft16" | "draft18"

(Optional) Pin the MoQT transport draft this egest speaks, instead of auto-negotiating the newest one. Omit (or "auto") to negotiate. Mainly useful for tests that want to exercise a specific version.

namespace

string[]

The namespace to publish tracks within, as a list of segments (the on-the-wire MoQT tuple). For example, the namespace <"stage", "primary"> is ["stage", "primary"].

onConnection?

(connectionIndex: number, remoteHost: string) ⇒ MoqConnectionResult

(Optional) Called when a new subscriber connects via QUIC or WebTransport. Return accept with a sourceName, or reject to deny the connection.

onConnectionStatusChange?

(connectionIndex: number, state: string) ⇒ void

(Optional) Called when a connection status changes (connected, disconnected)

onRelayStateChange?

(event: MoqRelayStateEvent) ⇒ void

(Optional) Called whenever an upstream relay this egest is publishing to transitions through one of the lifecycle states. Use this to surface connection / announce / ready / failure events to the application UI. The relayUrl lets you correlate events when multiple relays are configured.

Sequence (per relay):

"connecting" → "announcing" → "connected" → "ready" ↓ (on retry) "announceFailed" { reason, retryMs } → loops back to "announcing"

At any time after "connecting": "disconnected" { reason }

"connected" and "ready" are deliberately separate so a UI can distinguish "we have a session, but the namespace hasn’t been accepted yet" from "the relay is publishing-ready".

outputFormat?

"cmaf" | "loc"

(Optional) Packaging format published by this egest. Defaults to "cmaf" (fragmented MP4). "loc" publishes raw NAL payloads per object with the codec init advertised inline in the catalog (Low Overhead Container).

outputTimecode?

PdtSource

(Optional) If set, a PRFT (Producer Reference Time) box is prepended to each CMAF media segment carrying an NTP wall-clock timestamp. The PdtSource controls how the timestamp is derived. By default, PRFT is only emitted on keyframe fragments.

outputTimecodeOnAllFrames?

boolean

(Optional) When true, emit PRFT on every fragment. Default: false (keyframes only).

relays?

MoqOutputRelaySettings[]

(Optional) MoQT relays to connect to and publish tracks for (e.g. CDN primary and backup)

videoBitrate?

number

(Optional) Advertised (maximum) video bitrate in bits per second, published in the catalog. Only needed when the stream bitrate is otherwise unknown — typically a pass-through scenario; when encoding, the bitrate comes from the encode. MSF-format catalogs require a bitrate for audio/video tracks.