Skip to main content
← Back to Quickstart Guides

SRT Streaming

Secure Reliable Transport for professional broadcasting

15 minutes
Intermediate
Professional Grade
Error Correction
AES-256
50K+
Active SRT Connections
99.97%
Delivery Reliability
<100ms
Typical Contribution Latency
200+
Edge Ingest Locations

SRT Key Features

Why professionals choose SRT for contribution workflows

Forward Error Correction (FEC)

Automatically recovers lost packets without retransmission, maintaining stream quality over lossy networks

AES-128/256 Encryption

End-to-end encryption protects your content from interception during transmission

Configurable Latency

Balance between latency (120ms-8000ms) and reliability based on network conditions

Automatic Retransmission (ARQ)

Intelligent packet retransmission for reliable delivery without buffer bloat

NAT Traversal

Caller/listener/rendezvous modes for flexible connection establishment behind firewalls

Bandwidth Adaptation

Real-time bandwidth estimation and congestion control for stable streaming

SDK Implementation Guide

Complete SRT integration with language-specific examples

import { WaveClient } from '@wave/sdk';

const wave = new WaveClient({ apiKey: 'wave_live_xxxxx' });

// Create SRT endpoint with full configuration
const endpoint = await wave.srt.createEndpoint({
  name: 'Production SRT Feed',
  streamId: 'str_abc123xyz',
  latencyMs: 2000,
  encryption: {
    enabled: true,
    keyLength: 256, // AES-256
    passphrase: process.env.SRT_PASSPHRASE,
  },
  settings: {
    connectionMode: 'listener',
    maxBandwidthMbps: 25,
    fec: {
      columns: 10,
      rows: 10,
      layout: 'staircase',
    },
    congestionControl: 'live', // or 'file'
    tlpktdrop: true, // Drop packets instead of retransmit beyond latency
    nakreport: true, // Enable NAK reports
  },
  failover: {
    enabled: true,
    backupEndpoints: ['srt_backup_001', 'srt_backup_002'],
    switchThresholdMs: 5000,
  },
});

console.log('SRT Endpoint created:', {
  id: endpoint.id,
  srtUrl: endpoint.srt.url,
  streamId: endpoint.srt.streamId,
  status: endpoint.status,
});

// Get encoder-specific URLs
console.log('OBS URL:', endpoint.encoders.obsUrl);
console.log('vMix:', endpoint.encoders.vmixHost, endpoint.encoders.vmixPort);

Latency Configuration Guide

Choose the right latency buffer for your network conditions

Latency BufferUse CasePacket Loss ToleranceMax Jitter
120ms
Ultra-low latency, LAN/datacenter<0.01%<5ms
500ms
Low latency, excellent network<0.1%<20ms
1000ms
Low latency, good network<0.5%<50ms
2000ms
Recommended
Balanced (recommended default)<2%<100ms
4000ms
High reliability, challenging network<5%<200ms
8000ms
Maximum reliability, poor network<10%<500ms

SRT Connection Modes

Understanding caller, listener, and rendezvous modes

Caller

Recommended

Encoder initiates connection to server

Encoder → Server
Use Case:Most common for studio streaming
Firewall:Works behind NAT/firewall

Listener

Encoder waits for incoming connection

Encoder ← Server
Use Case:Server-initiated contribution
Firewall:Requires open inbound port

Rendezvous

Both sides connect simultaneously

Encoder ↔ Server
Use Case:Peer-to-peer contribution
Firewall:Works behind symmetric NAT

Encoder Setup Guides

Configure popular encoders for SRT streaming

Configuration Steps:
  1. 1.Settings → Stream → Service: Custom
  2. 2.Server: srt://ingest.cloudflarestream.com:778?streamid=YOUR_KEY&latency=2000000
  3. 3.Leave Stream Key empty (included in URL)
  4. 4.Output → Encoder: x264 or hardware (NVENC/QSV/AMF)
  5. 5.Bitrate: 4000-8000 Kbps for 1080p
protocol
SRT (Caller mode)
encoder
x264 / NVENC / QSV / AMF
bitrate
4000-8000 Kbps
keyframe
2 seconds
Pro Tips
  • Enable "Dynamic Bitrate" for automatic adjustment
  • Use NVENC for lowest CPU usage
  • Set tune to "zerolatency" for live content

FFmpeg Command Examples

# Stream a file via SRT with low-latency settings
ffmpeg -re -i input.mp4 \
  -c:v libx264 -preset veryfast -tune zerolatency \
  -b:v 4500k -maxrate 5000k -bufsize 10000k \
  -c:a aac -b:a 128k \
  -f mpegts "srt://ingest.cloudflarestream.com:778?streamid=YOUR_STREAM_ID&latency=2000000&mode=caller"

