SRT Target 16 channel audio

SRT Target

Introduction

The SRT Target streams the composed scene out over SRT (Secure Reliable Transport) — the broadcast-industry standard for delivering live video and audio over unmanaged IP networks. SRT layers packet-loss recovery, retransmission, and accurate timestamping on top of UDP, so a feed survives the kind of packet drop and jitter that would simply collapse an RTMP stream. It's the right pick for any link that crosses the public internet, a 4G / 5G uplink, or any other network you don't fully control.

The target supports both connection directions, multi-program audio for multi-language broadcasts, the same x264 / NVENC encoder paths as the RTMP Target, and a deep set of resilience and diagnostic controls. To consume an SRT stream produced by another Composer (or any third party), pair this target with the SRT Input.

Why SRT (and when to reach for it)

SRT is purpose-built for live contribution over networks Composer doesn't own. Pick it over RTMP when any of these apply:

  • The link crosses the public internet — bonded mobile modems, hotel WiFi, distant VPN tunnels. SRT's loss recovery keeps the feed up where RTMP would drop within seconds.
  • You need low, bounded latency. SRT lets you configure a fixed end-to-end latency budget (typically 120–500 ms); the receiver waits exactly that long for retransmits before delivering the frame, so the glass-to-glass delay stays predictable even when the network gets noisy.
  • Encryption is required. SRT supports AES-128 / AES-256 encryption out of the box via a passphrase URL parameter — no TLS terminator or VPN required.
  • You need multiple language programs in one stream. SRT carries up to four parallel AAC audio programs in a single MPEG-TS payload; downstream players pick the program by language tag.

For a stable studio-LAN delivery to a CDN ingest, RTMP is still simpler. For everything else outside the studio, SRT is the safer bet.

Common use cases

  • Studio-to-cloud contribution — push a composed programme feed from a production facility into a cloud encoder / decoder for further distribution.
  • Remote venue uplinks — a stand at a sports venue, conference, or outside-broadcast truck pushing back to base over a public network or 4G/5G bond.
  • Point-to-point links between facilities — two Composer instances (or a Composer and a hardware decoder) glued together over the open internet without provisioning dedicated lines.
  • Multi-language broadcasts — encode the source plus multiple commentary tracks as separate AAC programs so a single SRT stream covers every audience.
  • Resilient backup feeds — run the SRT Target in parallel with an RTMP Target so a network blip doesn't take the whole programme off air.

What you can control

Connection — caller, listener, and encryption

  • Server address — base SRT URL in srt://host:port form. The host is the remote endpoint when running in caller mode, or the local listening interface when running in listener mode.
  • Connection options — query string appended after ?. Common keys:
    • mode=caller (Composer dials the receiver) or mode=listener (Composer waits for the receiver to dial in).
    • latency=200000 (microseconds — typical 120–500 ms; raise on noisy links).
    • pkt_size=1316 (default; aligns with the standard MPEG-TS-over-UDP MTU).
    • passphrase=... (turns on AES encryption).
    • streamid=... (stream identifier — many cloud SRT ingests require this).
  • Stream id — the same streamid value can be entered in its own field for ingest endpoints that prefer a separate parameter.
  • Connection string — read-only readout of the fully resolved SRT URL Composer is dialling, useful for verifying that base + options + stream id assembled into the URL the receiver expects.
  • Autostart — when enabled, the target connects (or starts listening) automatically when the project loads.

Video encoding

