Giter Site home page Giter Site logo

samalexandrov / baby-monitor Goto Github PK

View Code? Open in Web Editor NEW

This project forked from leerikss/baby-monitor

0.0 1.0 0.0 4.52 MB

A WebRTC audio/video streaming system featuring bidirectional streams between Raspberry PI devices and a server instance, accessed via a Web UI

License: Apache License 2.0

Shell 2.96% JavaScript 92.75% CSS 2.93% HTML 1.36%

baby-monitor's Introduction

baby-monitor

A WebRTC audio/video streaming system featuring bidirectional streams between Raspberry PI devices and a server instance, accessed via a Web UI.

Demo video

flowchart

My goal

This is a little audio/video monitoring system I created for my own needs whilst on my paternity leave. I had a few Raspberrys lying around, and thought I'd do something with them.

My requirements:

  • Stream IR video and Audio from multiple Raspberry devices
  • Play a lullaby song through a speaker as well as stream audio back from a phone microphone to the Raspberry
  • Access the system with a Web UI (iow not write separate mobile clients)
  • Not restricted to WLAN (therefore needed a public Server)
  • Multiple clients must be able to view the streams simultaneously (=> Janus)
  • Should work well on phones (iPhone + Android), as well as on a desktop browser

I achieved my goals, and it's good enough for my personal needs, but there's certainly plenty of room for improvement.

Installation

To simplify installation I created some shell scripts.

Server

Refer to server

Raspberry

Includes three different services:

  1. Stream WebRTC Audio and Video (gstreamer RTP/UDP => Janus)
  2. Play selected song on a Speaker
  3. Stream microphone Audio to a Speaker

Tested on

  • Android: Chrome, FireFox (Video did not work on my MI9 presumibly due to lack of H264 support)
  • IOS: Safari
  • Desktop (Ubuntu): Firefox, Chrome

TODO

  • A better solution for streaming the phone microphone audio data to the RPI speaker. Maybe integrate WebRTC two-way (UV4L?) instead of a dedicated WebSocket Audio Proxy
  • Improve security. Currently authentication is required to access the WebRTC live audio/video feeds, as well as for establishing WebSocket connections. The password however is currently static, and stored plaintext in Janus configuration, as well as in different NodeJS .env files on both the Server as well as on the Raspberrys.
  • Dockerize all the Services
  • The UI is written in vanilla HTML, JS and CSS; maybe integrate ReactJS and/or some other fancy framework(s). The UI was rewritten in React JS. The React JS webroot is here, but I also left the deprecated vanilla html/js/css version left for comparison here.

baby-monitor's People

Watchers

 avatar

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.