« KerLiveEvent » : différence entre les versions

De Kernel Fablab Lannion
mAucun résumé des modifications
Ligne 1 : Ligne 1 :
[[File:boite4g.jpg|vignette|droite|Boitier 4G]]
[[File:boite4g.jpg|vignette|droite|Boitier 4G]]
= Présentation =
= 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 via un raspberry pi et une connection internet (wifi/ethernet/4G)
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.


Nous utilisons ffmpeg via le flux de raspivid mais d'autres solutions sont possible (avconv, ffmpeg direct, v4L2, cvlc, gstreamer, ...)
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 =
= Pré-Réquis =
== Matériel ==
== Matériel ==
Raspberry pi B
Kit IOT ou Raspberry pi B+ ou Rapsberry pi 2 model B
Raspberry camera
Camera OV7670 ou Raspberry camera
Une alimentation qui fournit au moins 1A
Une alimentation adapté
Une connection a internet (4G, Ethernet ou Wifi
== Logiciel ==
== Logiciel ==
Raspbian
Suite logiciel dépendante de la partie matérielle
Raspivid / Ffmpeg compilé pour raspbian avec x264 et alsa
Un compte sur un site de streaming (on prend ici comme exemple youtube mais dailymotion ou tout autre serveur rtmp est possible)
Un compte sur un site de streaming (on prend ici comme exemple youtube mais dailymotion ou tout autre serveur rtmp)
= Version sur Raspberry pi=
=RaspBerry=
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 ==
== Procédure d'installation ==
*La procédure peut être très longue, plusieurs heures de compilation pour ffmpeg (on ne peut pas utiliser apt-get pour raspbian avec ffmpeg pour le moment).  
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)
*Une image disque du résultat sera mis à disposition asap.
*Télécharger raspbian (la dernière version si possible)
*Install de raspbian sur la carte SD (plein de tuto disponible sur le net)
*Installer raspbian sur la carte SD (plein de tuto disponible sur le net, Win32DiskImager par exemple pour écrire l'image sur la carte SD)
*Puis en ligne de commande sur le raspberry pi (connectez vous via ssh)
*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 update
   sudo apt-get upgrade
   sudo apt-get upgrade
Ligne 26 : Ligne 35 :
   sudo reboot
   sudo reboot


*Maintenant que notre raspberry est à jour, on peut faire quelques réglages:
Dans raspi-config:
Dans raspi-config:
   Enable camera
   Enable camera
Ligne 34 : Ligne 44 :


=== x264 ===
=== x264 ===
Installation depuis la source: http://stuff.stevenreid.uk/2015/03/31/install-x264-on-raspbian/
Installation (source: http://stuff.stevenreid.uk/2015/03/31/install-x264-on-raspbian/)
   cd
   cd
   git clone git://git.videolan.org/x264
   git clone git://git.videolan.org/x264
   cd x264
   cd x264
For armv6 (rasperry b+):
Pour raspberry pi B+:
   ./configure --extra-cflags="-march=armv6 -mfloat-abi=hard -mfpu=vfp" --enable-static --disable-opencl --disable-asm
   ./configure --extra-cflags="-march=armv6 -mfloat-abi=hard -mfpu=vfp" --enable-static --disable-opencl --disable-asm
For armv7 (rasperry 2):
  ./configure --extra-cflags="-march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16" --enable-static --disable-opencl --disable-asm
Then
   make checkasm
   make checkasm
   ./checkasm
   ./checkasm
   make
   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
   sudo make install


===libasound-dev===
===libasound-dev===
  cd
   sudo apt-get install libasound2-dev
   sudo apt-get install libasound2-dev


===lame===
===lame===
source
Installation (source https://www.raspberrypi.org/forums/viewtopic.php?p=411628)
https://www.raspberrypi.org/forums/viewtopic.php?p=411628):wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.tar.gztar xzvf lame-3.99.tar.gzcd lame-3.99
  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
   ./configure
Pour raspberry pi B+:
   make
   make
  sudo make install
Pour raspberry pi 2 model B:
  make -j4
   sudo make install
   sudo make install


===libfaac===
===libfaac===
(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/):
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/):
   curl -#LO http://downloads.sourceforge.net/project/faac/faac-src/faac-1.28/faac-1.28.tar.gztar xzvf faac-1.28.tar.gzcd faac-1.28./configure
  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
   make
   sudo make install
   sudo make install
Pour raspberry pi 2 model B:
  make -j4
  sudo make install
===libvpx===
===libvpx===
source: http://stuff.stevenreid.uk/2015/03/31/install-x264-on-raspbian/
Installation (source: http://stuff.stevenreid.uk/2015/03/31/install-x264-on-raspbian/):
  cd
   git clone https://chromium.googlesource.com/webm/libvpx
   git clone https://chromium.googlesource.com/webm/libvpx
   cd libvpx./configure --enable-static --disable-examples --disable-unit-tests
   cd libvpx
Pour raspberry pi B+:
  ./configure --enable-static --disable-examples --disable-unit-tests
   make
   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
   sudo make install


===ffmpeg===
===ffmpeg===
Pas de panique c'est très long (qq heures): (source: http://stuff.stevenreid.uk/2015/03/31/install-x264-on-raspbian/)
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
   git clone git://source.ffmpeg.org/ffmpeg.git
   cd ffmpeg./configure --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-libvpx --enable-libmp3lame --enable-libfaac --enable-nonfree --enable-avresample --enable-shared --prefix=/usr --enable-version3 --disable-mmx
   cd ffmpeg
Pour raspberry pi B+:
  ./configure --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-libvpx --enable-libmp3lame --enable-libfaac --enable-nonfree --enable-avresample --enable-shared --prefix=/usr --enable-version3 --disable-mmx
   make
   make
  sudo make install
Pour raspberry pi 2 model B:
  ./configure --arch=armv7-a --target-os=linux --enable-gpl --enable-libx264 --enable-libvpx --enable-libmp3lame --enable-libfaac --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
   sudo make install


Après installation si a l'usage vous avez un problème de librairie faire:
Après installation si a l'usage vous avez un problème de librairie faire:
export LD_LIBRARY_PATH=/usr/local/lib
  export LD_LIBRARY_PATH=/usr/local/lib
Pour régler le problem de librairie définitivement:
Pour régler le problem de librairie définitivement, modifier le fichier /etc/profile et ajouter la déclaration de cette variable:
modifier le fichier /etc/profile et ajouter la déclaration de cette variable. Et reboot.
  LD_LIBRARY_PATH=/usr/local/lib
  export LD_LIBRARY_PATH
 
Puis reboot:
  sudo reboot




C'est finit côté installation.
C'est finit côté installation.


== Ligne de commande pour streamer ==
== Ligne de commande pour streamer ==
Pour le moment on ne stream que de la video, via une ligne de commande principal (fonctionnel en date du 30/09/15) en 360p sur youtube. Des tests en 720p montre que le raspberry pi B+ a un peu de mal, mais un raspberry pi 2 doit suivre facilement.
Pour le moment on ne stream que de la video, via une ligne de commande principal:
 
Pour raspberry pi B+ (360p):
raspivid -n -ih -o - -t 0 -w 640 -h 360 -fps 25 -b 750000 -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 "XXXXXXXX"
  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


Ou XXXXXX est le lien donné par youtube (ou tout autre serveur rtmp) pour le streaming.
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


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)
Ou XXXXXX est le lien donné par le serveur pour le streaming.


Pour mettre le flux en 720p vous pouvez essayer la commande ci-dessous mais il sera difficile d'atteindre les 25fps.
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)
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 "XXXXXXXXXXXXXXXX"


Les lignes de commandes ci-dessus sont surement optimisable (je ne suis pas un expert ffmpeg)
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


=4g=
=Kit IOT 4g Orange (modèle Olimex)=
== Mise en service ==
== Mise en service ==
*Aller sur [https://4gkit.orange.com/login]
*Aller sur [https://4gkit.orange.com/login]

Version du 29 novembre 2015 à 18:55

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

libasound-dev

 cd
 sudo apt-get install libasound2-dev

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-libvpx --enable-libmp3lame --enable-libfaac --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-libvpx --enable-libmp3lame --enable-libfaac --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