The SRT Target shares its video-encoder pipeline with the RTMP Target — two paths, mix-and-match across multiple instances:

  • x264 (CPU) — software H.264 with the standard set of speed/quality presets, tuning profiles, and thread-count control. zerolatency tune is the right default for SRT contribution.
  • NVENC (GPU) — hardware H.264 on dedicated NVIDIA encoder silicon. Doesn't compete with the GPU's general compute (so the rest of the pipeline keeps its budget) and substantially lowers CPU load. The full advanced NVENC parameter block is editable as a JSON object for power users.
  • HEVC (H.265) via NVENC — enable Use HEVC (H.265) via NVENC for better quality per bit than H.264. HEVC here always uses NVENC. It's also required if you embed timecode as video SEI, though the SMPTE ST 2038 timecode option works with any codec (see Timecode below).
  • Bitrate, GOP, B-frames, profile — every standard H.264 knob is exposed, with sensible SRT-friendly defaults (CBR, baseline profile, GOP at 2× framerate, no B-frames).
  • CBR rate-control with min/max multipliers — SRT receivers prefer constant bitrate; the multipliers let you cap how far above or below the target the encoder is allowed to wander when pure CBR is too restrictive.

Timecode

The SRT Target can embed an SMPTE timecode in the outgoing stream so a downstream SRT Input — or any receiver that understands stream timecode — can read it back frame-accurately. Turn on Embed timecode, then choose how it travels with Timecode transport:

  • Video SEI (HEVC only) — the timecode rides inside the H.265 video as SMPTE S12M SEI. This requires Use HEVC (H.265) via NVENC, and the receiver has to decode the video to recover it.
  • SMPTE ST 2038 ancillary — the timecode travels as a separate ancillary-data stream alongside the video. It's codec-agnostic (works with H.264 as well as HEVC), it's the broadcast-standard carriage that third-party SRT decoders expect, and the receiver can read it back without software-decoding the video — so the SRT Input keeps hardware decoding on.

Timecode start sets where counting begins:

  • 00:00:00:00 — the timecode starts at zero when the stream connects.
  • Time of day — the timecode is seeded from the wall-clock time of day at connect, then counts up frame by frame from there. It is not re-read from the clock on later frames.

How closely Time of day keeps up with the clock after that depends on the project frame rate, and the difference is large enough to matter on a long stream:

Project frame rate How well the timecode tracks the clock
24, 25, 30, 50, 60 Exact, indefinitely.
29.97, 59.94 Correct to within about 70 ms. Drop-frame counting corrects in two-frame steps once a minute, so the reading sits slightly either side of true between corrections.
23.98 Does not track the clock. It runs about 0.1 % slow — roughly 43 seconds behind by midday and 86 seconds by the end of the day.

At 23.98 this is inherent to SMPTE timecode, not a setting you can change: timecode labels 24 frames for every second of 23.98 material, and there is no drop-frame scheme defined for that rate to make up the difference. Treat a Time of day timecode at 23.98 as a running counter rather than a clock reading — the target says as much in its log when the stream starts — and pick an integer project frame rate if downstream equipment needs the timecode to agree with the clock.

If Embed timecode is on with Video SEI selected but a non-HEVC codec is in use, the target logs a warning on connect and streams without timecode — switch Timecode transport to SMPTE ST 2038 or enable HEVC.

Multi-program audio (up to four AAC programs)

This is where the SRT Target goes beyond RTMP. The target encodes up to four parallel AAC programs into a single SRT stream, each independently configured:

  • Encoder mode per program — Mono, Stereo, or Unused. Set the slot to Unused to disable that program entirely.
  • Channel mapping per program — pick which pair of the 8-channel scene audio bus feeds this program (channels 1/2, 3/4, 5/6, or 7/8). Lets you carry, e.g., the international feed on channels 1/2 and a per-language commentary mix on each remaining pair.
  • AAC bitrate per program — typical 128 kbit/s for stereo, 64 kbit/s for mono.
  • Language tag per program — ISO 639 language code (e.g. eng, spa, fra, deu) embedded in the MPEG-TS so a downstream player can offer language selection.

The result is a single SRT contribution stream that carries the programme video plus a multi-language audio bouquet, ready for separate downstream distribution.

