Raptor Demos

Introduction

There are 3 demos (in order of setup difficulty)

  • Raptor Image Demo
  • Raptor FTP Demo
  • Raptor Live TV Demo

The image demo is just a standalone application and does not need networking. Live TV and FTP needs networking and various server setup in order to work.

Traffic Control Bridge

The live TV server, and the FTP server are behind a transparent bridge that allows to simulate various network conditions (namely random losses and packet delay). This is done using linux traffic control system.

In order to make it easy to use, there is a simple web-interface for managing it. The code (and the server) for the web interface is in a folder named “tc” inside cangiani's home directory. In general the server is always running inside a screen. If it is not, launch a screen and run ./script/server. The bridge is a simple alix machine. Therefore, the server takes few second to start.

Once the server is running, connect a browser to http://raptortc.epfl.ch:3000 in order to play around with it.

Raptor FTP Demo

The idea of this demo is to compare the speed of standard TCP (HTTP) against our own protocol making use of raptor for FEC. The code is here:

git clone ssh://cangiani@lth.epfl.ch/repos/git/RFTP

Server and client can be compiled with

./make server
./make demo

In order for the demo to work, we also need to setup the demo proxy and a simple web page made of links to files of various dimensions. This is done by running one of the deploy.sh scripts in the source directory. For example,

./deploy_raptordemo1.sh 

will install the proxy and the demo site to /var/www/html/rftp.

Once the proxy stuff is in place, you need to start the server. In raptordemo1.epfl.ch, this is done with

screen
./bin/linux/server -r /var/www/html/rftp/cache

The proxy is just a simple php script (proxy.php) that accepts an url parameter. It downloads the file linked to the url and store it locally. It then returns a key for the local file to be downloaded by the demo client. The demo client then uses either the raptor FTP server, or the standard Apache http server to get the cached file.

In order for the demo to work, its settings should look like the following: Raptor FTP Demo client Settings

Raptor Live TV

This is still badly work in progress and these notes are mostly for myself.

In an ideal world, the server would be composed of the following components:

  • tc proxy: see above description
  • video feed servers: these may be various servers providing an RTP stream over a multicast address in the server cluster's internal network. Presently this can be achieved by either running VLC to stream a static file in loop, or running DVBlast to stream live TV from a DVB-T tuner;
  • streaming server: the actual unicast streaming server: it takes its input from the video feed server by listening to multicast address corresponding to the requested video stream. From the point of view of the streaming server, any feed is “live”;
  • multicast stream relay: is a client of the streaming server which relays the received stream over a public multicast address;
  • transcoder: is a server that might listen to a video feed, transcode it in real time, and rtp-multicast it on a different internal address.

In the present setup, we only have one streaming server (ssh -l raptv raptortv0.epfl.ch), and one video feed server ('ssh -l root dvblast0 from raptortv0).

Simple TV Server

TODO

Demo Client

Requirements (on OS X leopard)

We assume macports and at least the following ports (and their deps) are installed:

  • pkgconfig
  • gstreamer
  • gst-plugins-base
  • gst-plugins-good
  • gst-plugins-bad for the rtsp server
  • “git-core” for git cloning the gst-rtsp-server
  • “subversion” for getting the code from our repository

The .profile file should contain at least:

export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export MANPATH=/opt/local/share/man:$MANPATH
export GST_PLUGIN_PATH=${HOME}/v4/gst-raptor/src/.libs:${HOME}/v4/gst-rtsp-0.10.5/gst/rtsp-server/.libs
export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/:${HOME}/gst-rtsp-server/pkgconfig

Build ''gst-rtsp-server'' plugin

mkdir ~/opt
git clone git://anongit.freedesktop.org/gstreamer/gst-rtsp-server
cd gst-rtsp-server
./autogen.sh --prefix ~/opt
make
make install

Build ''gst-raptor'' plugin

svn co svn+ssh://cangiani@lth.epfl.ch/repos/algo/studemos/videoDemo/v4
cd v4/gst-raptor/src/raptor
ln -s libDFEncDec.a-mac-intel32 libDFEncDec.a
cd ../../
./autogen.sh  --prefix ~/opt
make
make install

Build the Raptor live TV Proxy

cd ../v4
qmake -spec macx-g++ -r raptor-proxy.pro
make

DVBlast

There are presently 3 DVB-T adapter connected. You can tune all of them and run dvblast automatically by going to /root/dvblast-conf, editing the first line of go.sh which looks like the following:

freq="562000000 626000000 570000000"

In this case, launching go.sh (ideally inside a screen), will start 3 istances of dvblast each using one of the tuner tuned on one of the above frequencies (562000000, 626000000, or 570000000). For a list of available channels look here.

Look into the corresponding server_channels_FREQ.ini file to see how the raptor TV server configuration should look like for each of the channels that will be available assuming that by default there is some raptor coding.