Skip to content

Integrations

Connecting real-world encoders, decoders, and software to Punch.


Overview

Punch generates ready-to-use connection strings for every major SRT implementation. Once a session is created and both peers have registered, Punch provides the exact command or configuration needed — no manual parameter assembly.

This guide covers manual configuration for each platform. In practice, the Punch web UI generates these automatically.

Software

FFmpeg

FFmpeg has native SRT support via libsrt. It is the most flexible tool for SRT workflows.

Send (encoder side):

Terminal window
ffmpeg -re -i input.ts -c copy -f mpegts \
"srt://PEER_IP:9000?mode=rendezvous&latency=200000&passphrase=PUNCH_PASSPHRASE&pkt_size=1316"

Receive (decoder side):

Terminal window
ffmpeg -i "srt://PEER_IP:9000?mode=rendezvous&latency=200000&passphrase=PUNCH_PASSPHRASE" \
-c copy output.ts

Critical notes:

ParameterValueCommon mistake
latencyIn microsecondsUsing milliseconds (200 instead of 200000)
moderendezvousOmitting mode (defaults to caller)
pkt_size1316Using other values corrupts MPEG-TS
passphrase10-79 charsShell quoting issues with special characters

Note on pkt_size versus payloadsize: libsrt accepts both names as aliases for the same parameter. Punch’s auto-generated strings use pkt_size because it is the canonical name in current libsrt and is accepted by every tool tested (FFmpeg, GStreamer, srt-live-transmit). Older guides that show payloadsize are not wrong — but pkt_size is what Punch emits and what its test suite asserts on.

Encoding pipeline example (1080p50 H.264):

Terminal window
ffmpeg -f v4l2 -framerate 50 -video_size 1920x1080 -i /dev/video0 \
-f alsa -i hw:0 \
-c:v libx264 -preset ultrafast -tune zerolatency -b:v 8M \
-c:a aac -b:a 128k \
-f mpegts \
"srt://PEER_IP:9000?mode=rendezvous&latency=200000&passphrase=PUNCH_PASSPHRASE"

Low-latency tips:

  • -preset ultrafast -tune zerolatency — minimises encoding latency
  • -g 50 — keyframe interval matching framerate (1 second)
  • -flags +cgop — closed GOP for better error resilience
  • Consider -x264-params "sliced-threads=1" to reduce per-frame latency

OBS Studio

OBS has native SRT support since version 27.

Settings → Stream:

FieldValue
ServiceCustom…
Serversrt://PEER_IP:9000?mode=rendezvous&latency=200000&passphrase=PUNCH_PASSPHRASE
Stream Key(leave empty)

Settings → Output → Streaming:

FieldRecommended
Encoderx264 (or hardware: NVENC, QSV, AMF)
Rate ControlCBR
Bitrate6000-10000 kbps
Keyframe Interval1s or 2s
Tunezerolatency

OBS SRT output limitations:

  • OBS only supports SRT as output (streaming), not as input (source)
  • For SRT input in OBS, use the Media Source with an srt:// URL
  • Custom OBS builds (obs-srt) may offer additional SRT features

vMix

vMix has comprehensive SRT support with multi-audio capabilities.

Add SRT output:

  1. Settings → Outputs → Gear icon
  2. Select “SRT” as output type
  3. Configure:
FieldValue
HostnamePEER_IP
Port9000
TypeRendezvous
Latency200 (vMix uses milliseconds)
PassphrasePUNCH_PASSPHRASE

Add SRT input:

  1. Add Input → Stream/SRT
  2. Enter the srt:// URL

vMix MABC (Multi Audio Bitrate Channel):

vMix can output 4 stereo audio pairs on separate MPEG-TS PIDs:

PIDContent
Audio 1Programme mix
Audio 2Talent microphones
Audio 3Ambient/effects
Audio 4IFB/intercom

Note: Not all decoders read multiple audio PIDs. Test your receive chain.

VLC

VLC can play SRT streams but has limitations.

Play an SRT stream:

Media → Open Network Stream → srt://PEER_IP:9000?passphrase=PUNCH_PASSPHRASE

Limitations:

  • VLC is always SRT Caller via the GUI — it cannot act as a Listener
  • For rendezvous mode, use VLC’s command line:
    Terminal window
    vlc "srt://PEER_IP:9000?mode=rendezvous&passphrase=PUNCH_PASSPHRASE"
  • VLC adds significant decode buffering — not suitable for ultra-low-latency monitoring

GStreamer

GStreamer supports SRT via the srtsrc and srtsink elements.

Receive:

Terminal window
gst-launch-1.0 \
srtsrc uri="srt://PEER_IP:9000" mode=rendezvous latency=200 passphrase=PUNCH_PASSPHRASE \
! tsdemux \
! decodebin \
! autovideosink

Send:

