Code Monkey home page Code Monkey logo

kclyu / rpi-webrtc-streamer Goto Github PK

View Code? Open in Web Editor NEW
617.0 32.0 107.0 62.7 MB

This repo's objective is providing something like Web Cam server on the most popular Raspberry PI hardware. By integrating [WebRTC](https://webrtc.org/native-code/) and Raspberry PI, we can stream the Raspberry camera feed to browser or native client which talks WebRTC.

License: Other

Makefile 1.09% Shell 0.19% Python 4.41% C++ 62.01% C 23.25% HTML 0.74% JavaScript 7.73% CSS 0.58%
webrtc raspberry-camera webrtc-streamer raspberry-pi-camera webrtc-video raspberry-webrtc raspberry-pi h264 video-streaming

rpi-webrtc-streamer's Introduction

WebRTC streamer for Raspberry PI

General

Notice: This is a work in progress,

This repo's objective is providing something like Web Cam server on the most popular Raspberry PI hardware. By integrating WebRTC and Raspberry PI, we can stream the Raspberry camera feed to browser or native client which talks WebRTC.

Generally, the components of WebRTC service are classified into Signaling Server and WebRTC client. However, RWS(Rpi-WebRTC-Streamer) is built to operate on one piece of Raspberry PI hardware and includes some of Signaling Server functionality. In other words, the Browser or Client supporting WebRTC directly connects to RWS and receives WebRTC streaming service.

Streaming camera feed

To get the camera feed from Raspberry PI, i.e. H.264 video stream, RWS use MMAL(Multi-Media Abstraction Layer) library can be found on ARM side libraries for interfacing to Raspberry Pi GPU. it provides lower level API to multi-media components running on Broadcom VideoCore. For convenience, this streamer directly integrated raspivid with encoding parameter changing in H.264 stream and passing video frame through WebRTC native code package.

Motion Detection

Motion Detection feature provided by Rpi-WebRTC-Streamer uses Inline Motion Vector which is generated during video encoding. And use this to get the approximate Motion Detection function while using minimal CPU resources.

Please refer to README_motion document.

Messenger Notification

The motion detection event message can be transmitted to the user through the telegram messenger. It can send motion detection message and detected video clip to Telegram Messenger client so that it can be used as a private security bot. For more information, Please refer to README_TelegramBot document.

Rpi WebRTC Streamer

Demo Video

Hardware Requirement

Raspberry PI

  • Raspberry PI 2/3
  • Raspberry Pi Zero/Zero W (ZeroW tested)

Video Camera

  • RPI Camera board V1/V2
  • Arducam 5 Megapixels 1080p Sensor OV5647 Mini Camera Video Module

Audio hardware

Please refer to the README_audio.md

Running RWS on Raspberry PI

Please refer to README_rws_setup.md document.

Download Docker image for Testing

In Raspberry PI, you can run the image directly after the pull from the docker hub as shown below.

docker pull kclyu/rpi-webrtc-streamer
docker container run --device=/dev/vcsm --device=/dev/vchiq --net=host --mount type=bind,source=/var/run/dbus,target=/var/run/dbus --rm -d kclyu/rpi-webrtc-streamer # note1

Note1: docker image is currently for armv7l (Raspberry PI2 and above).

Download Deb package for Testing

To download RWS deb package, please refer to the following URL. RWS is currently in development and testing, so please use it with consideration.

Please refer to Rpi-Webrtc-Streamer-deb Repo.

Cross Compile on Ubuntu Linux

Please refer to README_building.md document.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.