Unifi NVR-compatible camera proxy
Project description
UniFi Camera Proxy
About
This enables using non-Ubiquiti cameras within the UniFi Video/Protect software. This is particularly useful to view existing RTSP-enabled cameras in the same UI and mobile app.
Things that work:
- Live streaming
- Full-time recording
- Motion detection
- Smart Detections with Frigate
Installation
Dependencies:
- ffmpeg and netcat must be installed
- Python 3+
Usage
In order to use this, you'll need a client certificate. This can be acquired in one of two ways:
- If you have a UniFi camera:
scp ubnt@<your-unifi-cam>:/var/etc/persistent/server.pem client.pem
- You can also create your own client certificate via:
openssl ecparam -out /tmp/private.key -name prime256v1 -genkey -noout
openssl req -new -sha256 -key /tmp/private.key -out /tmp/server.csr -subj "/C=TW/L=Taipei/O=Ubiquiti Networks Inc./OU=devint/CN=camera.ubnt.dev/emailAddress=support@ubnt.com"
openssl x509 -req -sha256 -days 36500 -in /tmp/server.csr -signkey /tmp/private.key -out /tmp/public.key
cat /tmp/private.key /tmp/public.key > client.pem
rm -f /tmp/private.key /tmp/public.key /tmp/server.csr
Running natively
pip install unifi-cam-proxy
# RTSP stream
unifi-cam-proxy --host <NVR IP> --cert client.pem --token <Adoption token> rtsp -s rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_175k.mov
Running with Docker
docker run --rm -v "/full/path/to/cert.pem:/client.pem" keshavdv/unifi-cam-proxy unifi-cam-proxy --verbose --ip "<Camera IP>" --host <NVR IP> --cert /client.pem --token <Adoption token> rtsp -s rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_175k.mov
Acquiring adoption token
Unifi Protect
- On the Protect UI, click 'Add Devices' and select 'G3 Micro'. Select 'Continue on Web' and type in a random string for the SSID and Password fields and click 'Generate QR Code'
- Take a screenshot of the QR code and upload it to https://zxing.org/w/decode.jspx
- Decode the QR code and extract the token from the second to last line in the 'Raw Text' field.
Unifi Video
Follow the 'Token Adoption' step from here to generate a new token
Multiple Cameras
To deploy multiple cameras, run multiple instances of the proxy, taking care to specify different MAC addressess:
unifi-cam-proxy --host <NVR IP> --mac 'AA:BB:CC:00:11:22' --cert client.pem --token <Adoption token> rtsp -s rtsp://camera1
unifi-cam-proxy --host <NVR IP> --mac 'AA:BB:CC:33:44:55' --cert client.pem --token <Adoption token> rtsp -s rtsp://camera2
Device-specific Implementations
- Hikvision PTZ (Hikvision DS-2DE3304W-DE): Uses brightness/contrast settings to control PTZ
unifi-cam-proxy -H <NVR IP> -i <camera IP> -c client.pem -t <Adoption token> hikvision -u <username> -p <password>
- Reolink NVR Cameras (Reolink RLN16-410): Adds motion events Note: Camera/channel IDs are zero-based
unifi-cam-proxy -H <NVR IP> -i <camera IP> -c client.pem -t <Adoption token> reolink_nvr -u <username> -p <password> -c <camera_id>
- Lorex (LNB4321B, likely also Dahua cameras): Adds motion events
unifi-cam-proxy -H <NVR IP> -i <camera IP> -c client.pem -t <Adoption token> lorex -u <username> -p <password>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
unifi-cam-proxy-0.1.2.tar.gz
(19.0 kB
view hashes)
Built Distribution
Close
Hashes for unifi_cam_proxy-0.1.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4fdd55b3cd2af4e0ea5b4c545a4ed1944904f02323bd401dce38286e7cffc991 |
|
MD5 | 3dc1a28a95a730679c6990e724051f1c |
|
BLAKE2b-256 | 6b17aa933ddf84fc851870330468c2287cf4f815dcec9bb0b9234dbfa9c063c5 |