Installer MJPG-Streamer sur Raspberry Pi : Différence entre versions

De L'abscisse - FabLab et Hackerspace de Dijon
Aller à : navigation, rechercher
(Utilisation)
m (Auteurs)
 
(31 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{redac}}
 
 
 
==Présentation==
 
==Présentation==
 +
MJPG-Streamer est un logiciel capable de lire et de diffuser un flux video. Son utilisation principale consiste à diffuser le flux en provenance d'une webcam, sur une page web. Cet article décrit la procédure à suivre pour arriver à un tel résultat.
  
 
==Niveau de difficulté==
 
==Niveau de difficulté==
Ligne 8 : Ligne 7 :
  
 
==Installation==
 
==Installation==
Script :  
+
Tout d'abord, installer les dépendances, avec la commande suivante :  
  
  #!/bin/bash
+
sudo apt-get install subversion libjpeg8-dev imagemagick libv4l-dev
  echo "Installing dependencies"
+
 
  sudo apt-get install libjpeg8-dev imagemagick libv4l-dev
+
Récupérer les sources de MJPG-Streamer :
   echo "Cleaning"
+
    
  rm -rf mjpg-streamer*
+
svn checkout http://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/
  echo "Creating symlink to videodev2.h"
+
 
  sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h
+
La compilation de MJPG-Streamer nécessite le fichier /usr/include/linux/videodev.h, mais il existe désormais sous le nom videodev2.h. On utilise un lien symbolique pour y remédier :
  echo "Downloading sources"
+
 
  wget http://sourceforge.net/code-snapshots/svn/m/mj/mjpg-streamer/code/mjpg-streamer-code-182.zip
+
sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h
  echo "Extracting"
+
 
  unzip mjpg-streamer-code-182.zip
+
On se place dans le bon dossier :  
  echo "Building"
+
 
   cd mjpg-streamer-code-182/mjpg-streamer
+
cd mjpg-streamer
  make mjpg_streamer input_uvc.so output_http.so
+
 
  echo "Installing"
+
Puis on lance la compilation :
  sudo cp mjpg_streamer /usr/local/bin
+
    
  sudo cp output_http.so input_uvc.so /usr/local/lib/
+
make USE_LIBV4L2=true clean all
  sudo cp -R www /usr/local/www
+
 
 +
Dernière étape, on copie les fichiers générés à leur emplacement de destination :
 +
 
 +
sudo make DESTDIR=/usr/local install
  
 
==Utilisation==
 
==Utilisation==
  
le script bash suivant permet le lancement de MJPG-Streamer, configuré pour transmettre un flux vidéo provenant de la première camera disponible sur le système, de résolution 640*480, en 20 images par secondes.  Le flux est accessible en http sur le port 8080. Tousles logs de MJPG-Streamer sont enregistrés dans le fichier mjpgstreamer.log :
+
le script bash suivant permet le lancement de MJPG-Streamer en background, configuré pour transmettre un flux vidéo provenant de la première camera disponible sur le système, de résolution 640*480, en 20 images par secondes.  Le flux est accessible en http sur le port 8080. Tous les logs de MJPG-Streamer sont enregistrés dans le fichier mjpgstreamer.log :
  
   #!/bin/bash
+
   mjpg_streamer -b -i "/usr/local/lib/input_uvc.so -d /dev/video0 -r 640x480 -f 20" -o "/usr/local/lib/output_http.so -p 8080 -w /usr/local/www"
  echo "Starting MJPG-Streamer"
+
 
  export LD_LIBRARY_PATH=/usr/local/lib
+
Dès lors, l'interface web de MJPG-Streamer est accessible à l'url suivante : http://IP_DU_RASPBERRY:8080
  mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 640x480 -f 20" -o "output_http.so -p 8080 -w /usr/local/www" > mjpgstreamer.log 2>&1 &
+
Le flux vidéo est disponible sur l'URL : http://IP_DU_RASPBERRY:8080/?action=stream
 +
 
 +
==Lancement automatique au démarrage==
 +
Créer le fichier /etc/init.d/mjpg_streamer avec le contenu suivant, et le rendre exécutable.
 +
 
 +
#!/bin/sh
 +
# /etc/init.d/mjpg_streamer
 +
# v0.21 phillips321.co.uk and pila
 +
### BEGIN INIT INFO
 +
# Provides:          mjpg_streamer.sh
 +
# Required-Start:    $network $local_fs
 +
# Required-Stop:    $network
 +
# Default-Start:    2 3 4 5
 +
# Default-Stop:      0 1 6
 +
# Short-Description: mjpg_streamer for webcam
 +
# Description:      Streams /dev/video0 to http://IP/?action=stream
 +
### END INIT INFO
 +
 +
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
 +
 +
INPUT="/usr/local/lib/input_uvc.so -d /dev/video0 -r 640x480 -f 20"
 +
OUTPUT="/usr/local/lib/output_http.so -p 8080 -w /usr/local/www"
 +
f_message(){
 +
        echo "[+] $1"
 +
}
 +
 +
# Carry out specific functions when asked to by the system
 +
case "$1" in
 +
        start)
 +
                f_message "Starting mjpg_streamer"
 +
                mjpg_streamer -b -i "$INPUT" -o "$OUTPUT"
 +
                sleep 2
 +
                f_message "mjpg_streamer started"
 +
                ;;
 +
        stop)
 +
                f_message "Stopping mjpg_streamer..."
 +
                killall mjpg_streamer
 +
                f_message "mjpg_streamer stopped"
 +
                ;;
 +
        restart)
 +
                f_message "Restarting daemon: mjpg_streamer"
 +
                killall mjpg_streamer
 +
                mjpg_streamer -b -i "$INPUT" -o "$OUTPUT"
 +
                sleep 2
 +
                f_message "Restarted daemon: mjpg_streamer"
 +
                ;;
 +
        *)
 +
                f_message "Usage: $0 {start|stop|restart}"
 +
                exit 1
 +
                ;;
 +
