kroo / wyze-rtsp-bridge

RTSP Bridge for wyze cameras

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Wyze RTSP Bridge

Build status Python Version Dependencies Status

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

A server that transcodes wyze native video streams to rtsp.

This repository is still a work in progress.

This project is based on kroo/wyzecam and gst-rtsp-server, look there for more details on how this works.

Getting Started

From Source

If you want to use wyze-rtsp-bridge without Docker, you will need to install gstreamer and gst-rtsp-server libraries:

sudo apt-get install -y \
    libcairo-dev \
    build-essential \
    libgirepository1.0-dev \
    libgstrtspserver-1.0-dev \
    libgstreamer1.0-dev \
    libgstreamer-plugins-base1.0-dev \
    libgstreamer-plugins-bad1.0-dev \
    gstreamer1.0-plugins-base \
    gstreamer1.0-plugins-good \
    gstreamer1.0-plugins-bad \
    gstreamer1.0-plugins-ugly \
    gstreamer1.0-libav \
    gstreamer1.0-doc \
    gstreamer1.0-tools

Install a copy of the libIOTCAPIs_ALL shared library (as per https://github.com/kroo/wyzecam#installation):

$ 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/

Then you can install wyze-rtsp-server:

$ git clone https://github.com/kroo/wyze-rtsp-bridge.git
$ cd wyze-rtsp-bridge/
$ poetry install

You should then have wyze-rtsp-bridge installed in your path:

$ poetry run wyze-rtsp-bridge --help

Usage: wyze-rtsp-bridge [OPTIONS]

  Starts a server that translates local wyze camera video streams to rtsp.

Options:
  -v, --version       Prints the version of the wyze-rtsp-bridge package.
  -c, --cameras TEXT  A list of camera MAC addresses to expose.  Use this
                      option to filter the cameras exposed by the bridge (a
                      good idea for low-resource systems like Raspberry Pis,
                      if you have a lot of cameras).

  -p, --port INTEGER  [default: 8554]
  -c, --config TEXT   The path to the configuration file for wyze-rtsp-bridge
                      [default: ~/.config/wyze_rtsp_bridge/config.yml]

  --create-config     Creates a config file at ~/.wyzecam/config.yml
                      [default: False]

  --help              Show this message and exit.

Docker (TBD)

You can run wyze-rtsp-bridge via docker, though you will need to provide the path to the tutk library, along with your credentials:

docker run -e WYZE_EMAIL=... -e WYZE_PASSWORD=... --mount type=bind,source=/path/to/tutk/libIOTCAPIs_ALL.so,target=/usr/local/lib/libIOTCAPIs_ALL.so --network host -it kroo/wyze-rtsp-bridge:latest

Unfortunately this seems to not pick up the wyze cameras on the local network, likely due to docker networking. More to come....

πŸ“ˆ Releases

You can see the list of available releases on the GitHub Releases page.

We follow Semantic Versions specification.

We use Release Drafter. As pull requests are merged, a draft release is kept up-to-date listing the changes, ready to publish when you’re ready. With the categories option, you can categorize pull requests in release notes using labels.

For Pull Request this labels are configured, by default:

Label Title in Releases
enhancement, feature πŸš€ Features
bug, refactoring, bugfix, fix πŸ”§ Fixes & Refactoring
build, ci, testing πŸ“¦ Build System & CI/CD
breaking πŸ’₯ Breaking Changes
documentation πŸ“ Documentation
dependencies ⬆️ Dependencies updates

You can update it in release-drafter.yml.

GitHub creates the bug, enhancement, and documentation labels for you. Dependabot creates the dependencies label. Create the remaining labels on the Issues tab of your GitHub repository, when you need them.

πŸ›‘ License

License

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

πŸ“ƒ Citation

@misc{wyze-rtsp-bridge,
  author = {kroo},
  title = {A server that transcodes wyze native video streams to rtsp},
  year = {2021},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/kroo/wyze-rtsp-bridge}}
}

About

RTSP Bridge for wyze cameras

License:MIT License


Languages

Language:Python 89.0%Language:Makefile 8.3%Language:Dockerfile 2.7%