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

De L'abscisse - FabLab et Hackerspace de Dijon
Aller à : navigation, rechercher
(Installation)
(Ajout lancement au démarrage et modifs diverses)
Ligne 10 : Ligne 10 :
 
Tout d'abord, installer les dépendances, avec la commande suivante :  
 
Tout d'abord, installer les dépendances, avec la commande suivante :  
  
   sudo apt-get install libjpeg8-dev imagemagick libv4l-dev
+
   sudo apt-get install subversion libjpeg8-dev imagemagick libv4l-dev
  
 
Récupérer les sources de MJPG-Streamer :
 
Récupérer les sources de MJPG-Streamer :
 
    
 
    
   wget http://sourceforge.net/code-snapshots/svn/m/mj/mjpg-streamer/code/mjpg-streamer-code-182.zip
+
   svn checkout http://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer-code
  
Puis extraire le contenu de l'archive :
 
 
  unzip mjpg-streamer-code-182.zip
 
  
 
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 :  
 
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 :  
Ligne 26 : Ligne 23 :
 
On se place dans le bon dossier :  
 
On se place dans le bon dossier :  
  
   cd mjpg-streamer-code-182/mjpg-streamer
+
   cd mjpg-streamer-code/mjpg-streamer
  
 
Puis on lance la compilation, avec seulement les plugins qui nous intéressent :  
 
Puis on lance la compilation, avec seulement les plugins qui nous intéressent :  
 
    
 
    
   make mjpg_streamer input_uvc.so output_http.so
+
   make mjpg_streamer USE_LIBV4L2=true clean input_uvc.so output_http.so
  
 
Dernière étape, on copie les fichiers générés à leur emplacement de destination :
 
Dernière étape, on copie les fichiers générés à leur emplacement de destination :
  
  sudo cp mjpg_streamer /usr/local/bin
+
  sudo make DESTDIR=/usr/local install
  sudo cp output_http.so input_uvc.so /usr/local/lib/
 
  sudo cp -R www /usr/local/www
 
  
 
==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 :
 +
 
 +
  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"
  
   #!/bin/bash
+
==Lancement automatique au démarrage==
   echo "Starting MJPG-Streamer"
+
Créer le fichier /etc/init.d/mjpg_streamer.sh avec le contenu suivant, et le rendre exécutable.
   export LD_LIBRARY_PATH=/usr/local/lib
+
 
   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 &
+
   #!/bin/sh
 +
  # /etc/init.d/mjpg_streamer.sh
 +
  # v0.21 phillips321.co.uk and pila
 +
  ### BEGIN INIT INFO
 +
  # Provides:          mjpg_streamer.sh
 +
  # Required-Start:    $network
 +
  # 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
 +
   OPTS="-i \"/usr/lib/input_uvc.so -d /dev/video0\" -o \"/usr/lib/output_http.so -p 80 -w /var/www/mjpg_streamer -n\""
 +
 
 +
  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 $OPTS
 +
                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 -$OPTS
 +
                sleep 2
 +
                f_message "Restarted daemon: mjpg_streamer"
 +
                ;;
 +
        status)
 +
                pid=`ps -A | grep mjpg_streamer | grep -v "grep" | grep -v mjpg_streamer. | awk '{print $1}' | head -n 1`
 +
                if [ -n "$pid" ];
 +
                then
 +
                        f_message "mjpg_streamer is running with pid ${pid}"
 +
                        f_message "mjpg_streamer was started with the following command line"
 +
                        cat /proc/${pid}/cmdline ; echo ""
 +
                else
 +
                        f_message "Could not find mjpg_streamer running"
 +
                fi
 +
                ;;
 +
        *)
 +
                f_message "Usage: $0 {start|stop|status|restart}"
 +
                exit 1
 +
                ;;
 +
  esac
 +
  exit 0
 +
 
 +
Il reste alors à l'ajouter aux scripts de démarrage :
 +
  sudo chmod +x /etc/init.d/mjpg_streamer.sh
 +
  sudo update-rc.d mjpg_streamer.sh defaults
  
 
==Liens==
 
==Liens==
Ligne 52 : Ligne 107 :
  
 
http://www.raspberrypi.org/phpBB3/viewtopic.php?t=48597
 
http://www.raspberrypi.org/phpBB3/viewtopic.php?t=48597
 +
 +
http://www.phillips321.co.uk/2012/11/05/raspberrypi-webcam-mjpg-stream-cctv/
  
 
==Auteurs==  
 
==Auteurs==  

Version du 13 avril 2014 à 08:27

Dialog-warning.png Article en cours de rédaction Dialog-warning.png


Présentation

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-code


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-code/mjpg-streamer

Puis on lance la compilation, avec seulement les plugins qui nous intéressent :

 make mjpg_streamer USE_LIBV4L2=true clean input_uvc.so output_http.so

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"

Lancement automatique au démarrage

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

 #!/bin/sh
 # /etc/init.d/mjpg_streamer.sh
 # v0.21 phillips321.co.uk and pila
 ### BEGIN INIT INFO
 # Provides:          mjpg_streamer.sh
 # Required-Start:    $network
 # 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
 OPTS="-i \"/usr/lib/input_uvc.so -d /dev/video0\" -o \"/usr/lib/output_http.so -p 80 -w /var/www/mjpg_streamer -n\""
 
 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 $OPTS
               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 -$OPTS
               sleep 2
               f_message "Restarted daemon: mjpg_streamer"
               ;;
       status)
               pid=`ps -A | grep mjpg_streamer | grep -v "grep" | grep -v mjpg_streamer. | awk '{print $1}' | head -n 1`
               if [ -n "$pid" ];
               then
                       f_message "mjpg_streamer is running with pid ${pid}"
                       f_message "mjpg_streamer was started with the following command line"
                       cat /proc/${pid}/cmdline ; echo ""
               else
                       f_message "Could not find mjpg_streamer running"
               fi
               ;;
       *)
               f_message "Usage: $0 {start|stop|status|restart}"
               exit 1
                ;;
 esac
 exit 0

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

 sudo chmod +x /etc/init.d/mjpg_streamer.sh
 sudo update-rc.d mjpg_streamer.sh 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