Receive an SRT stream in OBS Studio

OBS Studio can receive an SRT feed natively — no plugins needed — using a Media Source. This guide shows two ways to get your SRT2GO phone stream into OBS: connecting the phone directly to OBS on the same network, or pulling from a relay server when the phone and PC aren't on the same network.

OBS 28 or later is required — that's when native SRT/RIST Media Source support landed. Download the latest free build from obsproject.com.

Which method should I use?

Caller vs listener — the one thing to understand

Every SRT link has one side that calls (initiates the connection) and one side that listens (waits for it). SRT2GO is always a caller — it dials out. So whatever it connects to must be a listener. That single rule drives both methods below.

Method A — Phone straight into OBS (same network)

SRT2GO (phone) ── SRT caller ──▶ OBS Media Source (listener) same Wi-Fi / LAN

Here OBS opens a port and waits; SRT2GO connects to the PC's local IP address.

1. Find your PC's local IP

  1. Windows: open Command Prompt and run ipconfig — note the IPv4 address (e.g. 192.168.1.50).
  2. macOS: System Settings → Wi-Fi → Details — note the IP address.
  3. The phone and PC must be on the same router / Wi-Fi network.

2. Add the Media Source in OBS (listener)

  1. In the Sources panel, click + → Media Source.
  2. Name it (e.g. Phone Camera) and click OK.
  3. Uncheck “Local File.”
  4. In Input, enter a listener URL — OBS waits on port 9000:
    srt://0.0.0.0:9000?mode=listener&latency=500000
  5. Set Input Format to mpegts.
  6. Click OK. OBS now sits waiting for the phone.

3. Point SRT2GO at OBS

  1. Open SRT2GO and tap Custom SRT.
  2. Enter a URL using your PC's local IP and the same port:
    srt://192.168.1.50:9000?latency=500000
  3. Tap Connect, then Go Live. Your camera should appear in OBS within a second or two.
Firewall: if nothing appears, allow OBS through the PC firewall and confirm UDP port 9000 isn't blocked. SRT is UDP, not TCP.

Method B — Receive from a relay (different networks)

SRT2GO (phone) ── caller ──▶ Relay ◀── caller ── OBS Media Source publish:NAME read:NAME

When the phone is on mobile data, it can't reach OBS directly. Instead both sides connect out to a relay in the middle. The relay is the listener; SRT2GO publishes to it and OBS reads from it. Any SRT relay works — a self-hosted MediaMTX box, or a managed service.

Using Belabox Cloud specifically? We have a dedicated end-to-end guide: Belabox Cloud → OBS → Twitch →

1. Publish from SRT2GO to the relay

  1. Open SRT2GO and tap Custom SRT.
  2. Enter the relay's publish URL. For a MediaMTX relay on port 8890:
    srt://relay.example.com:8890?streamid=publish:mystream&latency=2000000
  3. Tap Connect, then Go Live. The relay is now holding your stream.

2. Read into OBS from the relay (caller)

  1. In OBS, click + → Media Source and name it.
  2. Uncheck “Local File.”
  3. In Input, enter the relay's read URL in mode=caller:
    srt://relay.example.com:8890?streamid=read:mystream&mode=caller&latency=2000000
  4. Set Input Format to mpegts.
  5. Click OK. OBS connects to the relay and the phone feed appears.
The streamid distinguishes the two ends: SRT2GO uses publish:NAME to send, OBS uses read:NAME to receive (the exact prefixes depend on your relay — publish: / read: are the MediaMTX convention). Match NAME on both sides.

Method C — Phone straight into OBS (different networks)

SRT2GO (phone, mobile data) │ SRT caller → your home public IP ▼ Router / firewall ── UDP port forward ──▶ OBS Media Source (listener)

This is Method A stretched across the internet: OBS still listens, but now the phone is on a different network and reaches your PC through your home router. Because the router blocks unsolicited inbound traffic by default, you have to forward the SRT port to your PC. It avoids paying for a relay and shaves off the relay's added latency — at the cost of some setup and a few caveats.

Prefer Method B (relay) unless you specifically need this. Port forwarding exposes a port on your home network to the internet, breaks if your ISP uses CGNAT (see below), and your home IP can change. A relay sidesteps all three. Only use Method C if you understand and accept those trade-offs.

1. Set OBS to listen (same as Method A)

  1. In OBS, add a Media Source and uncheck “Local File.”
  2. Set the Input to a listener URL on a port you'll forward (e.g. 9000):
    srt://0.0.0.0:9000?mode=listener&latency=2000000&passphrase=YourStrongSecret
  3. Set Input Format to mpegts and click OK.
Always set a passphrase for Method C. The port is reachable from the open internet, so anyone who finds it could otherwise push video into your OBS. SRT's passphrase (10–79 characters) encrypts the link and rejects anyone without it. Use the same passphrase on the phone.

2. Find your PC's local IP and your home public IP

  1. Local IP of the OBS PC — ipconfig (Windows) or Wi-Fi details (macOS), e.g. 192.168.1.50. You'll forward the port to this.
  2. Public IP of your home — visit whatismyipaddress.com on the PC, e.g. 203.0.113.42. This is what the phone connects to.