Resilience and diagnostics

  • Auto-reconnect — configurable retry interval after a dropped connection. Keeps the target trying through transient outages without operator intervention.
  • Output queue size cap — bounds how many encoded packets are queued for the network. A persistently full queue indicates the uplink can't keep up with the encoder.
  • Frame-skipping policy — when on, lets Composer drop frames when the queue overflows rather than letting end-to-end latency grow unbounded.
  • Per-second bitrate logging — optional CSV trace of outgoing bitrate samples for after-the-fact analysis of network behaviour.
  • Live diagnostics — outgoing bitrate, video encode time (last/avg/max), network write time, video frame size statistics, output queue depth, reconnect count, error/warning counters with timestamps. All surfaced as readable properties; useful in both the property panel and over the HTTP API / WebSockets.
  • Low-bitrate warning — fires automatically if the actual outgoing bitrate falls below 10% of the configured target, catching a network collapse before the operator notices visually.

Listener-mode workflow

When mode=listener is set, Composer binds to the configured port and waits for an SRT receiver to dial in (the inverse of the more common caller-mode pattern). Useful when:

  • The receiver lives behind a firewall that doesn't allow inbound connections from Composer's network, but Composer's network does allow inbound connections.
  • A floating set of receivers needs to pull from a single Composer source on demand.
  • You want to validate a stream locally with ffplay or srt-live-transmit before hooking up the real receiver.

SRT Target 16 channel audio - Settings

General
Property Description
Autostart when application starts When On, the SRT target connects automatically when the project loads.
Show advanced options Reveals advanced/expert properties in the panel. Off by default.

Addresses

Addresses — SRT URL components and the assembled connection string.

