← All guides

Stream to (and control) your home OBS

Send your phone’s feed to a PC at home running OBS, and let OBS broadcast to Twitch or Kick. Because your home PC stays connected, your viewers keep watching even when your phone briefly loses signal. It’s a cheap DIY version of the paid drop-protection services, using a PC you already own.

This is the most involved setup. Budget anywhere between 20 and 60 minutes, and expect to hit a snag or two the first time.
What you’ll need

How it works

Two separate connections run between your phone and your PC:

Roam sends the video to OBS; OBS broadcasts it onward to your chosen streaming platform. The two connections use different ports, which is why you’ll open both further down.

Keep the phone light: build your overlays and scene elements in OBS, not on the phone. Since OBS composes the final picture, doing the overlays there leaves the phone with one job, sending video, which runs cooler. (Roam’s own overlays are there for when you stream straight to a platform.)

Part 1.Set up OBS

Enable OBS WebSocket

  1. In OBS: Tools menu → WebSocket Server Settings.
  2. Tick Enable WebSocket server. Leave the port at 4455.
  3. Click Show Connect Info to see the Server Password. Type it straight into Roam now (Settings → OBS → Password), or write it down somewhere. Capitals matter, so get it exact. You’ll finish the OBS pairing in Part 3.

Add a Media Source for the incoming feed

  1. In your active scene’s Sources panel, click +Media Source. Name it whatever makes sense to you; for this guide we’ll call it Roam Phone Feed.
  2. Uncheck “Local File”.
  3. In the Input field, paste:
srt://0.0.0.0:1234?mode=listener

0.0.0.0 means “listen on all interfaces,” 1234 is the port (any unused port works), and mode=listener makes OBS the receiver. Click OK.

The Media Source has to be in the currently active scene with its visibility eyeball on, or OBS never opens the port. If you use Studio Mode, transition the scene to Program (or turn Studio Mode off for setup), otherwise the source isn’t actually live.
Important: once things work, add the same Roam Phone Feed source to every single scene (BRB, intermission, all of them), visible in each, layered under your artwork. If any scene is missing it, OBS closes or pauses the feed behind the scenes and you get reconnect warnings on the phone, failed go-lives, and delayed or old footage when you switch back. It looks like app lag; it’s OBS buffering. The “Scenes, BRB, and audio” section below has the full recipe.

Part 2.Open a path to your PC

Port forwarding makes your home PC reachable from the internet, so your phone can reach it over cellular. There are three sub-steps: find your PC’s local IP, find your public IP, then add two rules on your router.

2A. Find your PC’s local IP

Press Win + R, type cmd, Enter. Type ipconfig, Enter. Find the IPv4 Address of your active connection, it looks like 192.168.0.121. Write it down.

2B. Find your public IP

Go to Google and search “what is my ip”. The top result shows it, a number like 203.0.113.7 (not 192.168.x.x, that’s the local one). Write it down, your phone needs it.

IP gotchas. A VPN, on the PC or built into your router, shows the wrong public IP and breaks the connection, turn it off. Your public IP may also not be static (it can change when the router reconnects), so you may have to re-check it another day. And some ISPs share or filter public IPs in a way that leaves your PC unreachable from outside; if the cellular test later fails while everything looks right, that’s the likely cause (see CGNAT in Troubleshooting).

2C. Add two rules on your router

  1. Log into your router. The admin address and password are usually on a sticker on the router; otherwise try 192.168.0.1 or 192.168.1.1 in a browser.
  2. Find Port Forwarding (sometimes under NAT, Virtual Server, or Applications & Gaming).
  3. Add the video rule: Protocol UDP, external port 1234, internal IP = your PC’s local IP (you wrote this down in 2A), internal port 1234.
  4. Add the control rule: Protocol TCP, external port 4455, same internal IP, internal port 4455.
SRT is UDP and OBS WebSocket is TCP, so the two rules use different protocols. Getting the protocol wrong is the most common port-forward mistake.
Can’t reach or use port forwarding? This is where a lot of people get stuck. Some router phone apps show the port-forwarding page but grey it out, log in through the router’s web page (its IP in a browser) instead of the app. You may need the admin account, not a guest or family login. And some ISPs disable or hide port forwarding entirely; if so you’d have to contact them, and on some connections this DIY route simply isn’t available.

Part 3.Set up Roam

  1. Open Roam → Settings → Stream. In Stream URL, enter srt://YOUR_PUBLIC_IP:1234/live.
    SRT requires something on the end of the URL. You can use any word there; we’ll use live. OBS as a listener ignores it.
  2. Scroll to the OBS section. Host = your public IP, Port = 4455, Password = the one from Part 1. Tap Connect, the row should go green within a couple of seconds.
  3. Leave Sync OBS streaming with Roam off for now (it’s off by default). With it off, going live on Roam sends your feed to OBS without starting OBS’s broadcast, so you can pair, see the feed in OBS, and arrange your scene before you actually go live to your platform.
  4. Optional: pick a BRB scene. Once paired, your OBS scenes appear as chips, tap one and the HUD BRB button will switch OBS to it.
  5. For the first test, set Bitrate to 1500 kbps (leave Auto bitrate on). Lower is more forgiving on cellular; bump it up once it all works.