3. Forward the port on your router

  1. Open your router's admin page (usually 192.168.1.1 or 192.168.0.1 in a browser) and sign in.
  2. Find Port Forwarding (sometimes under NAT, Virtual Server, or Applications & Gaming).
  3. Add a rule:
    • Protocol: UDP (SRT is UDP — not TCP, not “Both” if you can avoid it)
    • External / WAN port: 9000
    • Internal / LAN port: 9000
    • Internal IP: your OBS PC's local IP (192.168.1.50)
  4. Save / apply. Some routers need a reboot for the rule to take effect.
  5. Allow OBS (or UDP 9000) through the PC's own firewall too — the router rule and the PC firewall both have to permit it.
Tip: give the OBS PC a static local IP (or a DHCP reservation in the router) so the forward keeps pointing at the right machine after a reboot.

4. Point SRT2GO at your public IP

  1. In SRT2GO, tap Custom SRT.
  2. Enter your public IP, the forwarded port, and the matching passphrase:
    srt://203.0.113.42:9000?latency=2000000&passphrase=YourStrongSecret
  3. Use a higher latency (2 s) — this link crosses the public internet. Tap Connect, then Go Live.

Important caveats

CGNAT will block this. Many home and most mobile ISPs put you behind Carrier-Grade NAT, so your “public” IP is shared and not directly reachable — port forwarding then has no effect. If whatismyipaddress.com shows an IP that differs from the WAN IP in your router's status page, you're likely behind CGNAT. Ask your ISP for a real public/static IP, or use Method B (relay) instead.

Your home IP can change. Most residential connections get a dynamic public IP that changes occasionally. A Dynamic DNS service (e.g. DuckDNS, No-IP) gives you a stable hostname like myobs.duckdns.org to use in place of the raw IP.

Security. You're opening a port to the internet. Always use an SRT passphrase, forward only the one UDP port you need, and remove the rule when you're done testing.

Latency: pick a buffer that matches your link

The latency value (in microseconds) is how long SRT waits to recover lost packets. Bigger = smoother on bad links, with more delay. Set the same value on the phone and in OBS.

Optional parameters you'll see in copied URLs

SRT URLs shared on forums are often long, e.g. srt://192.168.1.188:20000?connect_timeout=3000&latency=1000&listen_timeout=5000000&mode=listener&smoother=live&transtype=live&timeout=5000000. Most of those extras are defaults or “give-up” timers. Here's what they do and whether you need them.

Stream profile — safe to leave out (already the default)

  1. transtype=live — selects SRT's live-streaming profile (latency-bounded, drops too-late packets). This is the default for any stream — setting it changes nothing.
  2. smoother=live / congestion=livesmoother is the old (pre-1.3) name for congestion; both pick the live congestion controller and both default to live. Redundant with transtype=live.

Timeouts — how long OBS waits before erroring (not picture quality)

Mind the mixed units — this is what makes copied URLs confusing: connect_timeout is in milliseconds, but listen_timeout, timeout and latency are in microseconds.
  1. connect_timeout=3000 — caller handshake timeout, ms (= 3 s). A caller-side timer; irrelevant on a mode=listener source like OBS.
  2. listen_timeout=5000000 — how long the listener waits for an incoming connection, µs (= 5 s). Set it generously so OBS doesn't error before the phone starts.
  3. timeout=5000000 — read/write I/O timeout, µs (= 5 s). If no data flows for this long, the source errors. Bigger = more tolerant of brief stalls.

The one that actually shapes your stream

  1. latency=... — the jitter buffer, in microseconds. 500000 = 500 ms. Bigger = smoother on bad links, more delay. Beware: a value like latency=1000 is only 1 ms — fine on a spotless wired LAN, but it'll drop constantly over Wi-Fi or mobile.
Bottom line: for a phone → OBS setup you really only need mode, latency, and (for Method C) passphrase. The rest are optional tuning you can copy or drop without changing the picture.

Before you start — quick checklist

Troubleshooting

OBS shows a black screen / “reconnecting.”
Method A: confirm the phone is on the same Wi-Fi and the PC firewall allows UDP on your port. Method B: confirm SRT2GO is live and the relay shows incoming bitrate, and that OBS uses mode=caller with the correct read stream ID.

It connects, then drops repeatedly.
Raise the latency buffer (try 2 s) and use the same value on both ends. On a weak phone connection, switch SRT2GO to a lower quality profile.

Audio but no video, or garbled image.
For the first test, keep SRT2GO on the default H.264 profile — it's the most broadly compatible with OBS's decoder.

OBS sits silent and never connects (Method B).
You almost certainly left out mode=caller. Without it OBS defaults to listening and will wait forever for a connection that never comes.

Method C connects on the same network but not from mobile data.
That means OBS and the forward are fine but the phone can't reach your public IP — almost always CGNAT. Compare the IP from whatismyipaddress.com against your router's WAN IP: if they differ, you're behind CGNAT and need a real public IP from your ISP, or use Method B instead. Also double-check the rule is UDP and the passphrase matches on both ends.

Still stuck? Email support@srt2go.app.