Create a local WebRTC, RTSP, RTMP, or HLS/Low-Latency HLS stream for most of your Wyze cameras including the outdoor, doorbell, and 2K cams.
No third-party or special firmware required.
It just works!
Streams direct from camera without additional bandwidth or subscriptions.
Based on @noelhibbard's script with kroo/wyzecam and aler9/rtsp-simple-server.
Please consider ⭐️ starring or ☕️ sponsoring this project if you found it useful, or use the affiliate link when shopping on amazon!
Install docker and use your Wyze credentials to run:
docker run \
-e WYZE_EMAIL=you@email.com \
-e WYZE_PASSWORD=yourpassw0rd \
-p 1935:1935 -p 8554:8554 -p 8888:8888 -p 5000:5000 \
mrlt8/wyze-bridge:latest
You can then use the web interface at http://localhost:5000
where localhost is the hostname or ip of the machine running the bridge.
See basic usage for additional information.
- Fixed a bug where the WebUI would not start if 2FA was required. #741
- NEW: Substreams - Add a secondary lower resolution stream:
SUBSTREAM=True
to enable a lower resolution sub-stream on all cameras with a compatible firmware.SUBSTREAM_CAM_NAME=True
to enable sub-stream for a single camera without a firmware version check.- Secondary 360p stream will be available using the
cam-name-sub
uri. - See the substream page for more info.
- NEW: WebUI endpoints:
/img/camera-name.jpg?exp=90
Take a new snapshot if the existing one is older than theexp
value in seconds./thumb/cam-name.jpg
Pull the latest thumbnail from the wyze API./api/cam-name/enable
Enable the stream for recording and streaming. #717/api/cam-name/disable
Disable the stream for recording and streaming. #717
- NEW: ENV Options:
LOG_FILE=true
Log to file (/logs/debug.log
).SUBJECT_ALT_NAME=str
Specify the subjectAltName for SSL. #725
- NEW: WebUI controls:
start/stop/enable/disable
as well as some basic controls for the night vision. - NEW: JS notifications when the status of a stream changes.
- NEW: Browser notifications when the page is in the background. Requires a secure context.
- Performance improvements and memory optimization!
- Updated boa to work alongside other camera controls on supported firmware.
- Bump python to 3.11
- Bump rtsp-simple-server to v0.21.6
- Bump Wyze app version.
Some ENV options have been deprecated:
ON_DEMAND
- No longer used as all streams are now on-demand.TAKE_PHOTO
->BOA_TAKE_PHOTO
PULL_PHOTO
->BOA_PHOTO
PULL_ALARM
->BOA_ALARM
MOTION_HTTP
->BOA_MOTION
MOTION_COOLDOWN
->BOA_COOLDOWN
Known Issues/Bugs:
- WebUI Audio: Limited audio compatibility between HLS and WebRTC. May need to force the audio codec to
AUDIO_CODEC=aac
for HLS andAUDIO_CODEC=libopus
for WebRTC. - Substream: SD stream seems to have a stuttering issue due to the hardware encoding on the camera. May need to force a re-encode of the video using
FORCE_ENCODE=true
.
Camera | Model | Supported |
---|---|---|
Wyze Cam v1 [HD only] | WYZEC1 | ✅ |
Wyze Cam V2 | WYZEC1-JZ | ✅ |
Wyze Cam V3 | WYZE_CAKP2JFUS | ✅ |
Wyze Cam V3 Pro [2K] | HL_CAM3P | ✅ |
Wyze Cam Floodlight | WYZE_CAKP2JFUS | ✅ |
Wyze Cam Pan | WYZECP1_JEF | ✅ |
Wyze Cam Pan v2 | HL_PAN2 | ✅ |
Wyze Cam Pan v3 | HL_PAN3 | ✅ |
Wyze Cam Pan Pro [2K] | HL_PANP | ✅ |
Wyze Cam Outdoor | WVOD1 | ✅ |
Wyze Cam Outdoor v2 | HL_WCO2 | ✅ |
Wyze Cam Doorbell | WYZEDB3 | ✅ |
Wyze Battery Cam Pro | AN_RSCW | ❓ |
Wyze Cam Doorbell Pro 2 | AN_RDB1 | ❓ |
Wyze Cam Flood Light Pro [2K] | LD_CFP | ❓ |
Wyze Cam Doorbell Pro | GW_BE1 | |
Wyze Cam OG | GW_GC1 | |
Wyze Cam OG Telephoto 3x | GW_GC2 |
Should work on most x64 systems as well as on some arm-based systems like the Raspberry Pi.
The container can be run on its own, in Portainer, Unraid, as a Home Assistant Add-on, locally or remotely in the cloud.
This is similar to the docker run command, but will save all your options in a yaml file.
- Install Docker Compose.
- Use the sample as a guide to create a
docker-compose.yml
file with your wyze credentials. - Run
docker-compose up
.
Once you're happy with your config you can use docker-compose up -d
to run it in detached mode.
To update your container, cd
into the directory where your docker-compose.yml
is located and run:
docker-compose pull # Pull new image
docker-compose up -d # Restart container in detached mode
docker image prune # Remove old images
Visit the wiki page for additional information on Home Assistant.
- Two-Factor Authentication (2FA/MFA)
- ARM/Raspberry Pi
- Network Connection Modes
- Portainer
- Unraid
- Home Assistant
- Homebridge Camera FFmpeg
- HomeKit Secure Video
- WebUI API
If your email or password contains a %
or $
character, you may need to escape them with an extra character. e.g., pa$$word
should be entered as pa$$$$word
The bridge features a basic Web-UI which can display a preview of all your cameras as well as direct links to all the video streams.
The web-ui can be accessed on the default port 5000
:
http://localhost:5000/
See also:
WebRTC should work automatically in Home Assistant mode, however, some additional configuration is required to get WebRTC working in the standard docker mode.
-
WebRTC requires two additional ports to be configured in docker:
ports: ... - 8889:8889 #WebRTC - 8189:8189/udp # WebRTC/ICE
-
In addition, the
WB_IP
env needs to be set with the IP address of the server running the bridge.environment: - WB_IP=192.168.1.116
-
See documentation for additional information/options.
WYZE_EMAIL and WYZE_PASSWORD are the only two required environment variables.
- Audio
- Bitrate and Resolution
- Camera Substreams
- MQTT Configuration
- Filtering Cameras
- Doorbell/Camera Rotation
- Custom FFmpeg Commands
- Interval Snapshots
- Stream Recording and Livestreaming
- rtsp-simple-server/MediaMTX Config
- Offline/IFTTT Webhook
- Proxy Stream from RTSP Firmware
- BOA HTTP Server/Motion Alerts
- Debugging Options