Live streaming de la camera pi dans une page web

Ancienne version !

La méthode la plus efficace et la plus simple que j'ai testé est celle en utilisant MJPG-Streamer, nous allons donc télécharger ce programme et le dépendances, et le construire.

Considérons que le raspberry est à jour et le ssh activé, sinon suivez ce tuto en premier.

Installation de MJPG-Streamer sur le Raspberry Pi :

Dans un premier temps on installe subversion et les dépendances pour MJPG-Streamer, pour cela on tape dans le terminal:

sudo apt-get install subversion libjpeg8-dev imagemagick libv4l-dev -y

Puis on crée le lien symbolique manquant:

sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h

Ensuite on télécharge MJPG-Streamer :

svn co https://svn.code.sf.net/p/mjpg-streamer/code/

on se rend dans le dossier :

cd code/mjpg-streamer

on construit le programme :

make mjpg_streamer input_file.so output_http.so

puis

sudo cp mjpg_streamer /usr/local/bin

et

sudo cp output_http.so input_file.so /usr/local/lib/

et enfin

sudo cp -R www /usr/local/www

Voilà pour l'installation de MJPG-Streamer.

Pour tester tout ça, dans votre terminal, vous tapez la commande suivante qui lance la prise de photo (dans le dossier tmp pour le moment):

raspistill --nopreview -w 1024 -h 760 -q 40 -o /tmp/pic.jpg -tl 100 -t 600000 -th 0:0:0

puis dans un second terminal, lancez le server MJPG-Streamer avec la commande suivante :

LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp -n pic.jpg" -o "output_http.so -w /usr/local/www"

Maintenant ouvrez dans votre navigateur cette adresse : http://192.168.XXX.XXX:8080 (remplacez par l'adresse ip de votre Raspberry pi) si vous êtes en SSH ou http://localhot:8080 si vous êtes en local.

Vous tombez sur la page d'accueil du serveur MJPG-Streamer comme ceci :

image non dismonible

Vous pouvez tester sur cette page les différentes méthodes, le dossier se trouve sur le pi dans /usr/local/www/, il y a les exemples des pages HTML.

si tout est ok, on va supprimer le dossier d'installation :

sudo rm -r /home/pi/code

On va également copier une page web d'exemple et la renommer en : cam.html

sudo cp /usr/local/www/stream_simple.html /usr/local/www/cam.html

Installation des outils et lidrairies pour Python et de git

On tape:

sudo apt-get install python-dev python-openssl python-pip git -y

puis

sudo pip install psutil

Installation d'Apache et PHP

sudo apt-get install apache2 php5 libapache2-mod-php5 php5-mysql -y

Puis on se rend dans le dossier html:

cd /var/www/html/

On enlève la page d'accueil d'apache

sudo rm index.html

On va donner les droits au dossier web à l'utilisateur pi: (pour un site en local, sinon faut passer par des liens symboliques et sécuriser apache)

sudo chown www-data:pi /var/www/html/

Puis

sudo chmod 770 /var/www/html/

Mise en place de la page web

on va télécharger la page web:

cd /home/pi

puis

git clone https://github.com/weedmanu/Camera-pi-LiveStream.git

On copie le dossier qui contient les scripts marche arret dans /home/pi

mv Camera-pi-LiveStream/stream -t /home/pi/

Puis on copie le dossier du site web dans /var/www/html

mv /home/pi/stream/LiveStream -t /var/www/html/

Et on supprime le dossier :

sudo rm -r /home/pi/Camera-pi-LiveStream

On ajoute le programme cam.py au démarage du pi, il écoute le bouton play/stop et lance le timelapse ou pas.

sudo nano /etc/rc.local

Puis ajoutez cette ligne avant exit :

python /home/pi/stream/cam.py &

comme ceci :

image non disponible

on donne les droits en écriture :

sudo chown -R www-data:pi /var/www/html/

sudo chmod -R 770 /var/www/html/

Puis on redémarre le pi:

sudo reboot

Maintenant tapez cette adresse dans votre navigateur :

http://192.168.XXX.XXX/LiveStream/

Bien sur, on remplace 192.168.XXX.XXX par l'adresse ip de son Raspberry pi.

Le fonctionnement

Le programme cam.py qui est lancé au démarage du pi, lit toutes les 2 secondes le fichier cam.txt.

Par default il y a écrit 0 dans ce fichier

Si on fait play on écrira 1 dans ce fichier, et on affiche l'iframe contenant la page cam.html

si on fait stop on écrira 2 dans ce fichier, et on affiche rien.

Le programme cam.py s'il lit 0 ne fait rien.

s'il lit 1, il lance le script play.sh qui contient les 2 commandes, celle pour lancer le server MJPG-Streamer et celle pour lancer raspistill, la prise de photos.
puis il remet 0 dans le fichier cam.txt

s'il lit 2, il lance le script stop.sh qui sert à fermer le server MJPG-Streamer et raspistill.
puis il remet 0 dans le fichier cam.txt

Les codes sont consultable sur mon github si vous voulez les consulter.