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)

onPathStats?

(stats: MoqEgestPathStats) ⇒ void

(Optional) Every second, while it has any: each subscriber connected directly to this output’s listener, and how its QUIC path is doing — round-trip time, and the packets sent to it and lost on the way. Subscribers on a transport that does not measure its path are left out.

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).

priorities?

{ catalog?: number; audio?: number; subtitle?: number; video?: number; }

(Optional) MOQT publisher priority (0-255, lower first) per kind of track. When a viewer’s link can’t carry the whole broadcast, higher-priority tracks go first, so a slow link drops video before audio. Kinds left out keep the defaults: catalog 32 (it covers the init tracks too), audio 64, subtitle 96, video 128. A subscriber’s own priority, if it sets one, comes before these.

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.

videoDeliveryTimeoutMs?

number

(Optional) Drop a video object that can’t be handed to the network within this many milliseconds of being published, rather than delivering it late (a MOQT delivery timeout, advertised to subscribers). Unset means no timeout. A video group whose next group has started is dropped either way.