Adding Cameras

SkyView natively connects only to RTSP and ONVIF. Proprietary protocols (Tapo / Xiaomi / Wyze, etc.) are bridged to RTSP via go2rtc and then added. This chapter covers various connection scenarios and advanced features.

ONVIF auto-discovery (preferred)

If the camera and SkyView are on the same LAN and the camera has ONVIF enabled (on by default from the factory):

  1. 1

    Scan

    Web admin → Cameras → Add → choose "ONVIF auto-discovery"; after a few seconds all ONVIF devices on the LAN are listed

  2. 2

    Pick the target

    Find the IP / MAC / vendor matching your camera and select it

  3. 3

    Enter credentials

    The ONVIF username and password (not necessarily the same as the RTSP password! Hikvision/Dahua factory defaults are often admin/12345 or similar)

  4. 4

    Save

    SkyView automatically negotiates the main/sub stream addresses and probes the PTZ / two-way audio ports, storing them all together

ONVIF returns the wrong IP

Some non-compliant firmware returns the camera's internal hardcoded IP (e.g. 192.168.1.99) instead of its real LAN address. When adding a camera, SkyView automatically tests the main + sub streams and refuses to save if either is unreachable. In that case you can only switch to manual RTSP.

Manual RTSP

Use the manual method when ONVIF isn't supported or returns a wrong address. You need to find the RTSP URL from the vendor manual or the IPC app; common formats:

BrandExample RTSP main-stream address
Hikvisionrtsp://user:password@IP:554/Streaming/Channels/101
Dahuartsp://user:password@IP:554/cam/realmonitor?channel=1&subtype=0
TP-Link Vigi (IPC, not Tapo)rtsp://user:password@IP:554/stream1
Xiaomi / Aqara / Imou and other proprietary protocolsDirect RTSP not supported — use the go2rtc approach below

Verify with VLC

Before adding, verify the URL plays in VLC (Media → Open Network Stream) by pasting it. If VLC can play it, SkyView can; if VLC can't, it's not a SkyView problem.

Tapo / Xiaomi / Wyze and other proprietary protocols → go2rtc bridge

Consumer cameras like the TP-Link Tapo C100/C200/C220, Xiaomi Mi Home, and Wyze don't enable standard RTSP, but the community project go2rtc can bridge them to RTSP for SkyView to connect to.

  1. 1

    Start a go2rtc container

    On the same machine as SkyView is fine; port 1984 is go2rtc's web UI and 8554 is the RTSP it exposes.

    bash
    docker run -d --name go2rtc \
      --restart=always \
      --network host \
      -v $(pwd)/go2rtc.yaml:/config/go2rtc.yaml \
      alexxit/go2rtc
  2. 2

    Configure cameras in go2rtc.yaml

    Tapo example: the Tapo app's guest account is enough.

    yaml
    streams:
      livingroom: tapo://guest_password@cameraIP:554/stream1
      kitchen: tapo://guest_password@anotherIP:554/stream1
  3. 3

    Add the camera in SkyView

    Use the manual RTSP method, set the URL to rtsp://<go2rtc host IP>:8554/livingroom, and leave credentials blank.

go2rtc is outside SkyView's scope; for issues, see go2rtc's README. SkyView only sees an RTSP stream and is agnostic to the source.

Why substreams matter

ONVIF / mainstream IPCs provide two streams: a main stream (HD, for Live viewing) and a substream (low-res, for AI detection). SkyView automatically obtains the substream address via ONVIF. With manual RTSP, we recommend filling the substream URL in the second field, which lets detection save 70%+ on bandwidth and CPU.

Substreams cut resource usage

416x416 is enough resolution for AI detection, so feeding it a 1080p main stream is wasteful. Substreams are typically 640x360 / 480p — just right.

Video codec: prefer H.264, avoid H.265

At the same quality, H.265 (HEVC) has a 40~50% lower bitrate than H.264, which looks economical, but browser playback support is poor — most users get a black screen / spinner when viewing Live or playback in the web admin. Before enabling a camera, change its codec to H.264.

ClientH.264H.265 (HEVC)
Chrome / Edge (Windows / Linux)✅ Perfect support❌ Won't decode by default, black screen / spinner
Safari (macOS / iOS) / Chrome (macOS)✅ Perfect support✅ Supported, but some older devices stutter
SkyView Android / iOS app✅ Perfect support✅ Native player, perfect support

How to change it

Log into the camera's own web admin → Video / Encoding settings → change the video codec to H.264. Change both the main stream and the substream. Some Hikvision models have a modified H.264+ format; choosing standard H.264 is most reliable. After changing, verify once in VLC that it plays correctly.

Roughly doubling recording space is acceptable

H.264 uses about twice the disk of H.265 (1080p ≈ 21 GB / stream / day vs. ~10 GB for H.265), but in return you get Live + playback that work directly in every browser admin — an experience gap far larger than the disk cost. 10 streams kept for 30 days ≈ 6.3 TB, totally worthwhile at current HDD prices. If you only use the SkyView app and never open the web admin, H.265 can save half the space.

PTZ control (pan/tilt/zoom)