# Capture webcam with hardware encoding (macOS)
ffmpeg -f avfoundation -framerate 30 -i "0:0" \
  -c:v h264_videotoolbox -b:v 4500k \
  -c:a aac -b:a 128k \
  -f mpegts "srt://ingest.cloudflarestream.com:778?streamid=YOUR_STREAM_ID&latency=2000000&passphrase=YOUR_PASSPHRASE"

# Hardware encoding with NVENC (Linux/Windows)
ffmpeg -re -i input.mp4 \
  -c:v h264_nvenc -preset llhq -zerolatency 1 \
  -b:v 6000k -maxrate 7000k \
  -c:a aac -b:a 192k \
  -f mpegts "srt://ingest.cloudflarestream.com:778?streamid=YOUR_STREAM_ID&latency=1500000"

# SRT relay with encryption
ffmpeg -i "srt://source.example.com:778?mode=caller&passphrase=SOURCE_PASS" \
  -c copy \
  -f mpegts "srt://ingest.cloudflarestream.com:778?streamid=YOUR_STREAM_ID&latency=2000000&passphrase=DEST_PASS"

Best Practices

Expert recommendations for production SRT deployments

Use caller mode from encoders

critical

Configure your encoder as SRT "caller" and WAVE servers as "listener" for firewall-friendly connections

Start with 2000ms latency

high

The default 2000ms buffer handles most network conditions. Only reduce for ultra-low latency requirements.

Enable encryption for sensitive content

high

Use AES-256 encryption with a strong passphrase for broadcast-grade content protection

Monitor SRT statistics

medium

Track RTT, packet loss, retransmissions to diagnose issues before they affect viewers

Use hardware encoding

high

Hardware encoders (NVENC, QSV, AMF) provide consistent performance without CPU spikes

Test failover scenarios

medium

Configure backup SRT endpoints and test automatic reconnection before going live

Enable FEC for unreliable networks

medium

Forward Error Correction adds overhead but dramatically improves quality on lossy links

Set appropriate keyframe interval

high

Use 2-second keyframe intervals for optimal balance between recovery and compression

Troubleshooting Guide

Common issues and detailed solutions with diagnostic commands

SRT vs RTMP: When to Use Each

Protocol selection guide for different use cases

Choose SRT When:

  • Streaming over unreliable networks (4G/LTE, satellite, public internet)
  • Encryption is required for content protection (AES-128/256)
  • Professional contribution feeds to production centers
  • Remote production with field cameras across distances
  • Lower latency is critical (sub-second to 2 seconds)
  • Error recovery without visible artifacts is essential

Choose RTMP When:

  • Maximum compatibility with legacy equipment is required
  • Simple setup is priority over network optimization
  • Streaming from basic webcams or simple encoders
  • Network is reliable and 3-5s latency is acceptable
  • Existing RTMP workflow cannot be changed
  • Ingesting to platforms that only support RTMP
FeatureSRTRTMP
Typical Latency0.5 - 2 seconds3 - 5 seconds
EncryptionAES-128/256 built-inRequires RTMPS (TLS)
Error CorrectionFEC + ARQTCP retransmit only
Packet Loss ToleranceUp to 10%<0.1%
Transport ProtocolUDPTCP
Firewall TraversalMultiple modesLimited

Success Stories

How industry leaders use WAVE SRT for mission-critical broadcasting

NBC Sports

Sports Broadcasting

WAVE's SRT implementation handles our NFL contribution feeds with zero-loss delivery across 50+ venues. The automatic failover has saved us from countless potential broadcast failures.
MT
Marcus Thompson
VP of Broadcast Engineering
<0.001%
Packet Loss
10x better
850ms
Latency
vs 3s RTMP
99.999%
Reliability
zero failures
Use case: Live sports contribution from stadiums to broadcast centers

BBC World Service

News Broadcasting

We stream from conflict zones and remote locations where network reliability is never guaranteed. WAVE's SRT with FEC enables us to maintain broadcast quality even over satellite links with 15% packet loss.
SC
Sarah Chen
Head of Technical Operations
200+
Global Feeds
daily
99.8%
FEC Recovery
packets saved
150+
Locations
countries
Use case: International news contribution over unreliable networks

Warner Bros. Discovery

Entertainment

The AES-256 encryption and FIPS compliance was essential for our premium content. WAVE's SRT infrastructure handles all our contribution feeds for live events with broadcast-grade security.
DP
David Park
Director of Live Production
500+
Encrypted Feeds
concurrent
FIPS 140-2
Compliance
certified
2 Tbps
Bandwidth
peak capacity
Use case: Premium content contribution with enterprise security
WAVE - Enterprise Live Streaming Platform