Cameras
RTSP camera URL not working
Build a working RTSP URL — the per-vendor path families (Reolink, Hikvision, Dahua/Amcrest), password encoding, and ffprobe testing.
Problem summary
An RTSP URL is rtsp://USER:PASS@IP:554/<path>, and the path is vendor-specific. Most 'RTSP not working' is the wrong vendor path, a password with special characters that isn't percent-encoded, or a blocked port — prove the URL with ffprobe/VLC before wiring it into an NVR.
Use the correct vendor path family for main vs sub stream.
ffprobe -rtsp_transport tcp "rtsp://USER:PASS@IP:554/<vendor-path>"
The path matches the brand (Reolink Preview_01_main/sub; Hikvision /Streaming/Channels/101|102; Dahua/Amcrest /cam/realmonitor?channel=1&subtype=0|1).
If the camera is unreachable at all, treat it as camera-offline.
Layer path
Step-by-step runbook
Start here. Do each check in order, compare it to the expected result, and stop when the evidence explains the failure or the safe stop point applies.
Identify the camera brand/family
Check: Determine whether it's Reolink, Hikvision/Hik-OEM, or Dahua/Amcrest.
Expected result: You know which RTSP path format to use.
If not: Amcrest and many OEMs follow the Dahua format; Hik-OEMs follow Hikvision.
Build the URL with the right path + encoding
Check: Use the brand's main/sub path and percent-encode any special characters in the password.
Expected result: A syntactically valid URL with the correct stream role.
If not: If unsure of the path, read it from ONVIF Device Manager or the camera's web UI.
Prove it with ffprobe/VLC
Check: Open the URL outside any NVR.
Expected result: The stream plays with a reported codec.
If not: 404 = path; auth = encoding; timeout = port/firewall — fix the specific failure.
Confirm port reachability across the VLAN
Check: Check TCP 554 (or the camera's port) from the NVR.
Expected result: The NVR can reach the RTSP port.
If not: Open the port across the camera VLAN if it's blocked.
Wire the verified URL into the NVR
Check: Use the working URL; for Frigate, restream via go2rtc and select the matching preset.
Expected result: The NVR pulls the stream reliably.
If not: If VLC worked but the NVR fails, the issue is NVR codec/preset, not the URL.
Decision tree
If: Connection refused / 404 on the path.
Then: Wrong vendor path or stream role.
Action: Use the brand's documented main/sub path (Reolink/Hikvision/Dahua-Amcrest families).
If: Auth fails despite correct password.
Then: Special characters not percent-encoded.
Action: URL-encode the password (@ → %40) or set a temporary simple password to confirm.
If: Times out / no route.
Then: Port 554 blocked or wrong RTSP port (often a camera-VLAN firewall).
Action: Open the RTSP port across the VLAN or use the camera's configured port.
Safe stop: If the camera is unreachable at all, treat it as camera-offline.
If: VLC works but the NVR/Frigate doesn't.
Then: NVR/Frigate config (codec/preset/restream), not the URL.
Action: Take the verified URL into the NVR; for Frigate use go2rtc + the right preset.
Evidence table
| Symptom | Evidence to collect | Likely layer | Next action |
|---|---|---|---|
| 404 / refused on the RTSP path. | Brand + the exact path used vs the vendor format. | Wrong path / stream role | Use the documented main/sub path for that brand. |
| Auth fails with a correct password. | Whether the password has special characters and is encoded. | URL encoding | Percent-encode the password; retest. |
| Connection times out. | TCP 554 reachability across the network/VLAN. | Port / firewall | Open the RTSP port to the NVR; verify the camera's RTSP port. |
| VLC plays it, NVR won't. | NVR codec/preset/restream config. | NVR config | Carry the verified URL in; for Frigate restream via go2rtc. |
Commands and settings paths
Probe the candidate URL
ffprobe -rtsp_transport tcp "rtsp://USER:PASS@IP:554/<vendor-path>"
Where: From a machine that can reach the camera.
Expected: ffprobe reports a video stream (codec, resolution, fps).
Failure means: 404/invalid = wrong path; auth error = encode the password; timeout = port/firewall.
Safe next step: Correct the specific failure and re-probe; then use the working URL in the NVR.
Discover the path/port
ONVIF Device Manager (shows stream URIs) or the camera's web UI > stream settings
Where: On the LAN with the camera's credentials.
Expected: The camera reports its RTSP URI(s) and port for main and sub streams.
Failure means: If the web UI shows a non-554 port or an unusual path, use exactly that.
Safe next step: Copy the reported URI; percent-encode credentials in the final URL.
Test reachability to the RTSP port
nc -vz <camera-ip> 554 (or the camera's configured RTSP port)
Where: From the NVR (across the VLAN if segmented).
Expected: The port is open from the NVR's vantage point.
Failure means: A blocked port points at the inter-VLAN firewall or a wrong port, not the URL syntax.
Safe next step: Allow the NVR to reach the RTSP port; see /cameras/isolate-cameras-on-vlan.
Hardware and platform boundary
Change only when
- Standardize on cameras that expose a documented RTSP URL and a usable low-res substream — it makes NVR/Frigate setup predictable across brands.
Evidence that matters
- A published RTSP path, a separate substream, ONVIF for discovery, and credentials you can set without exotic characters.
Evidence that does not matter
- A glossy app if it doesn't also expose standard RTSP — you'll fight every NVR integration.
Avoid
- Hardcoding a per-model URL table as gospel — firmware changes paths; verify with ffprobe/ONVIF each time.
Related tool/calculator
Use the linked calculator or tool to turn this runbook into numbers for your exact setup.
Camera bandwidth calculatorRelated problems
Last reviewed
2026-06-02 · Reviewed by HomeTechOps. Built from June-2026 research verified against Reolink/Hikvision/Dahua RTSP formats (Amcrest = Dahua family) and the percent-encoding requirement; leads with brand-family patterns + ffprobe verification rather than a per-model matrix (firmware changes paths), per the no-fake-compatibility rule.
Sources/assumptions
- Assumes a camera exposing standard RTSP with a main and sub stream; vendor path formats differ.
- Amcrest is built on Dahua firmware (shared URL format); many OEMs follow Dahua or Hikvision patterns.
- Firmware revisions can change RTSP paths — verify with ffprobe / ONVIF Device Manager rather than trusting a static per-model table.
Source-backed checks
HomeTechOps turns official docs and conservative safety rules into a shorter runbook. These links are the source trail for the page direction.