Terminal window
gst-launch-1.0 \
v4l2src ! videoconvert ! x264enc tune=zerolatency bitrate=8000 \
! mpegtsmux \
! srtsink uri="srt://PEER_IP:9000" mode=rendezvous latency=200 passphrase=PUNCH_PASSPHRASE

Critical gotcha: GStreamer silently ignores passphrases shorter than 10 characters. The connection appears to succeed but is unencrypted. Always use passphrases of 10+ characters. Punch generates 32-character passphrases by default, avoiding this entirely.

CasparCG

CasparCG has no native SRT support. There are two workarounds:

Option 1: srt-live-transmit relay (recommended)

Run a local relay that converts between SRT and UDP:

Terminal window
# Receive SRT and output to local UDP (for CasparCG input)
srt-live-transmit \
"srt://PEER_IP:9000?mode=rendezvous&passphrase=PUNCH_PASSPHRASE&latency=200000" \
"udp://127.0.0.1:5000" -v

Then configure CasparCG to use udp://127.0.0.1:5000 as input.

Option 2: Custom FFmpeg build

Build FFmpeg with --enable-libsrt and use it as CasparCG’s FFmpeg backend. This requires modifying CasparCG’s build configuration.

Note: CasparCG GitHub issues #1251 and #1535 requesting native SRT support remain open.

srt-live-transmit

The reference SRT relay tool from Haivision. Useful for protocol bridging and relay setups.

Terminal window
# SRT rendezvous → SRT listener (relay to studio)
srt-live-transmit \
"srt://PEER_IP:9000?mode=rendezvous&passphrase=PUNCH_PASSPHRASE&latency=200000" \
"srt://:10000?mode=listener&passphrase=STUDIO_KEY" -v
# SRT rendezvous → UDP multicast (local distribution)
srt-live-transmit \
"srt://PEER_IP:9000?mode=rendezvous&passphrase=PUNCH_PASSPHRASE&latency=200000" \
"udp://239.1.1.1:5000?adapter=eth0" -v

Hardware encoders

Magewell Ultra Encode

FeatureSupport
SRT CallerYes
SRT ListenerYes
SRT RendezvousYes (firmware 2.x+)
BondingNo (libsrt bonding)
Multi-audioStereo + embedded HDMI audio

Configuration: Web UI → Encoding → Protocol: SRT → Mode: Rendezvous → enter peer IP, port, passphrase, latency.

Teradek (Vidiu, Cube, Prism)

FeatureSupport
SRT CallerYes
SRT ListenerYes (Cube, Prism)
SRT RendezvousNo
BondingVia Sharelink (proprietary cloud)

Limitation: Teradek does not support SRT rendezvous mode. To use with Punch, the Teradek must connect as SRT Caller to an srt-live-transmit relay that converts to rendezvous.

Kiloview (N-series)

FeatureSupport
SRT CallerYes
SRT ListenerYes
SRT RendezvousModel-dependent (check firmware)
NDI bridgeYes (N-series)

Haivision (KB, Makito)

Haivision created SRT — their encoders have the most complete implementation.

FeatureSupport
SRT CallerYes
SRT ListenerYes
SRT RendezvousYes
BondingVia SRT Gateway (proprietary)
Multi-audioUp to 8 stereo pairs

Blackmagic (ATEM Mini Pro, Web Presenter)

FeatureSupport
SRT CallerYes
SRT ListenerNo
SRT RendezvousNo

Critical limitation: Blackmagic devices are SRT Caller only. They cannot be a Listener or use Rendezvous mode. To use with Punch, the receive side must run an srt-live-transmit relay in Listener mode.

AJA HELO

FeatureSupport
SRT CallerYes
SRT ListenerYes
SRT RendezvousFirmware-dependent

Multi-camera ISO setup

For a multi-camera ISO production with Punch:

Session: "show-2026-03-06"
Streams: cam-wide, cam-close, cam-roving, pgm-return
Camera 1 (wide) → punch.thåst.se/s/show-2026-03-06 → scan QR → claim "cam-wide"
Camera 2 (close) → punch.thåst.se/s/show-2026-03-06 → scan QR → claim "cam-close"
Camera 3 (roving) → punch.thåst.se/s/show-2026-03-06 → scan QR → claim "cam-roving"
MCR return feed → punch.thåst.se/s/show-2026-03-06 → scan QR → claim "pgm-return"

Each camera gets:

  • Its own SRT rendezvous connection
  • A unique stream slot in the session
  • Individual health monitoring on the dashboard
  • Tally state (program/preview/off)

All coordinated through one session URL.

Audio channel mapping

ScenarioApproachMPEG-TS PIDs
Simple stereoSingle audio PID1
Programme + IFBTwo audio PIDs2
Full ISO (per-camera mix)One audio PID per camera stream1 per stream
vMix MABCFour stereo PIDs in one stream4
Discrete channelsAAC 5.1/7.1 in single PID1

For discrete multi-channel audio, AAC is the most compatible codec. Opus offers lower latency but has less universal decoder support in broadcast hardware.