Addresses
Property Description
Server address (srt://ip:port) Base SRT URL in srt://host:port form. Supports @@LocalIP() and @@HostName() macros. Treat as sensitive when targeting private cloud ingest.
Options (latency etc) 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.
Stream id (optional) Optional SRT stream id (also called streamid). Many cloud ingests require this for routing — receivers identify the publisher by this string. Treat as sensitive.
Connection string The full SRT URL Composer will dial (read-only).

Video encoder configuration

Video encoder configuration — bitrate, codec settings, NVENC vs CPU H.264.

Video encoder configuration
Property Description
Video bitrate Target video bitrate. Match this to the available uplink bandwidth and the receiver's configured input.
H264 B frame distance (advanced) Number of b-frames used in a GOP
H264 Gop size (advanced) GOP (Group of pictures) length in frames. Typically this is 2x or 1x the framerate.
H264 profile (advanced) H264 profile
Use CBR configuration (advanced) Use CBR configuration
Max video rate (multiplier) (advanced) Max video rate (multiplier)
Min video rate (multiplier) (advanced) Min video rate (multiplier)
Buffer size (multiplier) (advanced) Buffer size (multiplier)
Quality/Speed control (advanced) Quality/Speed control
Tune (advanced) Encoder tuning (H264).
H264 threads (advanced) Number of CPU threads used for encoding
Use NVENC as video encoder (advanced) Use NVENC as video encoder (GPU)
Use HEVC (H.265) via NVENC (advanced) 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.
Advanced options (json) (advanced) Advanced options (json)

Timecode

Timecode — embed an SMPTE timecode in the outgoing stream and choose how it is carried.

Timecode
Property Description
Embed timecode (advanced) 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.
Timecode transport (advanced) 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.
Timecode start (advanced) 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.

Audio encoders configuration

Audio encoders configuration — programs 1–4, sourced from the scene's main audio bus.

Audio encoders configuration
Property Description
Audio channel one encoder Audio channel one encoder
Audio channel one mapping Audio channel one mapping
Audio channel one bitrate Audio channel one bitrate
Audio channel one language description Audio channel one language description
Audio channel two encoder Audio channel two encoder
Audio channel two mapping Audio channel two mapping
Audio channel two bitrate Audio channel two bitrate
Audio channel two language description Audio channel two language description
Audio channel three encoder Audio channel three encoder
Audio channel three mapping Audio channel three mapping
Audio channel three bitrate Audio channel three bitrate
Audio channel three language description Audio channel three language description
Audio channel four encoder Audio channel four encoder
Audio channel four mapping Audio channel four mapping
Audio channel four bitrate Audio channel four bitrate
Audio channel four language description Audio channel four language description

Additional audio encoders configuration

Additional audio encoders configuration — programs 5–8, each sourced from a separate Audio Channel Strip input rather than the scene's main audio bus.

Property Description
Audio channel five strip source Audio Channel Strip input that feeds program 5. Set to a scene strip to route an isolated mix (e.g. clean feed, IFB return, alternate-language mic) into this SRT audio program.
Audio channel five encoder AAC encoder mode for audio program 5. Set to Unused to skip.
Audio channel five bitrate AAC bitrate for audio program 5.
Audio channel five language description ISO 639 language tag for program 5 (e.g. eng, spa, fra).
Audio channel six strip source Audio Channel Strip input that feeds program 6.
Audio channel six encoder AAC encoder mode for audio program 6.
Audio channel six bitrate AAC bitrate for audio program 6.
Audio channel six language description ISO 639 language tag for program 6.
Audio channel seven strip source Audio Channel Strip input that feeds program 7.
Audio channel seven encoder AAC encoder mode for audio program 7.
Audio channel seven bitrate AAC bitrate for audio program 7.
Audio channel seven language description ISO 639 language tag for program 7.
Audio channel eight strip source Audio Channel Strip input that feeds program 8.
Audio channel eight encoder AAC encoder mode for audio program 8.
Audio channel eight bitrate AAC bitrate for audio program 8.
Audio channel eight language description ISO 639 language tag for program 8.

Options

Options — output buffering, reconnect tuning, alternate connection mode.

Options
Property Description
Warn on low average bitrate (<10%) (advanced) Warn on low average bitrate (
Reconnect Interval (advanced) Reconnect Interval
Max output queue size (packets) (advanced) Max output queue size (packets)
Allow frame skipping (advanced) Allow frame skipping on output queue size warnings.

Status

Status — connection state, start/stop, log feed, error/warning counters.

Status
Property Description
ConnectionStatus Current connection status
Start Starts the encoder and the SRT stream
Stop Stops the encoder and the SRT stream
Reconnect 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.
Log Mini-log messages
Uptime since start Uptime since start
Outgoing bitrate Outgoing bitrate
SRT message time SRT message time
Number of audio channels used Audio Channel used

Performance and properties

Performance and properties — bitrate stats, queue sizes, encoder/network timings.

Performance and properties
Property Description
Number of reconnects Number of reconnects
Current SRT endpoint Current SRT endpoint
Error counter Error counter
Last Error DateTime Last Error date and time
Warning counter Warning counter
Last Warning DateTime Last warning date and time

Inherits from: AbstractTarget, NamedModel.

See also: SRT Target 16 channel audio in Script Engine Objects.

  • SRT input — the receiver-side counterpart. Use it when Composer consumes an SRT stream rather than producing one.
  • SRT Target — 16 channel audio — variant for projects whose audio bus is wider than 8 channels; same protocol surface, extended channel mapping.
  • RTMP Target — pick this when the destination is a managed-network ingest (CDN, RTMP origin, third-party live platform); simpler protocol, less robust on bumpy links.
  • RTMP input — the RTMP receiver-side for ingesting an RTMP stream.
  • MoQ Target — pick this for publishing into the Vindral CDN over MoQ for sub-second latency, in place of an SRT receiver.
  • MoQ input — the MoQ receiver-side for ingesting from a Vindral CDN channel.
  • NDI Target — pick this for studio-LAN publishing; mDNS auto-discovery and lower latency than SRT, but not designed to traverse the public internet.
  • NDI input — the NDI receiver-side for studio-LAN contribution.