Tutoriel : Partie 2 - Installation de mjpg-streamer
- Installer mjpg-streamer
- Désigner les caméras USB de manière unique
- Scripts de lancement des caméras
- Il existe deux façons d’installer mjpg-streamer :
- en utilisant la commande snap
- en passant par la page github de Jackson Liam
- La méthode snap est la plus simple, mais on ne peut pas l’utiliser ici car elle n’installe pas le module input_raspicam qui gère la pi-caméra.
- Cloner le dépôt git
git clone https://github.com/jacksonliam/mjpg-streamer.git - Déplacer le dossier de
~/mjpg-streamervers~/- le dossier mjpg-streamer-experimental s’est copié dans un dossier parent mjpg-streamer
- le déplacer vers /home/pi
mv ~/mjpg-streamer/mjpg-streamer-experimental ~/
- Suppression du dossier mjpg-streamer (en sudo car contient un fichier protégé)
sudo rm -R mjpg-streamer - Installation des dépendances :
sudo apt install cmake libjpeg62-turbo-dev -y
Si la question souhaitez-vous continuer est posée, taper O
- A priori les dépendances gcc et g++ sont déjà installées. Sinon les installer
sudo apt install gcc g++ - Compilation
cd ~/mjpg-streamer-experimental make sudo make install
Remarque : la pi caméra a été malencontreusement dénommée au départ camera_py, avec un y et non un i. Modifier a posteriori cette coquille serait source d’erreur, aussi le y a été laissé dans les dénominations des dossiers, fichiers et variables.
- Brancher la pi-camera si cela n’est pas déjà fait
- Attention : la raspberry doit être éteinte pour brancher la pi-camera
- Consulter un tutoriel dédié. Par exemple celui de projects.raspberry
- Brancher les deux caméras USB si cela n’est pas déjà fait.
- Dans le répertoire
/dev/v4l/by-idrépertorier l’identifiant des caméras USBls /dev/v4l/by-id - La commande renvoie des lignes du style :
<valeur1>-video-index0 <valeur1>-video-index1 <valeur2>-video-index0 <valeur2>-video-index1 - Dans un deuxième terminal connecté en ssh ouvrir le fichier de configuration
sudo nano /etc/camera/configuration.ini - Dans la section
[camera]chercher les cléscam_1_nameetcam_2_name - Remplacer, par un copier/coller, les valeurs mises par défaut par les valeurs
<valeur1>-video-index0et<valeur2>-video-index0lues dans l’autre terminal. - Ceci permet d’identifier de manière unique les flux vidéos dans les scripts de lancement de mjpg-streamer.
Si vous le souhaitez vous pouvez modifier les paramètres des caméras dans le fichier configuration.ini : ports de sortie pour mjpg-streamer, résolution etc.
Sinon, laissez les valeurs par défaut.
En fonction de l’ancienneté et de la qualité de vos caméras, certains paramètres seront à ajuster : la résolution, le nombre d’images par seconde (fps) notamment.
- Créer un dossier script placé dans /home/pi/
mkdir ~/script
Vous pouvez nommer ce dossier autrement, mais dans ce cas vous devrez modifier la valeur par défaut du dossier dans le fichier configuration.ini (section [paths] clé script).
C’est dans ce dossier que seront placés différents scripts.
- Créer runCamera_1
.py - Créer en écriture le fichier
nano ~/script/runCamera_1.py - Copier le contenu du fichier runCamera_1.py disponible en cliquant ici
- Coller ce contenu dans la fenêtre de l’éditeur nano
- Enregsitrer et fermer
- Créer en écriture le fichier
- Créer runCamera_2.py de la même manière (pour copier le fichier : cliquer ici)
- Créer runCamera_py.py de la même manière (pour copier le fichier : cliquer ici)
- Une variable
delay_runpermet de différer le lancement du script pour éviter que le script ne tourne avant que les caméras n’aient été installées par la Raspberry. Il est possible de modifier ces variables dans le fichier de configuration (section[frequences], clésdelay_run_Cam_1,delay_run_Cam_2,delay_run_Cam_py)
On peut tester les caméras, par exemple la caméra 1
- Lancer le script runCamera_1.py
python3 ~/script/runCamera_1.py
La commande est python3 et non python ! Effectivement la version par défaut de raspbian est python2.
- Attendre le délai de lancement du script (!) et une fois le script lancé :
- Dans la barre d’adresse d’un navigateur taper :
<local IP Raspberry>:8081/(par exemple192.168.1.49:8081/). - Vous devez obtenir une page web semblable à celle-ci

- Visionner le flux en cliquant sur l’onglet
Stream - Les deux autres caméras sont visualisées en adaptant le port : 8082 et 8084 (modifier les ports si ils ont été changés dans le fichier de configuration).
- Suite à des modifications de librairies, il est possible que la Camera-py ne fonctionne pas
- Si un message de ce type s’affiche :
MJPG Streamer Version.: 2.0
ERROR: could not find input plugin
Perhaps you want to adjust the search path with:
# export LD_LIBRARY_PATH=/path/to/plugin/folder
dlopen: input_raspicam.so: cannot open shared object file: No such file or directory
- Cela signifie que le fichier
input_raspicam.soest manquant - La Camera-py peut fonctionner avec le fichier
input_uvc.so(cf la discussion sur le site de Jackson Liam, réponse du 26 décembre 2020) - Dans le fichier
RunCamera_py.py, dans la commandecommand_py,remplacerinput_raspicam.soparinput_uvc.so
- Si en tapant dans le navigateur
<local Ip>:<port mjpg>(par exemple :192.168.1.45:8080) le message suivant s’affiche :
501: Not Implemented!
no www-folder configured
- Cela signifie qu’il faut ajouter le
foldermanquant (voir la discussionsur zoneminder, réponse demattneighbourdu 6 août 2008) - Il convient alors de taper dans la barre d’adresse du navigateur :
<local Ip>:<port mjpg>/?action=snapshotou<local Ip>:<port mjpg>/?action=stream
Pour lancer automatiquement les caméras et les flux au démarrage de la raspberry, il faut écrire les commandes dans le crontab.
- Ouvrir le crontab
crontab -e - A la première utilisation du crontab, on vous demande de choisir l’éditeur. Taper 1 si vous souhaitez utiliser nano.
- A la fin du fichier crontab ajouter les trois lignes suivantes :
@reboot python3 /home/pi/script/runCamera_1.py @reboot python3 /home/pi/script/runCamera_2.py @reboot python3 /home/pi/script/runCamera_py.py - Ici aussi, la commande doit être python3 et non pas python. Bien sûr sauvegarder et quitter.
@rebootsignifie que la commande sera lancée à chaque démarrage de la raspberry.- En cas d’absence de flux de l’une des caméras, rebouter le système en lançant la commande :
sudo reboot
- 3 caméras ont été installées
- Les flux des caméras peuvent être consultés sur un appareil du réseau local en tapant dans la fenêtre d’un navigateur web
<local IP Raspberry>:<port camera>/(par exemple :192.168.1.49:8082/)
- Installer le cadre de développement (framework) Django
- Utiliser Django pour créer un site web avec des requêtes répondant au cahier des charges du projet