Skip to content
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.
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE Remove h264bitstream in the rws source dependency Jul 30, 2017
etc/template
lib Replace libwebsocket v3.0.1 with v3.1.0 Jan 22, 2019
misc Updating args.gn files Mar 8, 2019
mk Removing vcfiled_check.a from vc library Feb 22, 2019
scripts
src FieldTrial setting added for native code package Mar 13, 2019
tools
web-root
.gitattributes
.gitignore Overall patch for video resolution config #1 May 16, 2017
LICENSE.md
README.md
README_TelegramBot.md Updating Image URL and tools/ffmpeg_neon Jan 16, 2018
README_audio.md Adding initial README_audio.md May 22, 2017
README_building.md
README_motion.md Adding README_motion.md and documents minor updates Dec 4, 2017
README_rws_setup.md Adding use_dynamic_video_fps and fixed_video_fps config parameters Feb 13, 2018

README.md

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.

Web Front-End

In order to use WebRTC streaming function in web browser, various things are basically required. To simplify this, Web Front-End implements basic Authentication/Messaging/HTTP and WebRTC Signaling functions using Google's Firebase, and supports WebRTC streaming and other features provided by Rpi-WebRTC-Streamer (RWS) Function.

For Web Front-End, please refer to RWS Web Front-End Repo.

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

WebRTC H.264 Codec supported browsers

Browser Supported H.264 Codec Status
Chrome Yes Software encoder/decoder
Opera Yes Software encoder/decoder
Firefox Yes Browser plugin
Safari Yesnote 1

note 1: MacOS/Safari need 'WebRTC/Enable Legacy WebRTC API' enabled

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 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.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.