What is go2rtc?
go2rtc is a free, open-source media server created by AlexxIT. It acts as a universal streaming proxy and server — it can take virtually any IP camera stream as input (RTSP, RTMP, HTTP, ONVIF, FFmpeg, Homekit) and re-broadcast it in multiple output formats including RTSP, WebRTC, HLS, MSE, and HomeKit.
go2rtc has gained rapid popularity in the home automation community as the media backend for Home Assistant and Frigate NVR. It solves a real problem: most IP cameras only support one simultaneous RTSP connection, but many apps (Frigate, Home Assistant dashboards, SmartRTSP) all want to connect at once. go2rtc connects to the camera once and re-broadcasts to unlimited clients.
Why Use go2rtc with IP Cameras?
Most cameras allow only 1–2 simultaneous RTSP clients. go2rtc connects once and serves unlimited viewers — Frigate, Home Assistant, SmartRTSP, and more.
RTSP doesn't work in browsers. go2rtc converts your RTSP camera to WebRTC or HLS so it streams directly in any browser with zero plugins.
go2rtc ships as a built-in add-on in Home Assistant OS and Supervised. Your cameras' streams are automatically available via WebRTC on dashboards.
go2rtc can expose any RTSP camera as a HomeKit camera — no vendor app needed. Works with Apple Home on iPhone, iPad, Mac, and Apple TV.
go2rtc RTSP URL Format
go2rtc listens for RTSP client connections on port 8554 by default. Each stream defined in your config.yaml gets its own RTSP endpoint:
Examples:
SmartRTSP tip: Enter any of these URLs directly in SmartRTSP on your iPhone — tap + → Manual URL → paste the go2rtc RTSP URL → Connect.
Installing go2rtc
Option 1: Home Assistant Add-on (Recommended)
If you use Home Assistant, go2rtc is available as an official add-on:
- In Home Assistant, go to Settings → Add-ons → Add-on Store
- Search for go2rtc and install
- Start the add-on and open the Web UI
- Edit
config.yamlto add your camera streams
Option 2: Docker
Option 3: Direct Binary (Linux/macOS/Windows)
go2rtc config.yaml: Adding RTSP Camera Streams
All stream sources are defined in config.yaml. The streams: section maps a stream name to one or more source URLs. go2rtc picks the first working source automatically.
Basic config.yaml Example
With Sub-Stream Fallback
Using ONVIF Auto-Discovery
After editing config.yaml, restart go2rtc. The Web UI at http://go2rtc-host:1984 shows all active streams with live thumbnails.
go2rtc Source URLs by Camera Brand
| Brand | go2rtc streams: entry |
|---|---|
| Reolink | rtsp://admin:pass@ip:554/h264Preview_01_main |
| Hikvision | rtsp://admin:pass@ip:554/Streaming/Channels/101 |
| Dahua | rtsp://admin:pass@ip:554/cam/realmonitor?channel=1&subtype=0 |
| Axis | rtsp://root:pass@ip/axis-media/media.amp |
| Tapo | rtsp://admin:pass@ip:554/stream1 |
| Amcrest | rtsp://admin:pass@ip:554/cam/realmonitor?channel=1&subtype=0 |
| Any ONVIF cam | onvif://user:pass@ip |
See the full RTSP URL list → for more brands.
go2rtc with Frigate NVR
Frigate uses go2rtc as its internal media server. If you already run Frigate, go2rtc is running at port 8554 and you can use the same RTSP re-stream URLs in SmartRTSP.
In your Frigate config.yaml, cameras are defined like this:
Frigate automatically registers these cameras in go2rtc. The resulting RTSP URL in SmartRTSP would be:
Home Assistant + Frigate users: Your go2rtc streams are available from inside your home network. Use SmartRTSP for a full-featured iPhone viewer alongside your Frigate dashboard.
Viewing go2rtc Streams in SmartRTSP
SmartRTSP connects to any RTSP source — including go2rtc re-broadcast streams. This is ideal if you have cameras that normally limit concurrent viewers.
- 1. Ensure go2rtc is running and your streams are active (check Web UI at
http://go2rtc-ip:1984) - 2. Open SmartRTSP on iPhone or Mac
- 3. Tap + → Manual URL
- 4. Enter:
rtsp://[go2rtc-ip]:8554/[stream-name] - 5. Tap Connect — stream appears immediately
Note: go2rtc streams are available on your local network. For remote access from outside your home, connect via VPN first, then use the same RTSP URL with the internal IP.
go2rtc FAQ
Does go2rtc re-encode the stream?
No — by default go2rtc passes the video stream through without re-encoding (zero-copy). This means zero CPU overhead and no quality loss. The camera's native H.264 or H.265 stream is forwarded as-is to SmartRTSP and other clients.
What port does go2rtc use for RTSP output?
go2rtc's RTSP server defaults to port 8554 (not the standard 554). This avoids needing root privileges on Linux. The Web UI runs on port 1984. Both ports are configurable in config.yaml.
Can go2rtc replace a dedicated NVR?
go2rtc is a streaming server, not an NVR — it does not record. For recording, pair it with Frigate NVR (which uses go2rtc internally) or another DVR solution. go2rtc's job is stream re-broadcasting and format conversion.
Is go2rtc free and open source?
Yes. go2rtc is fully open source (MIT license) and free to use. It is maintained by AlexxIT on GitHub.
View go2rtc Streams on iPhone & Mac
SmartRTSP is a free RTSP viewer for iOS and macOS. Connect directly to any go2rtc stream URL — no setup, no subscription.
Download SmartRTSP Free