The SRT Input component receives video and audio streams over the Secure Reliable Transport (SRT) protocol. It supports both listener mode (waiting for incoming connections) and caller mode (actively connecting to a remote SRT source).
The component is based on libraries from the FFmpeg application family and supports both CPU-based decoding and GPU-based decoding (NVDEC). For optimal performance, NVDEC hardware decoding is enabled by default.
Using the NVDEC decoder (GPU) requires an NVDEC-compatible GPU. Most NVIDIA GPUs support NVDEC, but capabilities differ. Refer to NVIDIA's support matrix for details:
https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new
.png)
The standard SRT Input supports up to 8 audio channels (4 stereo pairs).
If your incoming SRT stream contains more than 8 audio channels, use SRT Input 16 Channel, which supports up to 16 channels (8 stereo pairs) and additional audio routing options.
👉 See: SRT Input 16 Channel documentation
Overview
The SRT Input component provides automatic reconnection handling and comprehensive buffering controls for optimal stream stability. SRT is designed for low-latency, high-quality video transmission over unpredictable networks, making it ideal for live production workflows.
Multi-Channel Audio Support
When an SRT Input is added to the project, Composer automatically creates three additional CH AUD (Channel Audio) inputs for handling multi-channel audio:
.png)
| Input | Stereo Pair | Audio Channels |
|---|---|---|
| SRT Input (main) | 1 | Channels 1-2 |
| CH AUD - CH 2 | 2 | Channels 3-4 |
| CH AUD - CH 3 | 3 | Channels 5-6 |
| CH AUD - CH 4 | 4 | Channels 7-8 |
These extracted audio channels allow you to independently control and route each stereo pair in the audio mixer. The CH AUD inputs are bound to their parent SRT Input and cannot be deleted independently.
Configuration
| Property | Description | Default |
|---|---|---|
| Show Advanced Options | Toggles the visibility of advanced configuration options. | No |
| Load Template | A dropdown that provides quick-start configurations: (empty) - no changes applied, Localhost:9000, caller - configures caller mode on @@LocalIP() port 9000, Localhost:9000, listener - configures listener mode on @@LocalIP() port 9000. |
(empty) |
| Server Address | The SRT connection URL that defines how the component connects to or listens for streams. Must include mode=caller or mode=listener. See examples below. |
srt://0.0.0.0:[port]?mode=listener&latency=200000 |
| Start When Loaded | When enabled, the SRT Input automatically begins connecting or listening when the project is loaded. | Enabled |
| Restart on Timeouts and Errors | When enabled, the component automatically attempts to reconnect if the stream disconnects, times out, or encounters an error. | Enabled |
| Warn of Buffer Under Run | When enabled, the component logs a warning message whenever the video or audio buffer becomes empty during playback. | Disabled |
| Buffer Length (ms) (Advanced) | Controls the size of the media buffer: • Short, 100 ms - ultra-low latency • Medium, 200 ms - balanced • Long, 400 ms - higher stability • Very long, 600 ms - maximum stability |
Medium, 200 ms |
| Use Hardware Decoding (NVDEC) | Enables GPU-accelerated video decoding using NVIDIA's NVDEC technology. Requires compatible NVIDIA GPU with updated drivers. | Enabled |
| Hardware Decoding Active | Indicates whether hardware decoding (NVDEC) is currently being used for the active stream. Read-only. | — |
| Freeze Frame on Lost Connection (Advanced) | Controls output behavior when connection is lost: • Never (immediate black output) - outputs black immediately • Freeze last frame for 1 second • Freeze last frame for 3 seconds • Freeze last frame for 5 seconds • Freeze last frame forever - holds indefinitely until reconnected or manually disconnected |
Never (immediate black output) |
Server Address Format
srt://[host]:[port]?[parameters]
Required parameters:
mode=callerormode=listener- Specifies the connection mode
Common optional parameters:
streamid=[name]- Stream identifier for routing on SRT serverslatency=[microseconds]- SRT latency setting (default: 200000 = 200ms)passphrase=[password]- Enables AES encryption for secure connections (10-79 characters)
Examples:
Caller mode (connecting to a remote server):
srt://srt.example.com:9000?streamid=mystream&mode=caller&latency=200000
Listener mode (waiting for incoming connections):
srt://0.0.0.0:9000?mode=listener&latency=200000
Secure connection with passphrase:
srt://srt.example.com:9000?mode=caller&latency=200000&passphrase=MySecretPassword123
When using a passphrase, both the sender and receiver must use the same passphrase to establish a connection. The passphrase enables AES encryption, protecting your stream from unauthorized access. The passphrase must be between 10 and 79 characters.
Dynamic Placeholders
The Server Address supports dynamic placeholders that are resolved at connection time:
| Placeholder | Description |
|---|---|
@@LocalIP() |
Replaced with the local machine's IP address |
@@HostName() |
Replaced with the local machine's hostname |
Example using a placeholder:
srt://@@LocalIP():9000?mode=listener&latency=200000
Commands
| Command | Description |
|---|---|
| Connect | Initiates the SRT connection based on the configured Server Address. In caller mode, this connects to the remote server. In listener mode, this begins listening for incoming connections. |
| Disconnect | Terminates the active SRT connection and stops receiving data. |
Connection State
SRT Input State
Displays the current operational state of the component:
| State | Description |
|---|---|
| Not started | The connection has not been initiated |
| Calling... | Caller mode is active and attempting to connect to the remote server |
| Listening... | Listener mode is active and waiting for an incoming connection |
| Receiving data | Successfully connected and receiving stream data |
| Disconnected | The connection has been disconnected |
| Stopping... | The connection is being terminated |
| Error | An error has occurred (check the Log for details) |
Connection Status (Advanced)
Shows the internal connection state machine status. This provides more detailed state information than SRT Input State.
| Status | Description |
|---|---|
| Idle | Connection not started |
| Start requested | Connection start has been requested |
| Starting | Connection is starting |
| Started | Connection has started successfully |
| Error | An error occurred while starting |
| TimeOut | Timed out while waiting for client |
| Stopping | Connection is stopping |
Log
A log panel displaying status messages, warnings, and errors from the component. Messages include connection status updates, stream information, and any issues encountered during operation.
Performance and Properties
| Property | Description | Default |
|---|---|---|
| Width | The width of the incoming video stream in pixels. Read-only. | — |
| Height | The height of the incoming video stream in pixels. Read-only. | — |
| # Automatic Reconnects | A counter showing how many times the component has automatically reconnected since the last manual connect. This is useful for monitoring connection stability over time. | 0 |
| Buffering State (Advanced) | Indicates the current buffering status: None - not connected or not buffering, Buffering - accumulating data in the buffer before playback begins, Buffered - buffer is filled and playback is active. | None |
| # Buffer Under-runs | Counter of buffer under-run events since the connection was established. Frequent under-runs may indicate network issues or insufficient buffer size. | 0 |
| # Video Decode Errors (Advanced) | The number of video decoding errors that have occurred. Read-only. | 0 |
Playback Statistics
| Property | Description | Default |
|---|---|---|
| Stream Time | Displays the current playback position within the stream as a timecode. | 0:00:00:00f |
Stream Statistics (Advanced)
| Property | Description | Default |
|---|---|---|
| Video Stream Info | Displays technical details about the incoming video stream, including codec, resolution, and frame rate information. | — |
| Audio Stream Info | Displays technical details about the incoming audio stream, including codec, sample rate, and channel configuration. | — |
| Caller Mode Active | Indicates whether the component is operating in caller mode (true) or listener mode (false), based on the current Server Address configuration. | — |
Icon (Advanced)
| Property | Description | Default |
|---|---|---|
| Icon Text | Text displayed on the input's icon in the inputs list. | SRT |
Audio Mixer (Advanced)
| Property | Description | Default |
|---|---|---|
| Hide in Audio Mixer | Hides and removes the input from the Audio Mixer view in the Composer GUI without disabling its audio. | Disabled |
Render Options (Advanced)
Invisible (Do not render in scene)
When enabled, the input will not be rendered in any layer, in any scene.
Default: Disabled
Do Not Render Input
Select how the "Do not render input" setting should be controlled.
| Option | Description |
|---|---|
| Let Composer decide | Composer automatically decides whether the input should be rendered, based on the active Scene and if Render Tuning is enabled |
| Manual Configuration | Allows you to manually control rendering behavior using the toggle below |
Default: Let Composer decide
When set to Manual Configuration, a toggle appears allowing you to switch between Render and Do not render. Disabling rendering can reduce system load in some use cases.
Default: Render
Optional TAGS
TAGS
Assign custom tags to the input for classification and organization. Use the Smart Search feature to search for tagged content.
Default: (empty)
Extracted Audio Channels (CH AUD)
When an SRT Input is added, Composer automatically creates separate CH AUD (Channel Audio) inputs for each stereo pair. These extracted audio channels allow you to independently control and route each stereo pair in the audio mixer.
.png)
These audio inputs are auto-generated and bound to their parent SRT Input. They cannot be deleted independently - they are removed automatically when the parent SRT Input is deleted.
Show Advanced Options
Toggles the visibility of advanced configuration options.
Default: No
Parent SRT Input
Information
Displays: "Autogenerated audio input connected to a specific SRT Input."
Input Name
The name of the parent SRT Input that this audio channel is extracted from. Read-only.
Extracted Stereo Pair (1-4)
Indicates which stereo pair this channel extracts from the source audio stream:
| Value | Channels |
|---|---|
| 2 | Channels 3-4 |
| 3 | Channels 5-6 |
| 4 | Channels 7-8 |
Optional TAGS
TAGS
Assign custom tags to the extracted audio input for classification and organization.
Default: (empty)
Debug Properties
Debug Properties
Note: These properties are only visible when debug options are enabled in the application settings.
# Packets Received
Total number of SRT packets received since the connection was established.
# Rendered Frames Counter
Total number of frames rendered since the connection was established.
Incoming Video Bitrate
Displays the incoming video stream bitrate.
Audio Video Sync (ms)
The current synchronization offset between video and audio streams in milliseconds. Values close to zero indicate good synchronization.
Video Buffer Size (frames)
Number of decoded video frames currently held in the buffer.
Video Buffer Size (ms)
Duration of video content currently held in the buffer, in milliseconds.
Audio Buffer Size (ms)
Duration of audio content currently held in the buffer, in milliseconds.
# Buffer Too Full Flushes Performed
Number of times the buffer was flushed due to being too full.
# pts Sync Flushes Performed
Number of times the component has performed PTS (Presentation Timestamp) synchronization flushes.
# Pts Sync Retries
Number of PTS synchronization retry attempts.
Streams Buffer Sizes (ms)
Detailed breakdown of buffer sizes for each individual stream (useful for multi-audio-track streams).
# Flushes Performed
Total number of buffer flush operations performed.
Emulate 200ms Congestion
Debug option to simulate network congestion with a 200ms delay. Useful for testing buffer behavior under network stress.
Timestamp Since Start
Internal playback timestamp used for synchronization.
Example: Receiving SRT from OBS Studio
- In OBS Studio, go to Settings > Stream
- Set Service to Custom
- Set Server to:
srt://[composer_ip]:9000?mode=caller&latency=200000 - In Vindral Composer, configure the SRT Input:
- Set Server Address to:
srt://0.0.0.0:9000?mode=listener&latency=200000 - Click Connect
- Set Server Address to:
- Start streaming in OBS Studio
For a secure connection, add the same passphrase to both:
- OBS Server:
srt://[composer_ip]:9000?mode=caller&latency=200000&passphrase=YourSecretPass - Composer Server Address:
srt://0.0.0.0:9000?mode=listener&latency=200000&passphrase=YourSecretPass
Example: Receiving SRT from FFmpeg
To send a test stream to the SRT Input using FFmpeg:
ffmpeg -re -i input.mp4 -c:v libx264 -c:a aac -f mpegts "srt://[composer_ip]:9000?mode=caller&latency=200000"
For a secure connection with passphrase:
ffmpeg -re -i input.mp4 -c:v libx264 -c:a aac -f mpegts "srt://[composer_ip]:9000?mode=caller&latency=200000&passphrase=YourSecretPass"
Replace [composer_ip] with the IP address of the machine running Vindral Composer.
In Vindral Composer, configure the SRT Input:
- Set Server Address to:
srt://0.0.0.0:9000?mode=listener&latency=200000 - For secure connections, add the same passphrase:
srt://0.0.0.0:9000?mode=listener&latency=200000&passphrase=YourSecretPass - Click Connect
Stream Requirements
Video
- The incoming stream frame rate must match the Vindral Composer project frame rate
- Supported color spaces are converted automatically; unsupported formats will generate an error
Audio
- Only AAC audio codec is supported
- Multiple audio tracks are supported and will be combined into a multi-channel output
- Each stereo pair from the source becomes two channels in the combined output
Troubleshooting
Connection fails immediately
- Verify the Server Address format includes
srt://, a valid host/port, andmode=callerormode=listener - Ensure the port is not blocked by firewalls
- For caller mode, verify the remote server is running and accessible
Connection fails with passphrase
- Ensure both sender and receiver use the exact same passphrase (case-sensitive)
- Verify the passphrase is between 10 and 79 characters
- Check that both sides have the passphrase parameter configured
Stream connects but no video appears
- Check that the source stream frame rate matches your project frame rate
- Verify the video codec is supported
- Check the Log for color space errors
Audio issues or no audio
- Confirm the source is encoding audio as AAC
- Check the Audio Stream Info for detected audio tracks
- Verify audio is not muted in the channel mixer
Frequent buffer under-runs
- Increase the Buffer Length setting to a higher value
- Check network connectivity and bandwidth
- Consider using a wired network connection instead of WiFi
High CPU usage
- Enable Use Hardware Decoding (NVDEC) if you have an NVIDIA GPU
- Verify Hardware Decoding Active shows the decoder is in use when connected
- Update your NVIDIA drivers if hardware decoding is not activating