KerLiveEvent

De Kernel Fablab Lannion
Boitier 4G

Présentation

KerLiveEvent est un projet pour mettre en place un flux vidéo (sans audio pour le moment) en direct vers un serveur de streaming sur internet via un boitier de retransmission en utilisant le wifi, ethernet ou la 4G.

Une version utilisant rapsberry pi est dors et déjà fonctionnelle (raspberry pi B+ ou raspberry pi 2 model B).

Une version via le kit IOT 4G d'Orange est en cours d'étude (choix de la caméra OV7670, voir comment la connecter au kit)

Nous utilisons ffmpeg pour l'envoi du flux vers un serveur rtmp mais d'autres solutions sont possible (avconv, ffmpeg direct, v4L2, cvlc, gstreamer, ...).

TODO: Ajouter le son au flux video

Pré-Réquis

Matériel

Kit IOT ou Raspberry pi B+ ou Rapsberry pi 2 model B Camera OV7670 ou Raspberry camera Une alimentation adapté Une connection a internet (4G, Ethernet ou Wifi

Logiciel

Suite logiciel dépendante de la partie matérielle Un compte sur un site de streaming (on prend ici comme exemple youtube mais dailymotion ou tout autre serveur rtmp est possible)

Version sur Raspberry pi

Ci-dessous la procédure d'installation, la déclinaison pour raspberry pi B+ et raspberry pi 2 model B est précisé pour les lignes de commande.

Procédure d'installation

La procédure peut être très longue en arrière-plan car il faut compiler ffmpeg pour que cela fonctionne. Une image disque du résultat sera mis à disposition si on trouve un endroit ou la stocker (image assez lourde)

  • Télécharger raspbian (la dernière version si possible)
  • Installer raspbian sur la carte SD (plein de tuto disponible sur le net, Win32DiskImager par exemple pour écrire l'image sur la carte SD)
  • Une fois le raspberry démarré et branché au réseau local, connecté vous via SSH (utilisez l'interface de votre box ou nmap pour connaitre l'adresse du raspberry pi)
  • Puis en ligne de commande sur le raspberry pi
 sudo apt-get update
 sudo apt-get upgrade
 sudo apt-get dist-upgrade
 sudo rpi-update
 sudo reboot
  • Maintenant que notre raspberry est à jour, on peut faire quelques réglages:

Dans raspi-config:

 Enable camera
 Locale FR
 Hostname au choix
 Expand filesystem
 Memory split 128

x264

Installation (source: http://stuff.stevenreid.uk/2015/03/31/install-x264-on-raspbian/)

 cd
 git clone git://git.videolan.org/x264
 cd x264

Pour raspberry pi B+:

 ./configure --extra-cflags="-march=armv6 -mfloat-abi=hard -mfpu=vfp" --enable-static --disable-opencl --disable-asm
 make checkasm
 ./checkasm
 make
 sudo make install

Pour raspberry pi 2 model B:

 ./configure --extra-cflags="-march=armv7-a -mfloat-abi=hard -mfpu=neon-vfpv4 -funsafe-math-optimizations -lm" --enable-static --disable-opencl --disable-asm  --enable-pic
 make -j4
 sudo make install

librtmp

 sudo apt-get install libssl-dev
 cd
 git clone git://git.ffmpeg.org/rtmpdump
 cd rtmpdump
 make -j4 SYS=posix
 sudo make install
 

libasound-dev

 cd
 sudo apt-get install libasound2-dev

libopus

 cd
 git clone git://git.opus-codec.org/opus.git
 cd opus
 ./autogen.sh
 ./configure --enable-static --enable-shared
 make -j4
 sudo make install
 ldconfig

lame

Installation (source https://www.raspberrypi.org/forums/viewtopic.php?p=411628)

 cd
 wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.tar.gz
 tar xzvf lame-3.99.tar.gzcd lame-3.99)
 ./configure

Pour raspberry pi B+:

 make
 sudo make install

Pour raspberry pi 2 model B:

 make -j4
 sudo make install

libfaac

Installation (source https://www.raspberrypi.org/forums/viewtopic.php?p=411628 et correction des erreurs en suivant la correction sur ce lien https://cloudhsiao.wordpress.com/2015/06/03/streaming-video-with-raspberry-pi-cont/):

 cd
 curl -#LO http://downloads.sourceforge.net/project/faac/faac-src/faac-1.28/faac-1.28.tar.gz
 tar xzvf faac-1.28.tar.gz
 cd faac-1.28

La correction consiste à commenter la ligne 126 du fichier /common/mp4v2/mpeg4ip.h

Puis:

 ./configure

Pour raspberry pi B+:

 make
 sudo make install

Pour raspberry pi 2 model B:

 make -j4
 sudo make install

libvpx

Installation (source: http://stuff.stevenreid.uk/2015/03/31/install-x264-on-raspbian/):

 cd
 git clone https://chromium.googlesource.com/webm/libvpx
 cd libvpx

Pour raspberry pi B+:

 ./configure --enable-static --disable-examples --disable-unit-tests
 make
 sudo make install

Pour raspberry pi 2 model B:

 ./configure --enable-static --disable-examples --disable-unit-tests --extra-cflags="-march=armv7-a -mfloat-abi=hard -mfpu=neon-vfpv4 -funsafe-math-optimizations -lm" --enable-pic
 make -j4
 sudo make install

ffmpeg

Installation (source: http://stuff.stevenreid.uk/2015/03/31/install-x264-on-raspbian/) Pas de paniquel'installation est longue (qq heures):

 cd
 git clone git://source.ffmpeg.org/ffmpeg.git
 cd ffmpeg

Pour raspberry pi B+:

 ./configure --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-libv4l2 --enable-libvpx --enable-libmp3lame --enable-libfaac --enable-libopus --enable-librtmp --enable-nonfree --enable-avresample --enable-shared --prefix=/usr --enable-version3 --disable-mmx
 make
 sudo make install

Pour raspberry pi 2 model B:

 ./configure --arch=armv7-a --target-os=linux --enable-gpl --enable-libx264 --enable-libv4l2 --enable-libvpx --enable-libmp3lame --enable-libfaac --enable-libopus --enable-librtmp --enable-nonfree --enable-avresample --enable-shared --prefix=/usr --enable-version3 --disable-mmx --enable-pic --extra-cflags="-march=armv7-a -mfloat-abi=hard -mfpu=neon-vfpv4 -funsafe-math-optimizations -lm"
 make -j4
 sudo make install

Après installation si a l'usage vous avez un problème de librairie faire:

 export LD_LIBRARY_PATH=/usr/local/lib

Pour régler le problem de librairie définitivement, modifier le fichier /etc/profile et ajouter la déclaration de cette variable:

 LD_LIBRARY_PATH=/usr/local/lib
 export LD_LIBRARY_PATH

Puis reboot:

 sudo reboot


C'est finit côté installation.

Ligne de commande pour streamer

Pour le moment on ne stream que de la video, via une ligne de commande principal: Pour raspberry pi B+ (360p):

 raspivid -ex sports -o - -t 0 -w 640 -h 360 -fps 25 -b 700000 -g 25 | ffmpeg -re -ar 44100 -ac 1 -acodec pcm_s16le -f s16le -ac 1 -i /dev/zero -thread_queue_size 512 -f h264 -i - -vcodec copy -acodec aac -ab 64k -g 25 -strict experimental -flags global_header -f flv rtmp://XXXX

Pour raspberry pi 2 model B (480p):

 raspivid -ex sports -o - -t 0 -w 1280 -h 720 -fps 25 -b 700000 -g 25 | ffmpeg -re -ar 44100 -ac 1 -acodec pcm_s16le -f s16le -ac 1 -i /dev/zero -thread_queue_size 512 -f h264 -i - -vcodec copy -acodec aac -ab 64k -g 25 -strict experimental -flags global_header -f flv rtmp://XXXX

Utilisation des quatres coeurs pour le raspberry pi 2 model B (480p), a tester:

 raspivid -ex sports -o - -t 0 -w 1280 -h 720 -fps 25 -b 700000 -g 25 | ffmpeg -re -ar 44100 -ac 1 -acodec pcm_s16le -f s16le -ac 1 -i /dev/zero -thread_queue_size 512 -f h264 -i - -vcodec copy -acodec aac -ab 64k -g 25 -strict experimental -flags global_header -threads 4 -f flv rtmp://XXXX

Ou XXXXXX est le lien donné par le serveur pour le streaming.

Sous youtube, pour avoir ce lien aller sur votre compte youtube => Ma chaine => Gestionnaire de vidéos => Diffusion en direct ==> Vous trouverez en bas le lien (partie config de l'encodeur)

D'autres lignes de commande fonctionnelle (à tester et améliorer):

 raspivid -n -ih -o - -t 0 -w 1280 -h 720 -fps 25 -b 2000000 -g 50 | ffmpeg -re -ar 44100 -ac 1 -acodec pcm_s16le -f s16le -ac 1 -i /dev/zero -thread_queue_size 512 -f h264 -i - -b:v 750k -minrate 750k -maxrate 750k -bufsize 750k -vcodec copy -acodec aac -ab 128k -g 50 -strict experimental -flags global_header -f flv

Kit IOT 4g Orange (modèle Olimex)

Mise en service

  • Aller sur [1]
  • Se Logger avec l'@mail t****la****** et le mdp habituel T**********
  • ajout du device
    • FabLabLannion1
    • 6 dernier digit de l'IMEI
    • 6 dernier digit de l'@Mac
  • Brancher la batterie
  • Appuyer sur le bouton
  • La recharge de la batterie se fait par le port USB
  • Pour arrêter, allez sur [2] et tapez poweroff

4gKit

   *Open Source Olimex Board
   *4G moduleapply for your 4G Kit now
   *Antenna
   *Battery
   *SIM card pre-loaded with data

github du projet [3] [4] [5] Boitier à découper à la laser

SSH sur USB

  • ssh 192.168.7.2 Login/pwd to find

info sur blog olimex

lien sur les cartes:

la carte SOM dispose de 2 USB qui vont sur GPIO2 et sur la carte LTE, seul 1 port est utilisé.

Le second va sur USB-OTG.

sinon dispose interface LCD & interface SPI et GPIO…

Dimensions du Kit

4GKitIoT+-+hands-on11.jpg

Biblio