MoQ input

MoQ Input. Receives streams through the packager native library. The UI is intentionally MoQ-first, while advanced project-file overrides can still set the hidden SourceType.

Property Type Access Description
ShowAdvancedOptions bool get/set Show or hide the input's advanced settings in the editor UI. [default=false].
SourceType MoQSourceType get/set Source type (RTMP, SRT, or MoQ)
ConnectionUrl string get/set Source URL to connect to — the MoQ relay endpoint to receive the stream from. Point this at a specific MoQ relay (for example a privately hosted relay or a non-default Vindral region). Treat the URL as sensitive — it can encode connection credentials and shouldn't be committed to public project files. Macros like @@LocalIP() and @@HostName() may be used inside the URL.
ChannelId string get/set Vindral CDN channel ID (also called the namespace) the stream is published under. Required for the MoQ source. Set this to match the channel registered with the CDN — the same Channel ID the publisher streams to. The input tunes to the stream by referencing this Channel ID.
UseHardwareDecoding bool get/set Use GPU-accelerated (NVDEC) video decoding when available. [default=false]. Hardware decoding offloads decode from the CPU and is recommended for high-resolution or high-framerate streams.
AutoConnect bool get/set When true, the input connects automatically as soon as the project loads. [default=false]. Convenient for return feeds and contribution inputs that should come up the moment Composer is running.
AutoReconnect bool get/set When true, the input automatically reconnects if the connection is lost. [default=false]. Each reconnect attempt increments NumAutoReconnectsPerformed; the wait between attempts is set by ReconnectInterval.
ReconnectInterval ReconnectInterval get/set How long to wait between reconnect attempts after a connection failure. [default=OneSecond]. Shorter intervals recover faster from transient network blips but hammer the relay if the issue is persistent. Longer intervals are gentler on the network but mean more frozen/black time on screen. Only used when AutoReconnect is enabled.
FreezeFrameOptions FreezeFrameOptions get/set How long to keep showing the last decoded frame after the connection is lost. Holds the final good frame on screen instead of cutting to black while the input reconnects, smoothing over short drops. Once the configured hold elapses the rendered image is cleared. Audio is always silenced immediately on disconnect regardless of this setting.
ConnectionStatus ConnectionStatus get Current connection status of the MoQ session (read-only). Disconnected — not currently connected. Connecting — handshake/track discovery in progress. Connected — actively receiving and decoding. Reconnecting — connection dropped, retrying. Useful from a script for driving UI indicators, alerts, or fallback routes when the source goes off-air.
ConnectCommand Command get Connect to the source and begin receiving the stream from the configured Channel ID. Disabled while the input is already connecting or connected.
DisconnectCommand Command get Cleanly close the MoQ session and stop receiving. Disabled while the input is already disconnected.
HardwareDecodingUsed string get Description of the decoder in use for the current connection (read-only). Reports the actual decode path (e.g. hardware NVDEC vs software) chosen after track discovery, which may differ from the requested UseHardwareDecoding when the codec or hardware doesn't support it.
SourceCamera string get The camera that produced the frames currently arriving, when the stream carries a per-frame camera identity (read-only). Empty for an ordinary stream that does not. Updated only when the camera changes, not on every frame. For acting on the identity, read it from the frame rather than from here: this property reports what has arrived most recently, which is exactly the "latest value wins" reading that is wrong at a cut.
ObserveFrameIdentity bool get/set Record each decoded frame's dominant colour alongside the camera identity attached to that same frame, readable from FrameIdentitySamples. Off by default. For proving that the picture changes on the same frame as the identity, and for diagnosing the report this system can produce that nothing else makes visible — the wrong background on air. Reading the camera property and a rendered image separately cannot answer it: those are two moments, and the question is about one frame. Costs a hue histogram over each frame while it is on, so leave it off in production unless that is the question being asked.
FrameIdentitySamples string get The frames observed while ObserveFrameIdentity is on, oldest first, as index:pts:camera:uid:hue:saturation:value separated by ; (read-only). Emptied whenever the diagnostic is switched either way, and on reconnect. index counts every frame observed since that window began, so a reader can tell a complete run from one with holes in it — the distinction the diagnostic exists for, since a run missing its post-cut frames agrees with itself while still being wrong. hue is in degrees, saturation and value in percent; all three zero means no pixel had a stable hue, which is not the same as red. uid escapes %, : and ; as %25, %3A, %3B. Reading does not consume the buffer — each record carries its own index and PTS, so a reader polling repeatedly de-duplicates on those instead.
NumAutoReconnectsPerformed int get Number of automatic reconnection attempts performed since the input was started (read-only).
StreamTime TimeCode get Elapsed playback time of the received stream as a timecode (read-only).
ComponentLog ComponentLog get Rolling buffer of recent connection events, warnings, and errors surfaced on this input (read-only).
FrameTagCamera int get Zero-based index of the camera named by the current frame's tag, or -1 when the frame carried none (read-only). Minus one rather than zero for absent, because zero is a real camera. An index is also not an identity: the same index can mean a different camera after the sender's list is reordered, which is why FrameTagCameraUid travels beside it and is the only field anything downstream matches on.
FrameTagCameraUid string get The stable camera id from the current frame's tag — cam-roulette-front — empty when the frame carried no tag (read-only). The field the Camera Background Selector matches on, so this is where to look when a background is not the one expected: a uid here that no slot mentions is a misconfiguration rather than a fault.
FrameTagCameraName string get What the sender calls that camera — "Roulette Front" — empty when it sent no name (read-only). For display only. It is the field somebody renames mid-show, which is why nothing selects on it.
FrameTagSequence long get The sender's monotonic frame counter from the current frame's tag (read-only). Advances by one per frame sent. A gap is frame loss between the sender and here, which a PTS alone would not show — the decoder produces a continuous PTS from what reached it.
FrameTagGeneration long get Increments on every cut at the sender and never repeats (read-only). It is what lets a receiver notice a cut it never saw: camera indices alone cannot separate "camera 1 for a while" from "camera 1, then 2, then 1 again, with the middle frames lost". A jump of more than one between two observed frames means a whole camera's turn went by unseen.
FrameTagFrameRate string get The frame rate the sender declared in the tag, as it wrote it — 30000/1001 (read-only). Empty when it declared none.
FrameTagVersion int get Version of the frame tag format the sender wrote, 0 when no tag is arriving (read-only). Unknown fields are ignored on read and the format is additively compatible both ways, so a version higher than this build knows about is not in itself a fault — it is the first thing to check when fields are missing rather than wrong.
FrameTagCutKeyframes string get How the cuts in the incoming stream arrived: how many came in on an IDR, how many did not, and how many IDRs arrived that started no cut, for the current connection (read-only, debug). Read as N on an IDR, M without, K IDR within shots. A cut is the tag's generation changing between two received packets, and it is judged by the first packet of the new generation — read off the coded bytes, not the packet's key flag. A sender that forces a keyframe on every cut should show nought without; one that does not will show most cuts without one, which is ordinary. The sender counts the same thing on its way out, so the two can be compared: a keyframe lost in between shows as a cut this side counts without and the sender counts on. The third count is IDRs that started no cut — the GOP's own keyframes inside a shot. It is what gives the first its meaning: a stream of nothing but IDRs puts every cut on one, so "every cut on an IDR" says the sender forced them only while this stays near the number of GOP boundaries the connection has crossed.
VideoFramesDecoded long get Video frames decoded (read-only)
AudioFramesDecoded long get Audio frames decoded (read-only)
VideoBufferFrames int get Video buffer frame count (read-only)
VideoBufferSizeMs int get Video buffer size in milliseconds (read-only)
AudioBufferMs int get Audio buffer size in milliseconds (read-only)
MoQBufferLengthMs int get/set Milliseconds of audio and video buffered before playback starts. [min=40, max=2000, default=200].
BufferState NetworkBufferingState get Whether the input is pre-rolling or playing out (read-only)
AvSyncAlignments long get Number of times audio and video have been locked to a common timestamp (read-only)
RenderedFramesCounter int get Rendered frames counter (read-only)
RenderedImageWidth int get Rendered image width (read-only)
RenderedImageHeight int get Rendered image height (read-only)
AudioTrackCount int get Audio track count (read-only)
HwDecodeActive bool get Hardware decode active (read-only)
LastFrameFormat string get Last frame pixel format (read-only)
NumPacketsReceived long get Packets received (read-only)
NumVideoDecodeErrors int get Video decode errors (read-only)
NumBufferUnderRuns int get Buffer under-runs (read-only)
IncomingVideoBitRate string get Incoming video bitrate (read-only)
VideoAudioSync double get Video/Audio sync in milliseconds (read-only)
SourceState string get Source state (read-only)
IncomingAudioBitRate string get Incoming audio bitrate (read-only)
MaxVideoBitrate string get Max video bitrate observed this connection (read-only)
MinVideoBitrate string get Min video bitrate observed this connection (read-only)
AvgVideoBitrate string get Average video bitrate over 30 seconds (read-only)
MaxAudioBitrate string get Max audio bitrate observed this connection (read-only)
MinAudioBitrate string get Min audio bitrate observed this connection (read-only)
AvgAudioBitrate string get Average audio bitrate over 30 seconds (read-only)
ConnectLatencyMs double get Connect latency in milliseconds (read-only)
AvgDecodeTime double get Average video decode time in milliseconds (read-only)
PeakDecodeTime double get Peak video decode time in milliseconds (read-only)
StatusMessage string get Status message for validation (read-only)

Inherits from: AbstractInput, AbstractAudioProcessing, AbstractAudioMetering, NamedModel.

See also: MoQ input in Inputs — user-facing introduction, screenshots, and section summaries.