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.
Which method should I use?
- A — Direct, same network Phone and PC on the same Wi-Fi / LAN. Lowest latency, nothing to pay for. OBS listens; the phone connects straight to it. Jump to Method A.
- B — Via a relay Phone on mobile data, or streaming over the internet to a PC elsewhere. A relay (MediaMTX, Belabox Cloud, etc.) absorbs mobile packet loss and needs no router changes. The easiest option across networks. Jump to Method B.
- C — Direct, different networks Phone over the internet straight to OBS at home, with no relay. Lower latency than a relay, but you must port-forward your router and accept the trade-offs. For advanced users. Jump to Method C.
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)
Here OBS opens a port and waits; SRT2GO connects to the PC's local IP address.
1. Find your PC's local IP
- Windows: open Command Prompt and run
ipconfig— note the IPv4 address (e.g.192.168.1.50). - macOS: System Settings → Wi-Fi → Details — note the IP address.
- The phone and PC must be on the same router / Wi-Fi network.
2. Add the Media Source in OBS (listener)
- In the Sources panel, click + → Media Source.
- Name it (e.g. Phone Camera) and click OK.
- Uncheck “Local File.”
-
In Input, enter a listener URL — OBS waits on port 9000:
srt://0.0.0.0:9000?mode=listener&latency=500000 - Set Input Format to
mpegts. - Click OK. OBS now sits waiting for the phone.
3. Point SRT2GO at OBS
- Open SRT2GO and tap Custom SRT.
-
Enter a URL using your PC's local IP and the same port:
srt://192.168.1.50:9000?latency=500000 - Tap Connect, then Go Live. Your camera should appear in OBS within a second or two.
Method B — Receive from a relay (different networks)
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.
1. Publish from SRT2GO to the relay
- Open SRT2GO and tap Custom SRT.
-
Enter the relay's publish URL. For a MediaMTX relay on port 8890:
srt://relay.example.com:8890?streamid=publish:mystream&latency=2000000 - Tap Connect, then Go Live. The relay is now holding your stream.
2. Read into OBS from the relay (caller)
- In OBS, click + → Media Source and name it.
- Uncheck “Local File.”
-
In Input, enter the relay's read URL in
mode=caller:srt://relay.example.com:8890?streamid=read:mystream&mode=caller&latency=2000000 - Set Input Format to
mpegts. - Click OK. OBS connects to the relay and the phone feed appears.
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)
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.
1. Set OBS to listen (same as Method A)
- In OBS, add a Media Source and uncheck “Local File.”
-
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 - Set Input Format to
mpegtsand click OK.
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
- 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. - 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
- Open your router's admin page (usually
192.168.1.1or192.168.0.1in a browser) and sign in. - Find Port Forwarding (sometimes under NAT, Virtual Server, or Applications & Gaming).
-
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)
- Protocol:
- Save / apply. Some routers need a reboot for the rule to take effect.
- Allow OBS (or UDP 9000) through the PC's own firewall too — the router rule and the PC firewall both have to permit it.
4. Point SRT2GO at your public IP
- In SRT2GO, tap Custom SRT.
-
Enter your public IP, the forwarded port, and the matching passphrase:
srt://203.0.113.42:9000?latency=2000000&passphrase=YourStrongSecret - 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.
120000(120 ms) — clean wired LAN.500000(500 ms) — good Wi-Fi or solid internet. A sensible default.2000000(2 s) — mobile data or long-distance, unstable links with packet loss.
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)
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.smoother=live/congestion=live—smootheris the old (pre-1.3) name forcongestion; both pick the live congestion controller and both default tolive. Redundant withtranstype=live.
Timeouts — how long OBS waits before erroring (not picture quality)
connect_timeout is in milliseconds, but listen_timeout,
timeout and latency are in microseconds.
connect_timeout=3000— caller handshake timeout, ms (= 3 s). A caller-side timer; irrelevant on amode=listenersource like OBS.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.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
latency=...— the jitter buffer, in microseconds.500000= 500 ms. Bigger = smoother on bad links, more delay. Beware: a value likelatency=1000is only 1 ms — fine on a spotless wired LAN, but it'll drop constantly over Wi-Fi or mobile.
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
- OBS 28 or newer.
- SRT2GO is live first (Method B) — the relay only has video while the phone streams.
- “Local File” is unchecked in the Media Source.
- Input Format set to
mpegts. - Matching
latencyon both ends, and matchingstreamidname (Method B). - The right mode: OBS is
listenerfor Methods A & C,callerfor Method B. - Method C only: the router UDP port forward is in place, the PC firewall allows it, and you're not behind CGNAT.
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.