Assess your camera's audio and video codec compatibility instantly. Whether you operate commercial surveillance equipment or smart home consumer cameras, evaluate direct streaming feasibility and plan an ultra-low-latency pipeline.
⚡ What is Go2RTC?
Traditional camera bridges (such as legacy Homebridge plugins) rely on heavy Node.js runtimes. Video streams undergo multi-layer transmuxing and re-encoding, often causing severe stuttering, server overheating, and 3-5 seconds of latency.
Go2RTC is a high-performance universal streaming server engineered to solve protocol incompatibility and latency challenges. It functions as an ultra-fast gateway aggregating diverse CCTV camera streams and translating them into modern, web-friendly protocols.
Multi-Protocol Interoperability & Zero-CPU Passthrough
Native support for RTSP, RTMP, WebRTC, and HLS. Streams standard H.264 video with zero CPU transcoding overhead, ideal for 24/7 continuous operation on NAS or Raspberry Pi.
0.2s Ultra-Low Real-Time Latency
Utilizing WebRTC and native HAP encryption (SRTP), Go2rtc packages RTSP streams into encrypted Apple HomeKit feeds with sub-second response times.
Lightweight Architecture & Modular Integration
Written in Go and compiled into a single self-contained binary with zero dependencies. Runs effortlessly in Docker and integrates directly with Home Assistant.
🎯 Camera Codec Matching Test
Select your camera's output encoding to check for direct zero-transcode compatibility:
Most commercial cameras output H.264 video with G.711 audio. Go2rtc uniquely provides: zero-CPU direct video passthrough while efficiently transcoding only audio to AAC in real time.
📹 Major Camera Brand Compatibility Guide
Global CCTV leader with native RTSP/ONVIF support across all lines. Codec Note: New units may default to H.265. Select H.265 in Step 2 for automatic transcoding, or set to H.264 in camera web settings for zero-CPU passthrough. Pro Tip: EZVIZ cameras require disabling 'Video Encryption' in the EZVIZ mobile app.
Leading surveillance brand with rock-solid streaming stability. Codec Note: Newer models often default to H.265. We recommend switching to H.264 in the camera web portal. Pro Tip: For Imou cameras, the RTSP password is the 8-character uppercase Device Safety Code printed on the device label.
Popular security brand with native RTSP/ONVIF support. Codec Note: Enable H.264 for instant loading. Activate camera account credentials in the TP-Link / Tapo app and use standard RTSP endpoints effortlessly.
The gold standard for power users. UniFi Protect provides one-click RTSP generation and native high-fidelity AAC audio tracks, enabling 100% zero-transcode direct streaming into Apple HomeKit.
Xiaomi cameras use proprietary cloud encryption. You can bridge them via third-party tools (like Micam) or leverage Go2rtc's native built-in Xiaomi protocol to convert streams into standard Apple HomeKit feeds.
Aqara cameras generally support Apple HomeKit natively. For RTSP-capable models (e.g., G100, G5 Pro WiFi, G4 Video Doorbell), enable the RTSP option in device settings to export streams into Go2rtc.
This configuration generator supports major security and smart home brands. Select your device brand, enter credentials, and the builder will automatically construct official RTSP stream URLs and adaptive transcoding parameters.
⚙️ Configuration Parameters
✅ Use: letters, numbers, _, -
❌ Avoid: spaces, symbols #, non-ASCII
⚠️ Apple HomeKit requires non-sequential 8-digit PINs (avoid 123-45-678 to prevent startup errors).
📡 Stream Credentials & IP
📋 Configuration Deployment Steps
Click the green "Copy Configuration" button in the code panel above.
Open your Go2rtc management UI in a new browser tab (e.g. http://IP:1984) and click the Config tab.
Paste or append the generated YAML snippet into the text editor, then click Save & Restart at the top.
Wait for the service to restart. Your camera is now broadcasting as a HomeKit accessory. Click "Step 3: Pairing Guide" above to connect!
👥 Multi-Camera Merge & YAML Indentation Guide
1. Indentation & Syntax Rules (YAML Core Principles)
Go2rtc configuration files follow strict YAML formatting. Never use Tab characters for indentation! All indentation must use spaces.
- Use exactly 2 spaces per hierarchy level.
- Always include a single space after every colon (e.g.
streams:followed by an indented lineliving_room: rtsp://...).
2. Preserving Existing Configurations
If you have previously authenticated Xiaomi cloud credentials or configured dashboard access passwords:
- Do not overwrite the entire file! Doing so will erase tokens stored at the bottom of the configuration.
- Instead, find the existing
streams:andhomekit:roots, and append new child stream items under each respective section.
📌 Multi-Camera Merge Example:
# Single streams root block; do not repeat streams key
streams:
living_room: ffmpeg:rtsp://admin:pass@192.168.1.120:554/stream1#video=copy#audio=aac
balcony_cam: rtsp://admin:pass@192.168.1.121:554/h264/ch1/main/av_stream
# Single homekit root block; indent each accessory uniformly
homekit:
living_room:
name: "Living Room Camera"
pin: "482-59-136"
backchannel: true # Enable if two-way audio is supported
balcony_cam:
name: "Balcony Camera"
pin: "482-59-136"Once your Go2rtc service has loaded the configuration, follow this straightforward pairing guide. No programming expertise required—simply use your iPhone/iPad camera to establish an end-to-end encrypted connection.
Host Requirements:
You need a 24/7 host device (Linux server, NAS, HAOS, or Raspberry Pi) running the Go2RTC service (Docker containerization recommended).
Open Go2RTC Web UI
After pasting the configuration and restarting in Step 2, open your browser and access the Go2rtc dashboard:
Note: IP refers to the local LAN IP address of your NAS, mini PC, or server hosting Go2rtc.
Retrieve HomeKit QR Code
1. On the Go2rtc homepage, locate your camera stream.
2. Click the "links" button on the stream row.
3. Scroll down to HomeKit server to view:
Setup Code: 482-59-136
Pairing QR Code
Note: Click "stream" on the dashboard to preview the live RTSP stream in your browser.
Scan into Apple Home
Ensure your iPhone / iPad is on the same local Wi-Fi network as Go2rtc:
- Open the native Apple Home App
- Tap the "+" icon → "Add Accessory"
- Scan the QR code or enter the PIN manually
💡 If the camera is not discovered immediately, tap "More options" to select from nearby detected accessories.
💡 If running Go2rtc in Docker, standard Bridge network mode isolates mDNS (Bonjour) broadcasts.
Fix: Change the container network mode to Host (--net=host).
Once paired, live streams and snapshots are accessible directly in the Apple Home app.
🚨 Uncertified Accessory Notice
During scanning, iOS may prompt "Uncertified Accessory. Add anyway?". This is standard behavior because Go2rtc is an open-source implementation and does not pay commercial Apple MFi licensing fees. It does not affect local network privacy or security—tap "Add Anyway" to complete pairing.
This section highlights common deployment issues (black screen, latency, missing audio) and benchmarks native pipeline performance against legacy bridge solutions.
📊 Latency & CPU Overhead Benchmark
Native direct streaming eliminates third-party middleware overhead, drastically improving responsiveness:
🩺 Diagnostic FAQ & Self-Repair Guide
Click on any symptom to expand detailed diagnostic steps:
❓ Scanning times out with "No Accessory Found" on LAN?▼
Symptom: iPhone shows a continuous loading spinner after scanning and fails to discover the camera. mDNS scanners (e.g. Discovery app) cannot find _hap._tcp. advertisements.
Root Cause: mDNS multicast broadcast issue. In Docker bridge mode, container network isolation blocks Bonjour discovery packets during the un-paired state (sf=1).
Solutions:
1. Host Network Mode: Ensure your Go2rtc Docker container runs in Host network mode (--net=host), never Bridge mode.
2. Host Avahi Daemon: If Host mode still fails on Linux/NAS, utilize the host OS's native avahi-daemon to handle mDNS broadcasts across the local network.
❓ Log shows "insecure PIN" error and service fails to start?▼
This occurs when using sequential or repetitive PIN codes (e.g., 123-45-678, 111-11-111, or 000-00-000).
Apple HomeKit (HAP) Security Enforcement: Apple requires all HomeKit accessories to enforce PIN complexity validation. Sequential patterns are rejected as "insecure", causing startup crashes.
Fix: Change the PIN to a random 8-digit number (e.g., our generated 482-59-136), save, and restart Go2rtc.
❓ Loading spinner loops indefinitely with a black screen?▼
This is a typical H.265 codec incompatibility. Apple HomeKit requires H.264 video streams. Ensure you appended #video=h264 to the RTSP stream URL in config, or set the camera output to H.264 in the camera web admin settings.
❓ Video plays smoothly but there is no sound?▼
Security cameras commonly encode audio in G.711 / PCMA, whereas Apple HomeKit requires AAC or Opus audio. Append #audio=aac to your RTSP URL to enable zero-overhead real-time audio transcoding.
❓ Camera becomes unresponsive when leaving home Wi-Fi?▼
This is normal: Remote streaming outside local Wi-Fi requires an official Apple Home Hub (Apple TV, HomePod Mini, or dedicated iPad) connected to your local network.
❓ Camera connected initially but went offline after a few days?▼
This is typically caused by DHCP IP address reassignment after camera reboots (e.g. IP shifted from .120 to .135).
Fix: Access your router settings and assign a static IP address or DHCP MAC Address Reservation to your camera.