For ONVIF-connected cameras that support PTZ, direction / zoom buttons appear automatically at the bottom-right of the Live page. Manually-added RTSP cameras don't enable it automatically; you need to fill in the ONVIF port (usually 80 / 8000) and PTZ credentials in the camera details.

Two-way audio (Talkback)

Cameras supporting the ONVIF backchannel allow two-way audio (hold the microphone button in the app to talk and the other side hears you). The web admin doesn't support initiating talkback yet; only the mobile apps (iOS / Android) have the hold-to-talk button.

Release before switching cameras

Talkback is a persistent connection feeding audio. Always release before switching cameras; the app ends the old session and opens a new one — holding while switching causes audio misalignment.

Notes on editing / deleting cameras

  • After changing the RTSP URL, detection may not restart automatically: because there's a "detection failed" status record for that camera, you need to click "Clear detection error" in the camera details for it to run again
  • Deleting a camera also removes the database record and the streaming path, but the recording files are not deleted — to avoid accidentally destroying evidence. Delete them manually under data/recordings/<id>/
  • Renaming / regrouping affects neither recordings nor event history

These three are mainstream commercial IPC brands, all with standard ONVIF + RTSP across their lineups and the best SkyView compatibility. Factory default credentials:

BrandDefault accountFirst-connection tips
Hikvisionadmin / custom (forced to set on first boot)If ONVIF can't get a stream, log into the camera's web UI and enable the ONVIF protocol
Dahuaadmin / adminThe default ONVIF port 80 is shared with HTTP
TP-Link Vigiadmin / customONVIF is off from the factory; enable it via the Vigi app first

GB28181 (Chinese national standard — Hikvision / Dahua / Uniview NVR·IPC·DVR)

GB/T 28181 devices register themselves into SkyView — no need to enter an RTSP URL per camera, and every channel under one NVR can be batch-imported. Most national-standard IPCs, NVRs and DVRs from Hikvision / Dahua / Uniview ship with an "upstream platform (GB28181)" option. Requires SkyView 0.9.13 or later.

Off by default — upgrades are seamless

When GB28181 is off, the process idles and binds no ports, so users upgrading from an older version who don't use it are completely unaffected. Signaling port 25060/udp, media port 30000/udp; under host networking (the default for the one-click installer, single image and docker-compose) they are auto-exposed on the LAN — works out of the box.

Step 1 — Enable GB28181 in SkyView

  1. 1

    Turn it on

    Web Admin → Settings → GB28181 → toggle Enable.

  2. 2

    Set a registration password

    The page shows the platform parameters to enter into your devices and lets you set a registration password (shared by all devices). The default platform parameters usually work as-is.

  3. 3

    Set extern_host for remote access

    If the device and SkyView are on different networks, put the address your device can reach you back on (public IP or a router-mapped address) into extern_host; leave it blank for same-subnet direct connections.

  4. 4

    Save

    After saving, the GB28181 service starts listening on 25060 and waits for devices to register.

Platform parameterDefaultNotes
Platform SIP ID / upstream ID34020000002000000001Enter as the device's "upstream platform GB ID"
SIP domain / realm3402000000Leave blank to auto-use the first 10 digits of the SIP ID
SIP server addressSkyView host LAN IP (e.g. 192.168.1.50)The device must be able to reach this
SIP server port25060
Registration passwordSet your ownShared by all devices

Step 2 — Configure the "upstream platform" on the device / NVR

In the device's web UI, find "Platform Access / GB28181 / Upstream Platform" (wording varies by vendor) and fill in the table below. After saving, the device registers itself — an NVR reports all of its channels at once:

Field on the deviceWhat to enter
Upstream SIP server IDSkyView's SIP ID (34020000002000000001)
SIP server domainSkyView's SIP domain (3402000000)
SIP server address / IPSkyView host address (LAN IP locally; the extern_host address over the internet)
SIP server port25060
Registration username / device GB IDThe device's built-in 20-digit GB ID, or make one up
Registration passwordThe registration password you set in SkyView
TransportUDP

Step 3 — Import channels and use them like any camera

Back in Web Admin → GB28181 page → "Devices / channels to import": successfully registered devices and NVR channels appear here. Tick the channels you want and click Import (multi-select; import all of an NVR's channels at once). Once imported, these channels behave like ordinary cameras — live view, recording, AI detection, snapshots, online status, PTZ + presets, two-way talk and on-device playback all work, identical in the UI to RTSP / ONVIF cameras.

Remote / cross-network deployment

When the device and SkyView are on different networks: ① forward 25060/udp and 30000/udp through your router / firewall to the SkyView host; ② extern_host in Settings must be an address the device can reach you back on (public IP or DDNS), otherwise you get "the device registered but there's no video".
PortProtocolPurpose
25060UDPGB28181 SIP signaling (register / catalog / start-stop stream)
30000UDPGB28181 RTP media (device push; multiple streams share one port)

Won't connect / no picture?

Never registers: can the device ping the SkyView host; is 25060/udp blocked by a firewall or not port-forwarded; do the SIP ID / domain / password match SkyView. Registered but no picture: usually extern_host is missing or wrong (the device can't reach you back); also check 30000/udp is open. NVR shows only some channels: online channels sync incrementally on a schedule — wait a moment or refresh the GB28181 page; offline channels won't appear.
Adding Cameras - SkyView Docs