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.

License

Notifications You must be signed in to change notification settings

SvalkaForkov/rpi-webrtc-streamer

 
 

Repository files navigation

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.

Rpi-WebRTC-Streamer

Demo Video

WebRTC H.264 Codec supported browsers

Browser Supported H.264 Codec Status
Chrome Yes Software encoder/decoder
Firefox Yes Browser plugin

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 BUILD_ubuntu.md document.

Known Issues and Bugs

TBD

TODO

TBD

Version History

  • 2017/06/09 v0.65:
    • Adding log file shifting between folders
    • Prepare first deb package for systemd
  • 2017/04/28 v0.62 :
    • Bandwith base Quality Control is added
    • Video Resolution ratio 16: 9, 4: 3 config added
      • 4:3: 320:240 ~ 1296:972
      • 16:9 384:216 ~ 1408:864
  • 2017/04/04 v0.60 :
    • signaling interface changed from long-poll to websocket (libwebsockets)
    • RWS main port changed from 8888 to 8889 (because Android Direct socket need 8888 port)
  • 2017/01/10 v0.57 :
    • adding initial android direct socket feature
    • fixing branch-heads/55
    • removing unused GYP building scripts and files
    • webrtc build directory changed from 'arm/out/Debug' to 'arm_build'
  • 2016/09/20 v0.56 : Initial Version

About

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.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 60.3%
  • C 34.7%
  • Python 2.2%
  • Makefile 1.5%
  • Shell 1.3%