esac
 +
exit 0
 +
 
 +
 
 +
Il reste alors à l'ajouter aux scripts de démarrage :
 +
  sudo chmod +x /etc/init.d/mjpg_streamer
 +
  sudo update-rc.d mjpg_streamer defaults
  
 
==Liens==
 
==Liens==
 +
 +
http://blog.miguelgrinberg.com/post/how-to-build-and-run-mjpg-streamer-on-the-raspberry-pi
 +
 +
http://www.raspberrypi.org/phpBB3/viewtopic.php?t=48597
 +
 +
http://www.phillips321.co.uk/2012/11/05/raspberrypi-webcam-mjpg-stream-cctv/
  
 
==Auteurs==  
 
==Auteurs==  
 
Pila
 
Pila
  
[[Catégorie:HackLab]] [[Catégorie:Fiches Pratiques]]
+
[[Catégorie:Électronique/HackLab]] [[Catégorie:Fiches Pratiques]]
  
 
[[Catégorie:Les projets du HackLab]]
 
[[Catégorie:Les projets du HackLab]]
  
[[Catégorie:Montages Raspberry Pi]]
+
[[Catégorie:Montages Raspberry Pi]] [[Catégorie:Montages Webcam]]

Version actuelle datée du 18 septembre 2015 à 11:26

Présentation

MJPG-Streamer est un logiciel capable de lire et de diffuser un flux video. Son utilisation principale consiste à diffuser le flux en provenance d'une webcam, sur une page web. Cet article décrit la procédure à suivre pour arriver à un tel résultat.

Niveau de difficulté

Vert.png

Installation

Tout d'abord, installer les dépendances, avec la commande suivante :

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

Récupérer les sources de MJPG-Streamer :

svn checkout http://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/

La compilation de MJPG-Streamer nécessite le fichier /usr/include/linux/videodev.h, mais il existe désormais sous le nom videodev2.h. On utilise un lien symbolique pour y remédier :

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

On se place dans le bon dossier :

cd mjpg-streamer

Puis on lance la compilation :

make USE_LIBV4L2=true clean all

Dernière étape, on copie les fichiers générés à leur emplacement de destination :

sudo make DESTDIR=/usr/local install

Utilisation

le script bash suivant permet le lancement de MJPG-Streamer en background, configuré pour transmettre un flux vidéo provenant de la première camera disponible sur le système, de résolution 640*480, en 20 images par secondes. Le flux est accessible en http sur le port 8080. Tous les logs de MJPG-Streamer sont enregistrés dans le fichier mjpgstreamer.log :

 mjpg_streamer -b -i "/usr/local/lib/input_uvc.so -d /dev/video0 -r 640x480 -f 20" -o "/usr/local/lib/output_http.so -p 8080 -w /usr/local/www"

Dès lors, l'interface web de MJPG-Streamer est accessible à l'url suivante : http://IP_DU_RASPBERRY:8080 Le flux vidéo est disponible sur l'URL : http://IP_DU_RASPBERRY:8080/?action=stream

Lancement automatique au démarrage

Créer le fichier /etc/init.d/mjpg_streamer avec le contenu suivant, et le rendre exécutable.

#!/bin/sh
# /etc/init.d/mjpg_streamer
# v0.21 phillips321.co.uk and pila
### BEGIN INIT INFO
# Provides:          mjpg_streamer.sh
# Required-Start:    $network $local_fs
# Required-Stop:     $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: mjpg_streamer for webcam
# Description:       Streams /dev/video0 to http://IP/?action=stream
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin 

INPUT="/usr/local/lib/input_uvc.so -d /dev/video0 -r 640x480 -f 20"
OUTPUT="/usr/local/lib/output_http.so -p 8080 -w /usr/local/www"
f_message(){
        echo "[+] $1"
}

# Carry out specific functions when asked to by the system
case "$1" in
        start)
                f_message "Starting mjpg_streamer"
                mjpg_streamer -b -i "$INPUT" -o "$OUTPUT"
                sleep 2
                f_message "mjpg_streamer started"
                ;;
        stop)
                f_message "Stopping mjpg_streamer..."
                killall mjpg_streamer
                f_message "mjpg_streamer stopped"
                ;;
        restart)
                f_message "Restarting daemon: mjpg_streamer"
                killall mjpg_streamer
                mjpg_streamer -b -i "$INPUT" -o "$OUTPUT"
                sleep 2
                f_message "Restarted daemon: mjpg_streamer"
                ;;
        *)
                f_message "Usage: $0 {start|stop|restart}"
                exit 1
                ;;
esac
exit 0


Il reste alors à l'ajouter aux scripts de démarrage :

 sudo chmod +x /etc/init.d/mjpg_streamer
 sudo update-rc.d mjpg_streamer defaults

Liens

http://blog.miguelgrinberg.com/post/how-to-build-and-run-mjpg-streamer-on-the-raspberry-pi

http://www.raspberrypi.org/phpBB3/viewtopic.php?t=48597

http://www.phillips321.co.uk/2012/11/05/raspberrypi-webcam-mjpg-stream-cctv/

Auteurs

Pila