KerLiveEvent
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
*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:
- carte SOM A13 existe 2 version 256 ou 512
- dépots carte fille LTE
- Doc de la carte
- wiki de la carte
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…