Part 4.Go live and test

  1. Turn WiFi off on your phone so you’re on cellular, this is the real path your stream will take.
  2. Tap and hold GO LIVE in Roam. The Roam pill goes red (LIVE) and your feed starts flowing to OBS.
  3. In OBS, the Media Source fills with your phone’s camera within a couple of seconds. Now you can size and position it in your scene.
  4. When you’re ready to broadcast, tap the OBS pill (the small rounded button in the top-left of the home screen that says OBS) and choose Start OBS streaming (or start it in OBS directly). OBS begins broadcasting to your platform. Check the platform, you should be live.
  5. To finish: tap End Stream in Roam to stop the feed. Then tap the OBS pill again and you’ll see the option to stop OBS streaming (or stop it from OBS directly).
Tip: don’t want to press go live twice? Turn on Sync OBS streaming with Roam (Settings → OBS) so hitting GO LIVE automatically starts the broadcast in OBS too (and End Stream stops it). One button to go live or end.

Scenes, BRB, and audio

OBS only keeps the SRT listener open and playing in real time while the Media Source is active in the program scene. Switch to a scene that doesn’t contain the source and OBS closes or pauses it: Roam shows RECONNECTING for no visible reason, going live fails with “ICMP Port unreachable”, and coming back from a break can play old video and audio while OBS drains what it buffered. None of that is the phone; it’s how OBS treats inactive sources.

One setup avoids all of it:

  1. Add the same Roam Phone Feed source to every scene, including BRB and any “lost connection” scene. Keep its visibility eyeball on in each scene, and hide it by layering your BRB artwork over it. An eyeball turned off deactivates the source, which is exactly what we’re avoiding.
  2. In the source’s properties, uncheck “Restart playback when source becomes active”, and leave “Close file when inactive” unchecked.
  3. Set Network Buffering to its minimum.

With the source alive in every scene, scene switches are instant, nothing buffers, and the feed you return to is always current.

Audio during breaks: OBS audio belongs to the source, not the scene, so with the feed in every scene your phone’s mic stays audible on the BRB scene too, and muting it in the Mixer mutes it everywhere. Mute from Roam’s HUD when you step away instead: muting at the phone applies to every scene at once, and unmuting brings you straight back.

Troubleshooting

“Failed to connect” when I tap Connect on OBS

Usually one of: OBS WebSocket isn’t actually enabled (re-check Part 1), the wrong public IP, or a firewall on the PC blocking port 4455 (TCP). On Windows, accept the Defender Firewall prompt; on Linux, sudo ufw allow 4455/tcp; on Mac, System Settings → Network → Firewall → allow OBS.

Roam says “Live” but the OBS Media Source stays empty

The SRT source isn’t listening. Most likely Studio Mode hasn’t been transitioned, or the Media Source isn’t in the active scene with visibility on. Or a firewall is blocking port 1234 (UDP), separate from the WebSocket rule: sudo ufw allow 1234/udp on Linux, similar on Windows.

“ICMP Port unreachable” when I go live

Your phone sent UDP and the PC replied “nothing’s listening here.” Same cause as above, OBS isn’t listening on the SRT port yet (Studio Mode or Media Source visibility). Also check which scene OBS is sitting on: if it was left on a scene without the feed source, like a BRB scene, the listener stays closed until you switch back. Putting the source in every scene (see “Scenes, BRB, and audio” above) removes this failure entirely.

Everything looks right but the cellular stream won’t connect

Most often this is CGNAT: some ISPs share one public IP across many customers, so your “public IP” isn’t reachable from outside. Test by visiting http://your-public-ip:4455 from a device on cellular (not your home WiFi); if it times out, it’s likely CGNAT, and you’ll need to ask your ISP for a real public IPv4 address (some give it free, some charge a couple of dollars a month). Also double-check no VPN is running on the PC or router.

The feed is delayed, or shows old footage after BRB or a scene switch

That’s OBS, not the phone. A media source that isn’t visible in the program scene stops playing in real time while data keeps arriving; when it comes back, OBS plays the backlog: old video, old audio, sometimes minutes behind, until it suddenly snaps to live. Fix: add the feed source to every scene (visible, under your artwork), uncheck “Restart playback when source becomes active”, and set network buffering to minimum. Full detail in “Scenes, BRB, and audio” above.

Audio sounds bad or robotic

Usually the upload bandwidth is too low for the bitrate, drop Roam’s bitrate. If you’re on a Bluetooth mic, that uses a phone-call codec (mono, 8–16 kHz) and sounds noticeably worse than the built-in mic; a wired or USB-C mic is much better.

Want to stream without a PC in the loop? See Stream to a hosted service. Or learn what every button and setting does.