Skip to content
/ wyzecam Public

Python package for streaming video from wyze cameras over the local network

License

Notifications You must be signed in to change notification settings

kroo/wyzecam

Repository files navigation

wyzecam

Build status Python Version Dependencies Status

Code style: black Security: bandit Pre-commit Semantic Versions License

Wyzecam is a library for streaming audio and video from your wyze cameras using the wyze native firmware.

That means no need to flash rtsp-specific firmware, and full support for the v3 hardware!

Basic Usage

Streaming video in 11 lines of code!

import os

import cv2
import wyzecam

auth_info = wyzecam.login(os.environ["WYZE_EMAIL"], os.environ["WYZE_PASSWORD"])
account = wyzecam.get_user_info(auth_info)
camera = wyzecam.get_camera_list(auth_info)[0]

with wyzecam.WyzeIOTC() as wyze_iotc:
  with wyze_iotc.connect_and_auth(account, camera) as sess:
    for (frame, frame_info) in sess.recv_video_frame_ndarray():
      cv2.imshow("Video Feed", frame)
      cv2.waitKey(1)

Features

  • Send local commands (via WyzeIOTC class)
  • Support for all wyze camera types (including v3 cameras!)
  • Uses the tutk protocol for communicating over the local network.
  • Optional support for opencv and libav for easy decoding of the video feed!

Installation

pip install -U wyzecam

You will then need a copy of the shared library libIOTCAPIs_ALL. You will need to download this SDK, unzip it, then convert the appropriate copy of the library to a shared library, and copy the resultant .so or .dylib file to somewhere convenient.

On Mac:

unzip TUTK_IOTC_Platform_14W42P1.zip
cd Lib/MAC/
g++ -fpic -shared -Wl,-all_load libIOTCAPIs_ALL.a -o libIOTCAPIs_ALL.dylib
cp libIOTCAPIs_ALL.dylib /usr/local/lib/

On Linux:

unzip TUTK_IOTC_Platform_14W42P1.zip
cd Lib/Linux/x64/
g++ -fpic -shared -Wl,--whole-archive libAVAPIs.a libIOTCAPIs.a -Wl,--no-whole-archive -o libIOTCAPIs_ALL.so
cp libIOTCAPIs_ALL.so /usr/local/lib/

Note: you will need to pick the appropriate architecture.

On Windows:

  1. Follow guide to install Windows Subsystem for Linux
  2. Install VcXsrv Windows X Server
  3. Run the following command and add it to /etc/bash.bashrc
export DISPLAY=":0"
  1. Follow Linux instructions to compile the shared library

🛡 License

License

This project is licensed under the terms of the MIT license. See LICENSE for more details.

📃 Citation

@misc{wyzecam,
  author = {kroo},
  title = {Python package for communicating with wyze cameras over the local network},
  year = {2021},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/kroo/wyzecam}}
}

Credits

Special thanks to the work by folks at nblavoie/wyzecam-api, without which this project would have been much harder.