« KerLiveEvent » : différence entre les versions

De Kernel Fablab Lannion
Aucun résumé des modifications
Aucun résumé des modifications
 
(19 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
=RaspBerry=
[[File:boite4g.jpg|vignette|droite|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.


=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
  sudo apt-get install zlibc zlib1g zlib1g-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
  sudo apt-get install autoconf libtool
  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.gz
  cd 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
  sudo apt-get install v4l-conf v4l-utils libv4l-0 libv4l-dev
  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 ajouter le module v4l2 au boot en editant /etc/modules
  modprobe bcm2835-v4l2
 
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 ==
== Mise en service ==
*Aller sur [https://4gkit.orange.com/login]
*Aller sur [https://4gkit.orange.com/login]
Ligne 20 : Ligne 195 :
     *Battery
     *Battery
     *SIM card pre-loaded with data
     *SIM card pre-loaded with data
[https://github.com/4GkitIoT/Summer-2015-kits githb] du projet
[https://github.com/4GkitIoT/Summer-2015-kits github] du projet
[https://www.olimex.com/forum/index.php?board=2.0]
[https://www.olimex.com/forum/index.php?board=2.0]
[http://4GKit.orange.com]
[http://4GKit.orange.com]
[http://anderson69s.com/2015/10/21/4g-kit-by-orange/]
[https://github.com/Anderson69s/Boitier_KIT_4G_Orange/ Boitier] à découper à la laser


==SSH sur USB==
*
*ssh 192.168.7.2 Login/pwd to find
*
== info sur blog olimex ==
== info sur blog olimex ==
*[https://olimex.wordpress.com/category/4g-2/ New A13-SOM-LTE design on GitHub]
*[https://olimex.wordpress.com/category/4g-2/ New A13-SOM-LTE design on GitHub]
Ligne 31 : Ligne 212 :
* [https://github.com/OLIMEX/SOM/tree/master/A13/A13-SOM-LTE dépots carte fille LTE]
* [https://github.com/OLIMEX/SOM/tree/master/A13/A13-SOM-LTE dépots carte fille LTE]
* [https://www.olimex.com/Products/SOM/A13/A13-SOM-512/resources/A13-SOM-um.pdf Doc ] de la carte
* [https://www.olimex.com/Products/SOM/A13/A13-SOM-512/resources/A13-SOM-um.pdf Doc ] de la carte
* [https://www.olimex.com/wiki/A13-SOM 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é.
la carte SOM dispose de 2 USB qui vont sur GPIO2 et sur la carte LTE, seul 1 port est utilisé.
Ligne 40 : Ligne 222 :
==Dimensions du Kit==
==Dimensions du Kit==
[[File:4GKitIoT+-+hands-on11.jpg|400px]]
[[File:4GKitIoT+-+hands-on11.jpg|400px]]
=Biblio=
*[http://ouiaremakers.com/pi-camera-spy/]
[[Category:Projet]]

Version actuelle datée du 3 avril 2016 à 18:48

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
 sudo apt-get install zlibc zlib1g zlib1g-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
 sudo apt-get install autoconf libtool
 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.gz
 cd 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
 sudo apt-get install v4l-conf v4l-utils libv4l-0 libv4l-dev
 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 ajouter le module v4l2 au boot en editant /etc/modules

 modprobe bcm2835-v4l2

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