« KerLiveEvent » : différence entre les versions
(→x264) |
Aucun résumé des modifications |
||
(13 versions intermédiaires par 3 utilisateurs non affichées) | |||
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 | 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 | 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 | Une alimentation adapté | ||
Une connection a internet (4G, Ethernet ou Wifi | |||
== Logiciel == | == 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) | |||
Un compte sur un site de streaming (on prend ici comme exemple youtube mais dailymotion ou tout autre serveur rtmp) | = 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 == | == 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) | ||
*Puis en ligne de commande sur le raspberry pi | *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 | 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 | ||
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 | ||
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 | |||
=== 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 | sudo make install | ||
===libasound-dev=== | ===libasound-dev=== | ||
cd | |||
sudo apt-get install libasound2-dev | 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=== | ===lame=== | ||
source | Installation (source https://www.raspberrypi.org/forums/viewtopic.php?p=411628) | ||
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 | ./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=== | ||
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. | 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=== | ||
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 | 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-libv4l2 --enable-libvpx --enable-libmp3lame --enable-libfaac --enable-libopus --enable-librtmp --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-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 | 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 | 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. | C'est finit côté installation. | ||
=4g= | == 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 108 : | Ligne 201 : | ||
[https://github.com/Anderson69s/Boitier_KIT_4G_Orange/ Boitier] à découper à la laser | [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 125 : | Ligne 222 : | ||
==Dimensions du Kit== | ==Dimensions du Kit== | ||
[[File:4GKitIoT+-+hands-on11.jpg|400px]] | [[File:4GKitIoT+-+hands-on11.jpg|400px]] | ||
=Biblio= | =Biblio= | ||
*[http://ouiaremakers.com/pi-camera-spy/] | *[http://ouiaremakers.com/pi-camera-spy/] | ||
[[Category:Projet]] |
Version actuelle datée du 3 avril 2016 à 18:48
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
*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…