SRT input

SRT input properties for Script Engine. Receives a live video and audio stream over SRT (Secure Reliable Transport) — an IP-based transport protocol designed for low-latency contribution feeds across unpredictable networks. SRT recovers lost packets, hides jitter, and supports optional encryption, making it more robust than RTMP on bumpy links. Supports both listener mode (Composer waits for a remote encoder to push the stream in) and caller mode (Composer reaches out to a remote SRT source). Includes auto-start on load, automatic restart on errors, optional NVDEC hardware decoding, freeze-frame handling on signal loss, and pre-built configuration templates for common setups.

Property Type Access Description
ShowAdvancedOptions bool get/set Show or hide the input's advanced settings in the editor UI. [default=false].
SrtInputConfigurationTemplate SrtInputConfigurationTemplate get/set Pre-built configuration template that fills in ListenerAddress for you. Custom keeps whatever you've typed. The other choices set ListenerAddress to a ready-made local-loopback URL — Localhost9000caller for connecting out to a source on localhost:9000, Localhost9000listener for receiving a push to localhost:9000.
ListenerAddress string get/set SRT URL the input connects to or listens on. [default=local listener on any interface]. A full SRT URL such as srt://host:port?mode=caller&latency=200000 (reach out to a remote source) or srt://0.0.0.0:port?mode=listener&latency=200000 (wait for a remote encoder to push the stream into Composer). Supports the standard SRT query parameters — mode, latency, passphrase, streamid, etc. — directly in the URL. The macro @@LocalIP() can be used in place of an IP address and will be substituted with the host machine's local IP address at connect time. Useful for portable project files that should work on any machine without manual IP edits — for example srt://@@LocalIP():9000?mode=caller&latency=200000.
AutoStart bool get/set Whether the input starts as soon as the project loads. [default=true]. When true, the input invokes its start logic immediately on load (equivalent to running StartListenerCommand). Disable to require an explicit start, useful when the source should only come live on operator action or via a script trigger.
AutoRestart bool get/set Whether the input automatically restarts after a timeout or error. [default=true]. When true, the input keeps trying to recover when the connection drops, the source times out, or a recoverable error occurs. Useful for long-running productions where the source may briefly drop. Disable for one-shot connects that should not auto-recover.
WarnOnBufferUnderRun bool get/set Whether to log a warning when the video or audio buffer drains to zero. [default=false]. Buffer under-runs typically cause visible stalls or audible drop-outs, so flagging them in the log helps diagnose network or pacing issues. Disable to keep the log quieter when occasional drains are expected.
SrtBufferLength SrtBufferLength get/set How much video and audio is buffered ahead of playback. [default=Medium]. Choose between Short, Medium, and Long. A longer buffer absorbs more network jitter and keeps playback steady on bumpy links, at the cost of more added latency. A shorter buffer is tighter on latency but more sensitive to network hiccups.
UseHardwareDecoding bool get/set Use hardware-accelerated decoding (NVDEC) when the incoming codec supports it. [default=true]. When true, video decoding runs on dedicated NVIDIA decoder silicon, freeing the CPU and typically allowing more concurrent video inputs at higher resolutions. Falls back to software decoding for codecs the card can't accelerate. See HardwareDecodingUsed to confirm which path was actually selected.
HardwareDecodingUsed string get Which decoder is currently active for the incoming stream (read-only). Reflects whether NVDEC (hardware) or a software decoder is in use. Useful from a script to confirm hardware decoding actually engaged for the incoming codec, since UseHardwareDecoding is a preference and the actual path depends on what the card supports.
FreezeFrameOptions FreezeFrameOptions get/set What to show on screen when the SRT connection is lost. Choose how the input behaves while it has no source — for example freezing on the last good frame for a configurable time, or going to black immediately. Useful for choosing between a graceful "hold on screen" look and an obvious "we lost the source" indicator.
StartListenerCommand Command get Start the SRT input.
StopListenerCommand Command get Stop the SRT input.
SrtInputStreamState SrtInputStreamState get Overall state of the SRT input (read-only). High-level state combining the connection status and buffering — typically NotStarted, Starting, Running, Stopping, or an error variant. Driven indirectly by StartListenerCommand / StopListenerCommand and AutoStart at load time. Read this from a script to decide whether the stream is live; it also drives the running indicator and the enabled state of the start/stop buttons.
ListenerStatus ListenerStatus get Detailed connection state of the underlying SRT socket (read-only). Reflects the low-level listener/caller status — for example whether the socket is listening, connecting, connected, stopping, or closed. Most scripts can use the higher-level SrtInputStreamState instead; this is mainly useful for detailed troubleshooting.
ComponentLog ComponentLog get Recent log lines from the input — connect, disconnect, restart, and error events (read-only). A short history of the most recent SRT events, useful for diagnosing why a connection failed or why the input restarted.
Width int get Width of the video frames currently being received, in pixels (read-only).
Height int get Height of the video frames currently being received, in pixels (read-only).
NumAutoReconnectsPerformed int get Total number of automatic reconnects performed since the input was started (read-only). A rapidly growing counter is a strong signal that the network path or source is unstable. Resets only on full input dispose / re-create.
SrtBufferingState NetworkBufferingState get Whether the input is currently filling its receive buffer (read-only). Buffering means the input is waiting for enough data before it starts producing frames; Streaming means it's running normally. Sustained buffering states indicate the network can't keep up with the configured SrtBufferLength.
NumPacketsReceived long get Total number of SRT packets received since the input was started (read-only, debug). Should grow steadily during healthy reception. A counter that stops moving while the input is Running is a clear sign the source has gone silent or the network path has stalled.
RenderedFramesCounter int get Total number of video frames Composer has rendered from this input since it started (read-only, debug).
IncomingVideoBitRate string get Current incoming video bitrate, formatted as a human-readable string (read-only, debug). Sampled per second from the actual bytes arriving on the SRT socket. Useful for diagnosing whether the source is delivering at its expected bitrate.
VideoAudioSync double get Difference between the most recent video and audio timestamps, in milliseconds (read-only, debug). A small steady value is normal; a value that grows or oscillates indicates A/V drift in the incoming stream.
VideoBufferSizeFrames int get Number of video frames currently buffered ahead of playback (read-only, debug).
VideoBufferSizeMs int get How much video is currently buffered ahead of playback, in milliseconds (read-only, debug). A persistently low or zero value while connected suggests the network can't keep up with real-time playback and may produce visible stalls.
AudioBufferSizeMs int get How much audio is currently buffered ahead of playback, in milliseconds (read-only, debug). A persistently low or zero value may produce audible drop-outs.
NumBufferUnderRuns int get Number of times the video or audio buffer drained to zero (read-only). Each occurrence typically lines up with a visible stall or audible drop-out. A growing counter is a strong signal the network can't keep up with the configured SrtBufferLength.
NumFlushIterations long get Number of times the input dropped its buffer because it grew too large (read-only, debug). Buffer-too-full flushes happen when the input falls too far behind real time and the buffer would exceed safe limits. Non-zero values indicate sustained back-pressure downstream of the input.
NumVideoDecodeErrors int get Total number of video decode errors observed since the input was started (read-only). Should stay at 0 during healthy reception. Non-zero values indicate corrupted packets, codec mismatches, or other decode-time problems.
NumPtsSyncFlushIterations string get Number of times the input flushed its buffer to recover audio/video sync (read-only, debug). PTS-sync flushes happen when the audio and video timestamps drift far apart and the input has to drop accumulated data to realign them. Non-zero values indicate A/V drift in the incoming stream.
NumSyncRetries int get Number of attempts the input made to realign audio and video timestamps (read-only, debug). Retries happen alongside PTS-sync flushes. A high counter suggests persistent A/V drift in the source stream.
BufferSizes Dictionary<string, object> get Per-stream buffer sizes in milliseconds, as a dictionary (read-only, debug). One entry per video and audio stream in the source, useful when troubleshooting an SRT feed that carries multiple parallel streams.
NumFlushesPerformed int get Total number of buffer flushes the input has performed since it started (read-only, debug). Aggregate counter covering all flush kinds. A high value indicates the input has been working hard to keep playback going.
Emulate200msCongestion bool get/set Diagnostic toggle that injects a 200 ms network delay so you can verify the input recovers from congestion. [default=false]. Internal testing aid — leave off in production. When enabled, the input simulates a network hiccup so the buffer-and-recovery behaviour can be observed without an actual flaky network.
PlaybackTime AVRational get Timestamp of the most recently rendered frame, relative to stream start (read-only, debug).
StreamTime TimeCode get Time elapsed since the stream started, as a time code (read-only). Counts up from 0:00:00:00 when the connection becomes live and resets on each new connection. Useful for displaying the stream's running duration.
VideoStreamInfo Dictionary<string, object> get Metadata about the incoming video stream (read-only). A dictionary with technical details about the video — codec, resolution, frame rate, bit rate, and so on. Available once the source has been negotiated.
AudioStreamInfo Dictionary<string, object> get Metadata about the incoming audio stream (read-only). A dictionary with technical details about the audio — codec, sample rate, channel count, bit rate, and so on. Available once the source has been negotiated.
CallerMode bool get Whether the input is currently running in SRT caller mode (read-only). True when ListenerAddress is configured with mode=caller (Composer reaches out to a remote SRT source). False when in mode=listener (Composer waits for a remote encoder to push the stream in).

Inherits from: AbstractInput, AbstractAudioProcessing, AbstractAudioMetering.

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