
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 :
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 :
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.