/raspberry-pi-stream-audio-video

Live streaming audio/video from a Raspberry Pi

Primary LanguageJavaScript

Deprecation Notice

NOTE: This repo has been deprecated and the functionality is now fully absorbed into my other project:

https://github.com/srinathava/raspberry-pi-sleep-monitor

Please be advised that I am no longer actively maintaining this.

Streaming Live Video and Audio from a Raspberry Pi to a browser

This setup shows how to a stream a live video/audio stream from a Rasbperry Pi to any browser with a pretty low latency. This setup was tested with a Logitech C270 camera connected to a Raspberry Pi 2.

Setup

Upgrade Raspberry Pi

Depending on how old your Raspberry Pi is, you might need to do an apt-get update/upgrade in order to be able to compile Janus (which is not available on apt as of this writing). On a terminal:

sudo apt-get update
sudo apt-get upgrade

This takes a while, so be patient.

Setup gstreamer

This should be pretty simple since its available on apt. You can do:

sudo apt-get install gstreamer-1.0

to install it.

Setup Janus

Janus provides a way to convert an audio-stream obtained from the webcam into a WebRTC stream which is understood by many modern browsers. Unfortunately, Janus is not available as a debian package as of now. Following the instructions from here, you need to do:

 sudo aptitude install libmicrohttpd-dev libjansson-dev \
    libnice-dev libssl-dev libsrtp-dev libsrtp2-dev libsofia-sip-ua-dev \
    libglib2.0-dev libopus-dev libogg-dev libini-config-dev \
    libcollection-dev pkg-config gengetopt libtool automake dh-autoreconf
 cd ~
 mkdir janus && cd janus
 git clone https://github.com/meetecho/janus-gateway.git
 cd janus-gateway
 sh autogen.sh
 ./configure --disable-websockets --disable-data-channels \
    --disable-rabbitmq --disable-docs --disable-mqtt --prefix=/opt/janus
 make
 sudo make install
 sudo make configs

Next modify /opt/janus/etc/janus/janus.plugin.streaming.cfg to include the sample from this repo:

 https://github.com/srinathava/raspberry-pi-stream-audio-video/blob/master/janus.plugin.streaming.cfg

Setup nginx

sudo apt-get install nginx

Modify the file /etc/nginx/sites-enabled/default to include the lines:

location ~ ^/~(.+?)(/.*)?$ {
    alias /home/$1/www$2;
    autoindex on;
}

in one of the server sections. Restart nginx

sudo service nginx restart

Use this repo

Now download this repo

 cd ~
 mkdir www && cd www
 git clone https://github.com/srinathava/raspberry-pi-stream-audio-video.git
 cd raspberry-pi-stream-audio-video

Now open three terminals (with this as the pwd) and run the following commands

 # start Janus
 ./start_janus.sh
 # Start mpeg_server.py
 ./mpeg_server.py
 # Start gstreamer
 ./gstream_audio_video.sh

NOTE: The order of starting mpeg_server.py and gstreamer is important.

Now from any other computer in the local network, navigate to:

 http://ip.of.your.rpi/~pi/raspberry-pi-stream-audio-video/streamingtest.html