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

De L'abscisse - FabLab et Hackerspace de Dijon
Aller à : navigation, rechercher
(Installation)
(Lancement automatique au démarrage)
Ligne 41 : Ligne 41 :
 
Créer le fichier /etc/init.d/mjpg_streamer avec le contenu suivant, et le rendre exécutable.  
 
Créer le fichier /etc/init.d/mjpg_streamer avec le contenu suivant, et le rendre exécutable.  
  
  #!/bin/sh
+
#!/bin/sh
  # /etc/init.d/mjpg_streamer
+
# /etc/init.d/mjpg_streamer.sh
  # v0.21 phillips321.co.uk and pila
+
# v0.21 phillips321.co.uk and pila
  ### BEGIN INIT INFO
+
### BEGIN INIT INFO
  # Provides:          mjpg_streamer.sh
+
# Provides:          mjpg_streamer.sh
  # Required-Start:    $network
+
# Required-Start:    $network
  # Required-Stop:    $network
+
# Required-Stop:    $network
  # Default-Start:    2 3 4 5
+
# Default-Start:    2 3 4 5
  # Default-Stop:      0 1 6
+
# Default-Stop:      0 1 6
  # Short-Description: mjpg_streamer for webcam
+
# Short-Description: mjpg_streamer for webcam
  # Description:      Streams /dev/video0 to http://IP/?action=stream
+
# Description:      Streams /dev/video0 to http://IP/?action=stream
  ### END INIT INFO
+
### END INIT INFO
  OPTS="-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\""
+
 
+
INPUT="/usr/local/lib/input_uvc.so -d /dev/video0 -r 640x480 -f 20"
  f_message(){
+
OUTPUT="/usr/local/lib/output_http.so -p 8080 -w /usr/local/www"
        echo "[+] $1"
+
f_message(){
  }
+
        echo "[+] $1"
 
+
}
  # Carry out specific functions when asked to by the system
+
  case "$1" in
+
# Carry out specific functions when asked to by the system
        start)
+
case "$1" in
                f_message "Starting mjpg_streamer"
+
        start)
                mjpg_streamer -b $OPTS
+
                f_message "Starting mjpg_streamer"
                sleep 2
+
                mjpg_streamer -b -i "$INPUT" -o "$OUTPUT"
                f_message "mjpg_streamer started"
+
                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}"
 
                else
 
                        f_message "Could not find mjpg_streamer running"
 
                fi
 
                ;;
 
        *)
 
                f_message "Usage: $0 {start|stop|status|restart}"
 
                exit 1
 
 
                 ;;
 
                 ;;
  esac
+
        stop)
  exit 0
+
                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"
 +
                ;;
 +
        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 :  
 
Il reste alors à l'ajouter aux scripts de démarrage :  

Version du 13 avril 2014 à 09:14

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/

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"

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

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"
                ;;
        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
 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