SRT Target
SRT Target properties for Script Engine. Streams the composed video and audio over SRT (Secure Reliable Transport) to any SRT-capable receiver (decoder appliance, contribution gateway, IRD, cloud ingest). SRT is the broadcast-industry standard for delivering live video over unmanaged IP networks (the public internet, 4G/5G bonded modems) — packet loss recovery and timestamping make it tolerant of glitchy links where RTMP would simply drop. Useful for studio-to-cloud contribution feeds, remote venue uplinks, point-to-point links between facilities, and any time you need a low-latency, resilient transport over the open internet. Supports up to four parallel audio program tracks for multi-language broadcasts.
| Property | Type | Access | Description |
|---|---|---|---|
AutoStart |
bool |
get/set |
When On, the SRT target connects automatically when the project loads. |
ShowAdvancedOptions |
bool |
get/set |
Reveals advanced/expert properties in the panel (encoder tuning, reconnect tuning, debug counters). Off by default. |
SrtBaseAddress |
string |
get/set |
Base SRT URL in srt://host:port form. The host can be an IP, a DNS name, or a macro: @@LocalIP() resolves to this machine's local IP, @@HostName() to the machine name. For listener mode (receiver dials in to us) typically point to 0.0.0.0. Treat as sensitive when targeting private cloud ingest. |
SrtOptions |
string |
get/set |
SRT URL query parameters appended after ?. Common keys: mode=caller\|listener, latency=200000 (microseconds — typical 120–500 ms), pkt_size=1316, passphrase=..., streamid=.... Tune latency higher for noisy links, lower for low-glass-to-glass delivery. |
SrtStreamKey |
string |
get/set |
Optional SRT stream id (also called streamid). Many cloud ingests (Haivision Hub, Wowza, Cloudflare, AWS Elemental) require this for routing — receivers identify the publisher by this string. Treat as sensitive. |
SimulateLatencyEnabled |
bool |
get/set |
Enable simulated send latency (debug/testing aid). [default=false]. When on, each outgoing frame is held on the sender thread by Simulated base latency plus a time-varying component (see Simulated latency pattern). Used to reproduce variable-latency and congested links for SRT input synchronization tests. Leave off in production. |
SimulatedBaseLatencyMs |
int |
get/set |
Constant added send delay in milliseconds when latency simulation is enabled. [min=0, max=3000, default=0]. |
SimulatedJitterMs |
int |
get/set |
Peak-to-peak latency variance in milliseconds around the base when simulation is enabled. [min=0, max=3000, default=0]. How the variance evolves over time is set by Simulated latency pattern. |
SimulatedLatencyPattern |
SrtSimulatedLatencyPattern |
get/set |
How the simulated latency evolves over time: Static, RandomWalk, Sine, or StepSchedule (steps between base and base+jitter each period — reproducible congestion events). |
SimulatedLatencyPeriodMs |
int |
get/set |
Period in milliseconds for the Sine / RandomWalk / StepSchedule latency patterns. [min=100, max=60000, default=2000]. |
SrtConnectionString |
string |
get |
The full SRT URL Composer will dial, assembled from SrtBaseAddress, SrtOptions, and SrtStreamKey (read-only). Useful for verifying the resolved URL before connecting. |
OutputVideoBitrate |
OutputVideoBitrate |
get/set |
Target video bitrate. Match this to the available uplink bandwidth and the receiver's configured input. Typical values: 3 Mbit/s for 1080p contribution, 1.5 Mbit/s for 720p, 6+ Mbit/s for high-quality contribution feeds. |
H264BFrameDistance |
H264BframeDistance |
get/set |
Number of B-frames between reference frames in each GOP. Higher values improve compression efficiency at the cost of latency and decoder compatibility — set to Zero for low-latency contribution and live broadcast. |
VideoCompressionGopSize |
VideoCompressionGopSize |
get/set |
GOP (Group of Pictures) length in frames — controls keyframe spacing. Typical values: 1x or 2x framerate (e.g. 30 or 60 frames at 30 fps). Shorter GOPs recover faster from packet loss but cost compression efficiency. |
H264Profile |
H264Profile |
get/set |
H.264 profile (baseline, main, high). baseline is most universally compatible; main/high deliver better compression at the cost of decoder support on legacy devices. |
UseAdvanceCbrConfiguration |
bool |
get/set |
When On, sends with constant bitrate (CBR) — preferred for SRT contribution because most receivers and decoder appliances expect a steady rate. When Off, the encoder uses VBR which can starve under-provisioned links. |
MaxVideoRateMultiplier |
float |
get/set |
Multiplier on the configured bitrate that limits how high the encoder is allowed to swing. Default 1.0 — increase only if your network can absorb peaks. |
MinVideoRateMultiplier |
float |
get/set |
Multiplier on the configured bitrate that sets the floor (minimum). Default 1.0 — keep at 1.0 for true CBR; lower for more freedom on simple scenes. |
BufferSizeMultiplier |
float |
get/set |
Multiplier on the encoder's rate-control buffer size. Default 1.0 — larger buffers smooth out bitrate at the cost of latency. |
H264EncodingQualitySpeed |
H264EncodingQualitySpeed |
get/set |
x264 speed/quality preset. veryfast/superfast are the right pick for live encoding — slower presets give better quality but won't keep up in real time. |
H264Tune |
H264Tune |
get/set |
x264 tuning preset. Use zerolatency for live contribution to remove any look-ahead delay from the encoder. |
H264EncodingThreads |
H264EncodingThreads |
get/set |
Number of CPU threads used by the software H.264 encoder. More threads = lower per-frame latency but higher CPU. Ignored when NVENC is enabled. |
UseNvenc |
bool |
get/set |
When On, encode using the NVIDIA hardware encoder (NVENC) — much lower CPU load and recommended for any machine with a recent NVIDIA card. When Off, fall back to the software (x264) encoder. |
UseHevc |
bool |
get/set |
When On, encode with HEVC (H.265) using NVENC instead of H.264. HEVC gives better quality per bit and is required only for SEI timecode carriage (see TimecodeCarriage); the ST 2038 transport embeds timecode with H.264 too. Implies NVENC — HEVC has no software-encoder path here, so this takes precedence over UseNvenc. |
NvencAdvancedOptions |
string |
get/set |
NVENC encoder parameters as a JSON object. Tweak only when you know what you're doing — defaults are tuned for low-latency live contribution. Keys map directly to NVENC options (preset, rc, gpu, delay, etc.). |
EmbedTimecode |
bool |
get/set |
When On, embed an SMPTE timecode into the outgoing stream so a downstream SRT input — or any receiver — can read it back. The carriage is chosen by TimecodeCarriage: video SEI (requires HEVC) or a codec-agnostic SMPTE ST 2038 ancillary stream. With SEI and a non-HEVC codec a warning is logged and no timecode is sent. |
TimecodeCarriage |
TimecodeTransport |
get/set |
How the embedded timecode is carried: in-stream video SEI (HEVC only) or a separate SMPTE ST 2038 ancillary-data stream (codec-agnostic — works with H.264 — and readable without software video decoding). Only used when EmbedTimecode is On. |
TimecodeStartTime |
TimecodeStartMode |
get/set |
Where the embedded timecode starts counting from when streaming begins (the first written frame): 00:00:00:00, or the wall-clock time of day. Only used when EmbedTimecode is On. How closely Time of day then keeps up with the clock depends on the project frame rate: at 24 / 25 / 30 / 50 / 60 it is exact; at 29.97 / 59.94 it is correct to within about 70 ms, because drop-frame counting corrects in two-frame steps once a minute; at 23.98 it cannot track the clock at all and runs about 0.1% slow (roughly 43 seconds behind by midday, 86 seconds by the end of the day), because timecode labels 24 frames per second of 23.98 material and SMPTE defines no drop-frame scheme for that rate. At 23.98 the value is a running counter, not a clock reading. |
SrtAudioChannelOneEncoder |
SrtAudioEncoder |
get/set |
AAC encoder mode for audio program 1 (mono, stereo, or unused). Set to Unused to skip this audio program. Program 1 is normally the main mix. |
SrtAudioChannelOneMapping |
AudioChannelMapping |
get/set |
Selects which scene audio channel pair is encoded into program 1 (e.g. OneTwo, ThreeFour). Use this to route specific scene channels to specific SRT programs — typically 1+2 for the main mix. |
SrtAudioChannelOneBitRate |
AacBitRate |
get/set |
AAC bitrate for audio program 1. Typical values: 128 kbit/s for stereo broadcast, 64 kbit/s for mono commentary. |
SrtAudioChannelOneLanguage |
string |
get/set |
ISO 639 language tag (e.g. eng, spa, fra) embedded in program 1's metadata. Player UIs use this to label the audio track in language pickers. |
SrtAudioChannelTwoEncoder |
SrtAudioEncoder |
get/set |
AAC encoder mode for audio program 2. Set to Unused if you only need a single audio program. Otherwise pick mono/stereo to suit the source mix. |
SrtAudioChannelTwoMapping |
AudioChannelMapping |
get/set |
Scene audio channel pair routed to program 2. Often used for an alternate-language commentary feed (e.g. channels 3+4). |
SrtAudioChannelTwoBitRate |
AacBitRate |
get/set |
AAC bitrate for audio program 2. |
SrtAudioChannelTwoLanguage |
string |
get/set |
ISO 639 language tag for program 2 (e.g. spa for Spanish). |
SrtAudioChannelThreeEncoder |
SrtAudioEncoder |
get/set |
AAC encoder mode for audio program 3. Set to Unused if not needed. |
SrtAudioChannelThreeMapping |
AudioChannelMapping |
get/set |
Scene audio channel pair routed to program 3 (e.g. channels 5+6). |
SrtAudioChannelThreeBitRate |
AacBitRate |
get/set |
AAC bitrate for audio program 3. |
SrtAudioChannelThreeLanguage |
string |
get/set |
ISO 639 language tag for program 3. |
SrtAudioChannelFourEncoder |
SrtAudioEncoder |
get/set |
AAC encoder mode for audio program 4. Set to Unused if not needed. |
SrtAudioChannelFourMapping |
AudioChannelMapping |
get/set |
Scene audio channel pair routed to program 4 (e.g. channels 7+8). |
SrtAudioChannelFourBitRate |
AacBitRate |
get/set |
AAC bitrate for audio program 4. |
SrtAudioChannelFourLanguage |
string |
get/set |
ISO 639 language tag for program 4. |
WarnOnLowAverageBitrate |
bool |
get/set |
When On, raise a warning if the outgoing bitrate falls below 10% of the configured target — usually a sign the encoder is starving or the network is congested. |
ReconnectInterval |
ReconnectInterval |
get/set |
How long to wait between reconnect attempts after a dropped SRT connection. Five seconds is a sensible default. |
MaxOutputQueueSize |
int |
get/set |
Maximum number of encoded packets queued for the network before back-pressure triggers. [min=150, max=500, default=150]. Larger queues hide brief network slowdowns at the cost of added latency. |
OutputBufferAllowFrameSkipping |
bool |
get/set |
When On, allow Composer to drop frames if the output queue fills up — preserves stream continuity on a slow link at the cost of brief visual stutter. |
UseAlternateConnectionMode |
bool |
get/set |
Use the alternate (newer) SRT connection path. Default On — only switch off if instructed by support to fall back to legacy behaviour. |
LogBitrateToDisk |
bool |
get/set |
When On, write per-second bitrate samples to a CSV on disk for post-mortem analysis (read-only, debug). Use only when troubleshooting. |
ConnectionStatus |
ConnectionStatus |
get |
Current SRT connection status (Disconnected, Connecting, Connected, Reconnecting). Read-only. Useful in scripts to gate downstream actions on a live link. |
StartCommand |
Command |
get |
Connects to the SRT receiver (or starts listening for a caller in listener mode) and begins streaming. |
StopCommand |
Command |
get |
Stops the encoder and tears down the SRT connection. |
ReconnectCommand |
Command |
get |
Forces an immediate reconnect of the live SRT connection without stopping the target. API-only and hidden from the UI; invoke via /api/invokecommand with command ReconnectCommand. Only executable while connected. |
ComponentLog |
ComponentLog |
get |
In-panel mini-log of recent connection events, warnings, and errors. Quick way to see what the SRT writer last reported without opening the full log file. |
UpTimeSinceStart |
string |
get |
How long this target has been streaming, formatted as HH:MM:SS (read-only). |
OutgoingBitRate |
string |
get |
Current outgoing bitrate as a human-readable string (e.g. "3.0 Mbit/s"). Read-only. Use to verify the stream is actually pushing data over the wire. |
MinilogTime |
DateTime |
get |
Timestamp of the most recent log entry (read-only). |
AudioChannelUsed |
string |
get |
Summary of how many audio programs the encoder has bound (read-only). Useful in scripts to confirm the multi-language setup is active. |
NumInitialReconnects |
long |
get |
Number of reconnect attempts before the very first successful connect (read-only, debug). High counts indicate the receiver was slow to come up. |
NumAutoReconnectsperformed |
int |
get |
Number of automatic reconnects since the target started (read-only). A growing number means the link is unstable — check network or receiver logs. |
CurrentSrtEndPoint |
string |
get |
The fully resolved SRT URL Composer is currently dialling, with all macros (@@LocalIP(), @@HostName()) expanded (read-only). |
ErrorCount |
int |
get |
Cumulative count of errors logged since the target started (read-only). Pair with LastErrorDateTime in scripts to flag fresh errors. |
LastErrorDateTime |
DateTime |
get |
Timestamp of the most recent error (read-only). |
WarningCount |
int |
get |
Cumulative count of warnings since the target started (read-only). |
LastWarningDateTime |
DateTime |
get |
Timestamp of the most recent warning (read-only). |
Inherits from: AbstractTarget, NamedModel.
See also: SRT Target in Targets — user-facing introduction, screenshots, and section summaries.