Video Live Streaming avec son Raspberry Pi

Live Streaming

Ce terme désigne la capacité à fournir un flux (audio ou vidéo) à disposition d’un certain nombre de spectateurs en direct. Facile quand on diffuse sur les ondes Hertziennes, beaucoup moins simple transposé à Internet.

camera-ipVous connaissez sûrement les Caméras IP, genre de webcam autonome, à relier à son réseau et qui filme et capture ce qu’elle voit bouger. Le logiciel phare pour ce job est motion, il est embarqué dans beaucoup de ces caméras mais fournit souvent un flux vidéo de mauvaise qualité (images jpeg successives) et ne peut être visionné par, à grand peine, 3 personnes en même temps.

En fait, pour refaire de la télévision sur Internet, il faut utiliser un protocole intelligent. Du style de BitTorrent qui réparti la charge réseau entre membres d’un même transfert, mais cette méthode a tendance à déplaire aux « ayants droits ». Sinon en utilisant les adresses de broadcast prévues par TCP/IP, malheureusement filtré et maintenant utilisé dans les TV Box de nos opérateurs.

boiler-room
Sans ces astuces, il faut un paquet de serveurs réparti un peu partout dans le monde pour servir chacun des visionneurs. Ce cache gigantesque est assuré par Akamai qui loue son infrastructure technique aux plus grands!

Aujourd’hui les sites de vidéos en streaming pullulent sur Internet 😉 Certaines proposent désormais de relayer votre flux gratuitement: Ustream, Youtube, Facebook. Tout le monde peut désormais devenir présentateur de sa propre émission 😉

A la Boiler Room, comment réussir à diffuser son streaming sans se ruiner?

Le Raspberry Pi 😉

Nous allons tenter de réaliser avec un live streaming sur Youtube.

Commencez par vous procurer un Raspberry Pi, une PiCamera, une carte son USB. Installer Raspbian. Puis lancez ces mises à jours…

 # Get the latest Raspbian packages
 sudo apt-get update
 sudo apt-get upgrade
 # Get the latest firmware
 sudo rpi-update
 # Install some packages needed to build it
 sudo apt-get install autoconf gettext libtool libjpeg62-turbo-dev libavformat imagemagick vlc-nox nginx
 # Load the V4L module
 sudo modprobe bcm2835-v4l2

Ensuite voila la partie la plus difficile… Il va falloir capturer la vidéo de la caméra, la mixer au son du microphone, envoyer le tout dans un fichier qui soit renvoyé vers rtmp://a.rtmp.youtube.com/live2/YOUR_LIVE_CODE

Le problème, ffmpeg manque à l’appel apt-get, vlc-player n’a pas de rtmp en sortie sans ffmpeg. J’ai alors suivi les travaux de ce filmeur de chat. J’ai pigé qu’il fallait compiler ffmpeg (qui n’est pas dans les dépots, ce gars l’a déjà compilé) et profiter de sa virtuosité à bidouiller la vidéo.

Attention ce truc dure des plombes lancé sur le Pi (pensez cross compilation).

cd /usr/src
sudo mkdir ffmpeg
sudo chown pi:users ffmpeg
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
# Compilation Time
./configure
make
sudo make install

youtube-liveTout ça est en fait bien expliqué par Ustream. Mais ça reste muet!

Enfin, je tombe sur le projet picam sur github (Note: Penser à classer les résultats par date). Une petite merveille!

Peut mixer son et vidéo, les enregistrer et les relayer 😉 On peut choisir de relayer par nginx ou ffmpeg. J’avoue avoir téléchargé directement le binaire. Et voila les lignes de commande magiques:

# Démarrage du relai ffmpeg
ffmpeg -i tcp://127.0.0.1:8181?listen -c:v copy -c:a aac -strict -2 -ar 44100 -ab 40000 -f flv RTMP_URL/STREAM_KEY
# Lancement de la capture vidéo envoyé vers ffmpeg
./picam --alsadev hw:1,0 --autoex --tcpout tcp://127.0.0.1:8181

 

Récupérez votre lien « RTMP_URL/STREAM_KEY » chez votre relai de choix

ffmpeg n’est pas dans les dépôts certainement pour des raisons de droit sur les protocoles supportés… Mais le code est tellement bon que tout le monde en croque 😉 Merci l’OpenSource !!

Maintenant, vous aussi devriez pouvoir tous faire votre « BOILER BOX » 😉

Bon Stream <3

PS: Pas essayé, mais y’a même une image à flasher 😉

Posted in BLOG, ELECTRONIQUE, FABLAB, PROJETS and tagged , , , , , , .

2 Comments

Laisser un commentaire