Raspberry Pi Camera – 5 façons de faire du streaming

IMG_8806Le module Raspberry Pi Camera (et la version sans filtre IR, le module NoIR) sont de petits circuits (2,5cm x 2,5cm) dotés d’un capteur photo de 2592 x 1944 pixels capable d’enregistrer en 1080p à 30 images par secondes (ou 60 fps en 720p). Ce module se branche directement sur le port CSI du Pi prévu à cet effet.

La version NoIR permet de voir les infra-rouge, ce qui autorisera une vision nocturne si on le couple à un projecteur infra-rouge comme expliqué à fin de cet article : Système de vidéo-surveillance abordable avec des Raspberry Pi

Que ce soit pour un système de vidéo surveillance ou pour le pilotage d’un robot à distance, il faut pouvoir récupérer le flux vidéo et le diffuser à travers le réseau (streaming). Nous allons voir dans cet article 5 méthodes pour diffuser le flux vidéo d’un module Raspberry Pi Camera, plus ou moins efficacement.

Introduction et matériel utilisé

Le module Raspberry Pi Camera étant branché directement sur un Raspberry Pi, si vous voulez pouvoir voir les images capturées depuis un autre endroit qu’un écran branché sur ce même Pi, vous allez devoir envoyer ces images à travers le réseau. De nombreuses utilisations sont possibles :

  • la caméra de surveillance que l’on souhaite observer depuis son smartphone quand on part en vacance
  • le robot que l’on souhaite piloter à distance depuis un ordinateur de contrôle
  • filmer et diffuser des images en direct à travers internet
  • etc…

Petit bémol sur la notion de « streaming » vidéo : En principe, lorsqu’on parle de streaming vidéo, il s’agit bien d’un flux vidéo diffusé en direct. Comme nous allons le voir plus loin dans cet article, cette méthode consomme énormément de ressources (notamment en terme de bande passante), et dans de nombreux cas, il sera plus judicieux de diffuser une « suite d’images » à intervalles réguliers.

IMG_8810Le matériel

Pour l’ensemble des méthodes exposées dans cet article, nous utiliserons le matériel et le montage suivant :

Le Raspberry Pi A+ est vraiment idéal pour ce genre projet. Découvrez pourquoi en lisant cet article : Raspberry Pi A+ : Le meilleur de tous

On installe une Raspbian, tout ce qu’il y a de plus standard, on se connecte à son réseau WiFi et on active le module caméra grâce à l’outil raspi-config.

Voyons maintenant comment diffuser les images sur le réseau.

Méthode 1 : Netcat et Mplayer

C’est la méthode la plus simple et la plus directe. Il s’agit simplement de rediriger le flux capturé par la commande raspivid dans netcat, puis de récupérer ce flux et l’injecter en entrée dans le lecteur vidéo Mplayer. L’inconvénient de cette méthode est que le flux vidéo n’est visible que depuis un seul PC distant.

Depuis un PC sous Linux exécutez dans un premier temps la commande suivante (après avoir installé mplayer si besoin) :

nc -l -p 5001 | /usr/bin/mplayer -fps 10 -cache 1024 -

Cette commande ordonne à nc (netcat) d’écouter sur le port 5001 et redirige ce qui arrive dans le lecteur vidéo Mplayer en prévoyant un cache de 1024 Ko pour 10 images par secondes.

Puis, sur le Pi, il suffit d’exécuter raspivid et de rediriger la sortie vers l’adresse IP de notre PC client en utilisant netcat :

raspivid -t 0 -w 1280 -h 720 -o - | nc adresse_ip_du_pc_client 5001

On indique ainsi à raspivid de capturer des images en 1280×720 pixels et de les envoyer à netcat.

Simple et efficace, une fenêtre Mplayer s’ouvre automatiquement sur le PC client avec les images en direct. On notera toutefois une forte latence qui peut varier de 3 à 15 secondes en fonction de la qualité et du nombre d’images transmisses et de la qualité du lien WiFi.

Note : Un test réalisé sur un Raspberry Pi B, branché en Ethernet, permet de réduire la latence à environ une seconde.

Si vous souhaitez enregistrer le flux vidéo dans un fichier sur le PC client, il suffit de modifier la première commande de cette manière :

nc -l -p 5001 | /usr/bin/mplayer -fps 10 -cache 1024 -demuxer h264es -dumpstream -dumpfile ./Bureau/ma_video.h264 -

Méthode 2 : streaming VLC

Cette méthode, relativement simple à mettre en place, souffre d’une très forte latence. Toutefois, et contrairement à la première méthode, le flux vidéo est visible depuis plusieurs postes clients.

Sur le Pi, il suffit d’installer VLC :

apt-get install vlc

Puis de rediriger la sortie de la commande raspivid (comme dans la méthode 1) vers VLC en exécutant la commande suivante :

raspivid -t 0 -n --width 1280 --height 720 -o - | cvlc stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264

Coté PC client, il suffit de lire le flux vidéo avec VLC grâce à la commande :

cvlc http://adresse_ip_du_pi:8090

Pour enregistrer le flux vidéo dans un fichier, utilisez la commande suivante :

cvlc http://adresse_ip_du_pi:8090 --sout file/ts:./Bureau/ma_video.h264

Cette méthode est à privilégier si vous souhaitez diffuser votre flux vidéo à plusieurs personnes sur internet par exemple, et que la latence n’est pas un problème.

Méthode 3 : streaming de Pi à Pi avec OMXplayer

Les méthodes 1 et 2 permettent de diffuser le flux vidéo à destination d’un ordinateur distant. Si vous souhaitez capturer un flux vidéo depuis un Pi pour l’observer depuis un autre Pi branché à un écran, il convient d’utiliser le lecteur OMXplayer.

Cette méthode est un peu plus complexe à mettre en oeuvre mais permet plus de souplesse quant à l’usage que l’on souhaite en faire. Depuis le Pi équipé du module caméra, nous allons procéder exactement comme pour la méthode 1, en redirigeant la sortie de la commande raspivid dans netcat. Puis, sur le Pi branché à l’écran de visionnage, nous allons dans un premier temps récupérer le flux netcat pour l’enregistrer dans un fichier et le lire, dans un deuxième temps, avec OMXplayer.

Sur le Pi de visionnage, créez d’abord un fichier de type fifo :

mkfifo /dev/shm/video.fifo

Deux points très important à comprendre dans cette commande :

  • /dev/shm : ce point montage fonctionne comme un disque dur mais aucune donnée ne sera stockée sur le disque dur en lui même ; tout sera géré en mémoire vive. C’est parfait pour y placer un fichier vidéo tampon.
  • fichier de type .fifo : les fichiers de type fifo fonctionnent comme les fichiers standards, mais se comportent comme des « pipes », ce qui permet au système d’y stocker des données sans passer par le système de fichier. Encore une fois, parfait pour y placer un fichier vidéo tampon 🙂

Le fichier tampon étant prêt, il faut maintenant le remplir. Côté Pi de visionnage, mettez netcat en écoute en redirigeant la sortie vers le fichier tampon :

nc -l -p 5001 > /dev/shm/video.fifo

Puis côté Pi caméra, envoyez le flux vidéo à travers netcat comme dans la méthode 1 :

raspivid -t 0 -w 960 -h 540 -o - | nc adresse_ip_du_pi_visionnage 5001

De retour sur le Pi de visionnage, il suffit de dire à OMXplayer de lire le fichier tampon :

omxplayer /dev/shm/video.fifo

Cette méthode n’offre pas une latence exemplaire, mais permet de transmettre un flux vidéo de Pi à Pi. Idéal par exemple pour créer un portier vidéo, avec un Pi qui film et un Pi qui affiche la vidéo, les deux Pi étant reliés par WiFi 🙂

Méthode 4 : mjpg-streamer

A partir de là, on sort du streaming vidéo pur et dur puisqu’il s’agit, avec le mjpeg, de transmettre et d’afficher une suite de photos les unes après les autres. Le résultat est beaucoup moins fluide puisqu’on ne pourra espérer afficher que 5 à 10 images par seconde maximum (contre 10 à 30 images par secondes pour les méthodes précédentes), mais nous pourrons exploiter les images beaucoup plus simplement en les affichant dans une page web, ou sur un écran comme le PiHomeDashScreen par exemple. Si vous disposez d’un NAS Synology, ou d’un système sachant gérer des caméras IPs, vous pourrez également exploiter la caméra du Pi grâce à cette méthode.

Voici le lien vers la page SourceForge de mjpg-streamer : http://sourceforge.net/projects/mjpg-streamer/

Dans un premier temps, installez les dépendances de mjpg-streamer ainsi que subversion :

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

mjpg-streamer aura besoin d’un fichier videodev.sh pour fonctionner correctement :

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

Téléchargez ensuite la dernière version de mjpg-streamer grâce à subversion, puis installez le en utilisant les commandes suivantes :

svn co https://svn.code.sf.net/p/mjpg-streamer/code/
cd code/mjpg-streamer
make USE_LIBV4L2=true clean all
make DESTDIR=/usr install

Une fois installé, créez un répertoire temporaire et lancez raspistill en mode timelapse pour capturer 2 images par secondes :

mkdir /tmp/stream
raspistill --nopreview -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -tl 500 -t 9999999

Enfin, lancez mjpg-streamer grâce à cette commande :

LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp/stream -n pic.jpg" -o "output_http.so -w ./www"

Par défaut, mjpg-streamer lancera un serveur web sur le port 8080/TCP auquel vous pouvez accéder avec un navigateur en utilisant l’adresse : http://adresse_du_pi:8080

Vous devriez voir l’interface de démonstration de mjpg-streamer :

capture_mjpg-streamer

Les deux options les plus intéressantes sont JavaScript et Stream. Ces deux méthodes vous permettrons de récupérer les images pour les afficher dans une page web, ou sur le PiHomeDashScreen comme vous pouvez le voir dans la photo si dessous :

capture_homedashscreen_pi_camera

Pour réaliser cela, j’ai simplement placé le code suivant dans le fichier index.php du PiHomeDashScreen (consulter les articles de ce projet pour en savoir plus).

<div id="webcam"><img src="http://adresse_ip_du_pi:8080/?action=snapshot" /></div>

<script type="text/javascript">
  var imageNr = 0;
  var finished = new Array();
  var paused = false;
  function createImageLayer() {
    var img = new Image();
    img.style.position = "absolute";
    img.style.zIndex = -1;
    img.onload = imageOnload;
    img.onclick = imageOnclick;
    img.src = "http://adresse_ip_du_pi:8080/?action=snapshot&n=" + (++imageNr);
    var webcam = document.getElementById("webcam");
    webcam.insertBefore(img, webcam.firstChild);
  }
 
  function imageOnload() {
    this.style.zIndex = imageNr; // Image finished, bring to front!
    while (1 < finished.length) {
    var del = finished.shift(); // Delete old image(s) from document
    del.parentNode.removeChild(del);
  }
  finished.push(this);
    if (!paused) createImageLayer();
  }
</script>

C’est de loin la méthode que je recommande car elle permet de diffuser les images à plusieurs clients en même temps tout en conservant une latence acceptable pour peu que l’on se contente d’une image de qualité moyenne.

Méthode 5 : Serveur Web

Cette méthode consiste à capturer des images à intervalles régulier avec la commande raspistill, puis à les diffuser grâce à un serveur web Apache. C’est la méthode que j’ai utilisé pour réaliser ce Système de vidéo-surveillance abordable avec des Raspberry Pi.

video_surveillance_monitorin_safe

Cette méthode est très proche, fonctionnellement, de mjpg-streamer. Je songe d’ailleurs à refondre mon système de vidéo surveillance en utilisant mjpg-streamer.

Je vous invite à lire cet article pour en savoir plus sur cette méthode « artisanale » 😉 :  Système de vidéo-surveillance abordable avec des Raspberry Pi

Conclusion

raspberry_pi_cameraLes méthodes de streaming vidéo pur (méthode 1 à 3) permettent un affichage fluide en sacrifiant la réactivité, ce qui rend cette option inutilisable pour le pilotage d’un robot par exemple.

Les méthodes utilisant une suite d’images sur le principe du mjpeg (méthode 4 et 5) permettent une plus grande souplesse dans l’exploitation des images et offrent globalement une meilleure latence (car moins d’images à traiter et à faire transiter par le réseau). Personnellement, j’utilise la méthode 4 avec mjpg-streamer pour la quasi totalité de mes projets actuels. C’est une méthode très polyvalente, simple à mettre en place et peu gourmande en ressource pour le Pi.

Quelque soit la méthode utilisée, le vrai problème reste la bande passante. Que ce soit en 3G, en Wifi ou même en Ethernet, la vitesse du réseau sera limitante pour la transmission d’images.

raspberry_pi_camera_noirVous trouverez sur le net beaucoup d’articles qui expliquent comment mettre en oeuvre le logiciel Motion sur un Raspberry Pi. Je conseille cette approche uniquement si vous souhaitez faire de la détection de mouvement car Motion est fait pour cela à la base. Même si Motion utilise le même principe du mjpeg que dans les méthodes 4 et 5, il est très gourmand en ressources pour un Pi et offrira moins de souplesse que mjpg-streamer.

Reste une méthode que je n’ai pas encore essayé à ce jour mais qui semble être intéressante car « prête à l’emploi » pour un Pi : http://elinux.org/RPi-Cam-Web-Interface.

Je vous invite à partager vos expériences sur ce sujet, notamment pour savoir si vous connaissez des méthodes qui offrent une latence très faible.

Article intéressant sur le sujet :

67 réflexions au sujet de « Raspberry Pi Camera – 5 façons de faire du streaming »

  1. simplearetenir

    Excellent article comme d’habitude.
    Connaissez vous un moyen pour fabriquer un visiophone à partir d’un raspberry ?
    Mixer streaming video+son d’un raspberry et affichage du stream video+son d’un autre. Sera-t-il assez puissant ? Ou doit m’orienter vert une autre plateforme.

    Répondre
    1. Olivier Auteur de l’article

      Bonjour, et merci pour vos encouragements 🙂

      Le Raspberry Pi est tout à fait capable de géré ce type d’utilisation 🙂
      Je suis moi même en train de concevoir un visiophone basé sur des Pi modèle A+ reliés par WiFi. Je n’en suis qu’au début du projet, mais pour le moment je ne rencontre pas d’obstacle technique 🙂

      En vous souhaitant bonne continuation.

      Répondre
      1. Dimitri

        Bonjour moi il est question de faire du streaming je m’explique je dispose de 2 raspberry pi3 une avec une camera impx219 je veux en effet filmer avec la premiere envoyer la video a la deuxiéme raspberry qui elle envoie la vidéo sur un pc pour visionner en direct Pour cela je voudrais relier les deux raspberry en ethernet et le raspberry intermédiaire par wifi a l’ordinateur j’aimerai vous demander ce que vous en pensez et la procédure a suivre s’il vous plait

        Répondre
        1. Bertrand

          Bonjour, faites chauffer le compilateur C, et regardez du côté de l’API des Sockets BSD, en particulier des sockets UDP. Les sockets sont le meilleur moyen pour permettre à deux applications de communiquer entre elles.

          Le serveur (le Pi qui capture les images) se met en écoute sur un port, reçoit une demande de connexion du PC, et se met alors à envoyer les images (une suite de pixels. Un pixel c’est 3 octets RGB dont chaque valeur oscille entre 0 et 255).

          Les sockets sont bloquants -recv() est bloquante- donc pour recevoir et visualiser en même temps, il faudra mettre en place une stratégie de threading (1 thread pour le GUI et 1 pour le réseau. Pour le GUI vous choisissez votre lib: FLTK ou GTK+, l’API WIn32, Java, QT) ou utiliser l’appel système select() pour faire du multiplexage d’entrées/sorties asynchrone (en clair lire et écrire sur un descripteur de fichier sans bloquer). Le Pi est désigné comme un prétexte pour faire du C et du Python.

          Pour vous ça sera facile à développer car il n’y a qu’un seul client.
          Quand vous l’aurez fait, vous pourrez ensuite modifier les pixels de chaque frame pour écrire du texte, appliquer un logo, même faire une vidéoconférence avec un écran vert (détourage rapide en déterminant si un pixel est vert ou pas: if(rb) pixelvert = true;)

          Pour gagner en performances vous pourrez aussi concevoir un algorithme qui n’envoie pas la totalité de l’image, mais uniquement les différences avec le frame précédent. Idéal si la caméra est fixe. Comme bien précisé dans cet article c’est la vitesse d’upload qui sera la goulot d’étranglement.

          Répondre
          1. Bertrand

            if r inférieur à g et g inférieur à b alors pixel = vert

  2. Bastien

    Merci pour ce très bon article !
    J’ai moi aussi testé plusieurs solution pour faire une babycam avec un Raspberry Pi B et une Logitech C270, et c’est mjpg-streamer qui l’a emporté !
    Avec ça je diffuse du 720p à 20fps sans soucis, le tout passant par nginx histoire de mettre un htaccess et de faciliter l’accès avec un alias /stream (j’avais mis du chiffrement au début mais c’est un peu trop pour le pi). On y accède depuis pc, smartphone, tablette sans problème 🙂
    Le seul vrai point négatif pour moi est l’absence de prise micro sur le pi.

    Répondre
    1. Yann

      Salut,
      Je vais à mon tour essayer ce tutoriel avec mjpg-streamer (version jacksonliam) et une camera raspberry sur un Pi B.

      Comme je n’ai pas envie que tout le monde puisse accéder à ces images je cherche un moyen de passer ça sur https.

      Peux tu m’en dire un peu plus sur « (j’avais mis du chiffrement au début mais c’est un peu trop pour le pi) », comment avais tu fait et si ça l’avait vraiment écroulé.

      J’ai déjà nginx qui tourne et me permet d’avoir un serveur cal/card DAV en https là encore.

      J’ai pas trouvé grand chose avec la recherche [https+mjpg-streamer] ou [SSL+mjpg-streamer] ou [chiffrer+mjpg-streamer] donc je suis preneur de toute info!
      Merci
      @+ Yann

      Répondre
      1. Bastien

        Bonsoir,
        Cela fonctionnait avec le https, mais la consommation CPU était très élevée dès lors que le flux était affiché sur 2 périphériques en simultané (1 PC et une tablette en l’occurrence).

        Comme celui-ci n’est pas installé chez moi, je ne peux pas y avoir accès trop souvent, donc j’ai préféré avoir un truc plus stable.

        Après il faut savoir que j’avais mis du chiffrement relativement élevé, et que c’est un des premiers raspberry pi avec seulement 256Mo de RAM et non overclocké.

        Voici la configuration SSL que j’ai utilisé pour nginx :
        ssl on;
        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;
        ssl_prefer_server_ciphers on;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:+HIGH:+MEDIUM;
        ssl_dhparam /etc/nginx/ssl/dh2048.pem;
        add_header Strict-Transport-Security max-age=2678400;

        Répondre
  3. Ping : Squal78 | Pearltrees

  4. remyv

    Bonjour,

    Je vous remercie pour ce très bon article, très bien documenté.

    Petite question : est-il possible d’alimenter une telle installation avec une alimentation solaire ? Ceci afin de rendre le module totalement autonome.

    Encore merci pour ce blog.

    Répondre
    1. Olivier Auteur de l’article

      Bonjour,
      Merci pour vos encouragements, cela fait toujours très plaisir 🙂
      Même en se basant sur un Pi A+ dont la consommation est réduite au minimum, je crains qu’un panneau solaire (à moins de plusieurs m2) ne suffira pas pour alimenter le système en 24/7.
      En utilisant une grosse batterie, vous pouvez espérer tenir une petite semaine à vue de nez.

      Répondre
  5. patrick samuel

    Bonjour moi j’aimerais plutot faire une video depuis mon raspberry et le diffuse en local mais je sais pas comment le faire depuis mon raspberry sans probleme. car j’ai un sujet pariel pour projet de fin d’etude merci de votre aide d’avance

    Répondre
    1. Olivier Auteur de l’article

      Bonjour,
      C’est tout à fait ça 🙂 Toutes les méthodes présentées ici permettent de faire cela en principe.
      Que souhaites tu faire exactement ?

      Répondre
      1. patrick samuel

        dans mon projet il s agit de la television sur ip et egalement straming c est a dire j doit diffuse ma propre video sur notre reseau local,sur des d autre pc ou sur smarphone et j sais pas comment faire

        Répondre
        1. Olivier Auteur de l’article

          Dans ce cas tu as besoin de faire de la diffusion « multicast ». Le plus simple est d’utiliser VLC qui permet de faire ça relativement facilement 🙂
          Bon courage

          Répondre
          1. Olivier Auteur de l’article

            Bolqué où ? Au niveau de la recherche Google ? 😉

  6. augustin

    Bonjour , merci pour ces explications si riche . j’ai un projet qui touche un peu à ce sujet . je dois mettre en place une application android qui reçoit en temps réel les vidéos de raspberry pi B en temps réel . Je ne sais pas trop comment commencer .

    Merci pour votre aide

    Répondre
  7. Rivaldo

    Bonjour et merci pour la quantité et la qualité d’articles !
    Je suis novice et tout nouveau dans le circuit 🙂
    J’ai un écran tft très basique sur lequel je souhaite diffuser de la vidéo HD.
    Je pensais installer un raspberry et lire ainsi les vidéos HD sur mon écran.
    Pensez-vous que cela est faisable?Si oui, quel modèle me conseillez vous ?

    Répondre
    1. Olivier Auteur de l’article

      Héhé bienvenue à toi Rivaldo 🙂

      C’est tout à fait possible 🙂 Le mieux est de prendre un Raspberry Pi 2 disponible ici http://www.amazon.fr/gp/product/B00T2U7R7I/ref=as_li_tl?ie=UTF8&camp=1642&creative=19458&creativeASIN=B00T2U7R7I&linkCode=as2&tag=magdiblog-21&linkId=HQ4EREO72ZFFNL3B

      Il est tout à fait capable de diffuser de la vidéo en HD 🙂 Installez dessus Kodi pour le visionnage de vidéo HD et tout roulera comme sur des roulettes 🙂

      Répondre
  8. Rivaldo

    Merci pour la réponse.
    Je vais le commander sur Amazon. Y’a t’il d’autres éléments à acheter tant que je suis sur Amazon !!

    Répondre
  9. Raphaël

    Bonjour,

    Merci beaucoup pour toutes ces instructions.
    Je me lance dans un projet artistique pour lequel je souhaiterais envoyer un flux vidéo via un modem 3G depuis un site isolé, accessible ensuite depuis n’importe quel ordinateur qui a une connexion internet.
    En vous lisant j’ai bien l’impression que c’est faisable. Je suis débutant et je viens de commander le matériel et j’essaierai bientôt. Par contre je me demandais comment faire pour diffuser du son capté par un micro sur le même flux que la vidéo…
    Si vous avez une idée je suis preneur.
    Merci beaucoup et bonne continuation !

    Répondre
  10. mad

    Bonjour,

    J’ ai lu vos articles super interessants car je vais mettre une camera sur un robot qui a une carte
    arduino yun (linux, wifi) et je vais reprendre vos articles mais je suis plus interessé par ceci:

    Je voudrais mettre en place une camera sur un bateau pour le surveiller , Il est à quai dans un port ou il y a de la wifi (je suppose).
    J’ y connais pas grand chose mais je suis motvé, mes questions sont simples:
    (l’ alimentation est réglée par du solaire et une batterie).
    D’ aprés vous est il possible de faire une installation peu couteuse.
    et que faudrait il comme matériels.
    Merci de votre réponse

    Répondre
    1. Olivier Auteur de l’article

      Boujour, oui c’est tout à fait possible. Avec un simple raspberry pi et le module caméra idoine vous pouvez créer une caméra de surveillance. Vous pouvez vous inspirer de cet article directement ou bien regarder l’article sur le système de télésurveillance (vous le trouverez en parcourant le sommaire).
      Bonne continuation à vous 🙂

      Répondre
  11. mad

    Merci de votre réponse c’est sympa.
    Je pense que je vais certainement avoir des problèmes de connection car nous sommes dans un port et je n’ ai pas de connection internet sur le bateau hors mis mon mobile ou peut être la wifi..
    En tout cas merci, les temps de réponse sont super.
    Guy

    Répondre
    1. Olivier Auteur de l’article

      Si vous n’avez pas de wifi vous pouvez mettre une clé 3G avec une SIM Free à 2€ 😉

      Répondre
  12. Ping : Prolonger la durée de vie de vos cartes SD sur Raspberry Pi

  13. tie

    Bonjour,

    Tout d’abord bravo pour cette article de très bonne qualité et cela est rare de nos jour.
    J’utilisais Motion avec ma webcam en usb.

    Mais ayant fait l’acquisition d’une camera pi je suis tombé par hasard sur cette page.
    Et votre argumentation sur motion m’a convaincu.

    Cordialement,
    Tie

    Répondre
  14. PEPS

    Hello,
    Est-il possible d’enregistrer une vidéo ET lorsque je veux pouvoir faire un replay des 15 ou 20 derniers secondes de vidéos ? comme pour un match de football par exemple ?
    merci

    Répondre
  15. Ping : Raspberry - Remote things | Pearltrees

  16. Delaporte

    Bonjour,
    merci beaucoup pour ton article qui est bien écrit et motivant.
    J’ai un problème avec ma configuration: quand je tape la ligne de commande LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i « input_file.so -f /tmp/stream -n pic.jpg » -o « output_http.so -w ./www »
    Il me repond:
    MJPG Streamer Version: svn rev: Unversioned directory
    i: folder to watch…: /tmp/stream/
    i: forced delay…….: 0
    i: delete file………: no, do not delete
    i: filename must be.. : -no filter for certain filename set-
    ERROR: could not find output plugin output_http.so
    Perhaps you want to adjust the search path with:
    # export LD_LIBRARY_PATH=/path/to/plugin/folder
    dlopen: output_http.so: cannot open shared object file: No such file or directory

    Quelqu’un a eu cette erreur et sait comment la résoudre?

    Répondre
    1. Olivier Auteur de l’article

      Bonjour,
      Est ce que tu es bien dans le bon répertoire quand tu lances cette commande ?

      Répondre
    2. Greg

      Bonjour,
      J’ai le même problème, avez-vous trouvé une solution?
      Je n’arrive pas à accéder au fichier mjpg_streamer (Not a directory) alors qu’il apparaît bien lorsque je fais la commande ls. Une idée?
      Merci d’avance !

      Répondre
      1. Delaporte

        Bonjour,
        Non je n’ai toujours pas trouvé la solution, je vous préviendrai si je trouve quelque chose

        Répondre
        1. JipJip

          Bonjour,

          Je viens de voir votre post, j’ai un problème similaire, si vous avez une solution pouvez vou la poster svp?
          Sinon, je n’ai pas eu le temps de le corriger, mais je pense que ca peut venir du fait que mjpg_streamer n’existe pas, la raisons peut venir d’une mauvaise installation à ce niveau

          svn co https://svn.code.sf.net/p/mjpg-streamer/code/
          cd code/mjpg-streamer
          make USE_LIBV4L2=true clean all
          make DESTDIR=/usr install

          Je n’ai pas mon RPi à la main pour le tester, mais est-ce que vous avez bien le répertoire code avec mjpg-streamer?

          où bien est-ce que quand vous fait mjpg… et puis tabulation la commande apparaît automatiquement?

          Si je trouve la réponse je la posterai.

          Répondre
      2. JipJip

        Bonjour,

        Moi aussi j’avais un problème avec l’accès à mjpg-streamer.
        Il semblerai que lors de « MAKES » je rencontre de problèemes. Bref la commande mjpg-streamer ne marche pas. Du coup, j’ai suivi les instructions marqués dans le link suivant.

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

        En plus de la commande d’enregistrement la commande pour lancer le serveur web mjpg j’ai lancé la commande

        LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i « input_file.so -f /tmp/stream -n pic.jpg » -o « output_http.so -w /usr/local/www/www »

        Répondre
  17. Raouf

    Bonsoir, je souhaite faire un Streaming entre deux PI avec OMXPLAYER, mais cela ne marche pas, j’ai suivi exactement toutes les étapes. Le ping entre les deux PI marche parfaitement grâce à un réseau ad-hoc que j’ai crée. Cependant après la création du fichier fifo la commande : nc -l -p 5001 > /dev/shm/video.fifo tourne continuellement sur mon invité de commande mais je pense que c’est normal vu qu’il intercepte le flux.
    Puis quand j’écris la commande sur le Pi caméra : raspivid -t 0 -w 960 -h 540 -o – | nc adresse_ip_du_pi_visionnage 5001 ==> J’ai une image comme un début de video puis ça s’arrête.
    Ensuite quand je repars sur mon Pi de visionnage , j’ouvre un nouvel invité de commande à cause de l’ancienne commande qui tourne toujours puis je tape : omxplayer /dev/shm/video.fifo et là surprise cette commande aussi tourne continuellement et je n’ai aucun mais alors aucun résultat. J’attends vos réponses s’il vous plait 🙂

    Bien Cordialement.

    Répondre
    1. Ludo

      Bonsoir Raouf
      J’ai le même problème que vous, les 2 pi tourne sous jessie.
      Vous avez trouvé une solution ?

      Bien Cordialement,

      Répondre
  18. Ping : Projets - Enseignement | Pearltrees

  19. BODO ENZO

    bonjour en suivant le tuto pour VLC j’obtien l’erreur suivante :

    [01c6fde8] pulse audio output error: PulseAudio server connection failure: Connection refused
    [01c72010] core interface error: no suitable interface module
    [01bdd8f8] core libvlc error: interface « globalhotkeys,none » initialization failed
    [01c72010] dbus interface error: Failed to connect to the D-Bus session daemon: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
    [01c72010] core interface error: no suitable interface module
    [01bdd8f8] core libvlc error: interface « dbus,none » initialization failed
    [01d46c48] dummy interface: using the dummy interface module…
    [73d00508] core input error: Invalid PCR value in ES_OUT_SET_(GROUP_)PCR !

    Je charche a récupérer le flux vidéo de la camera pour la broadcaster avec OBS sur mac.

    Merci

    Répondre
  20. katarpilar

    Salut, il existe un fork de MJPG Streamer qui intègre un plugin prenant en charge le module camera PI :

    projet : https://github.com/jacksonliam/mjpg-streamer

    doc : https://github.com/jacksonliam/mjpg-streamer/blob/master/mjpg-streamer-experimental/plugins/input_raspicam/README.md

    J’utilise cette configuration pour contrôler un robot a distance qui rend une qualité très correcte avec une latence d’environ 500 ms en wifi sur une RaspberryPI A+ :

    ./mjpg_streamer -o « output_http.so -w ./www -p 8078 » -i « input_raspicam.so -q 5 -fps 15 » &

    Pour le chiffrement l’encapsulation ssh (tunnel) n’ajoute presque aucune latence/consommation de ressources :

    pc client :

    $ ssh @ -L 8078:localhost:8078

    Puis dans un navigateur web :
    http://127.0.0.1:8078

    Penser à bloquer l’accès extérieur avec iptables :

    créer un fichier dans /etc/init.d/ :
    $ sudo vi /etc/init.d/iptables_custom

    #!/bin/bash
    ## On flush iptables.
    iptables -X
    iptables -F

    ## Permettre à une connexion ouverte de recevoir du trafic en entrée.
    iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

    ## On accepte les paquets en entrée sur lo.
    iptables -A INPUT -i lo -j ACCEPT

    ## On accepte les connexions ssh en entrée.
    iptables -A INPUT -p tcp –dport 22 -j ACCEPT

    ### On log les paquets dorp en entrée.
    iptables -A INPUT -j LOG –log-prefix « INPUT:DROP: » –log-level 6

    ## politique par défaut :
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD DROP

    On permet son exécution :
    $ sudo chmod +x /etc/init.d/iptables_custom

    Il sera exécuté à chaque démarrages :
    $ sudo update-rc.d iptables_custom defaults

    Répondre
  21. loic

    Bonjour,

    je recherche la manière d’afficher la camera directement sur un écran branché sur le même pi (ici des lunettes lcd). Quelqu’un aurait-il un tuto pour m’aider ? Merci d’avance

    Répondre
  22. Patk

    Bonjour,

    Je voulais installer la méthode mjpg-streamer mais je rencontre 2 erreurs :

    1 – la commande raspistill –nopreview -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -t1 500 -t 9999999 me répond

    option -t1 invalide.

    2- la commande LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i « input_file.so -f /tmp/stream -n pic.jpg » -o « output_http.so -w ./www » répond

    mjpg_streamer : command not found.

    merci pour votre aide

    Répondre
    1. katarpilar

      Bonjour,
      vous avez confondu la lettre l avec le chiffre 1 dans la commande raspistill –nopreview -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -tl 500 -t 9999999

      Pour votre second problème, assurez vous de lancer la commande en étant à l’emplacement du programme mjpg_streamer ou ajouter son emplacement à votre variable d’environnement « PATH » :
      http://www.commentcamarche.net/faq/3585-bash-la-variable-d-environnement-path

      Vous obtiendrai un bien meilleur rendu en utilisant le plugin input_raspicam.so comme je l’explique plus haut dans les commentaires.

      Répondre
  23. kndz

    Merci pour cet article, permettez moi une petite question car je suis novice et j’apprends par mes propres moyens (très très lentement): croyez vous qu’il soit possible de faire de la vidéosurveillance sans avoir d’accès au wifi, j’entends par là est il possible à l’aide d’une carte sim de visualiser en temps réel ou en l’envoyant sur un serveur les images ? Si c’est oui, quel est le matériel nécessaire ? Cordialement.

    Répondre
  24. samuel

    je me demandait si sa serait possible d’enregistrer les images en plus haute déffinition et pourquoi ne pas enregistrer les images directement dans une mémoir et de les convertir sur ordinateur .

    Répondre
  25. Ping : ICN 1ere | Pearltrees

  26. Ping : Groupe camera | Pearltrees

  27. Ping : Groupe camera | Pearltrees

  28. Ping : ICN 1ere | Pearltrees

  29. Ping : Hacking - edouardmangel | Pearltrees

  30. tchapablogtchapa

    merci vraiment un bon article.
    mais c’est tout à fait ça 🙂 Toutes les méthodes présentées ici permettent de faire cela en principe.
    Que souhaites tu faire exactement ?
    mon projet et un drone commander par une module gsm 4g

    Répondre
  31. PsyGNUx

    Cherchant une solution permettant un bon FPS sans trop de latence j’ai testé toutes les techniques présentées ici et ailleurs avec une pi-camera NoIR v2.1 (raspistill, raspivid, cvlc module v4l2, gstreamer), après de longues heures d’acharnement j’en suis arrivé à la conclusion qu’aucune de ces manipulations n’était satisfaisante: instabilité de vlc, plus de paquet gstreamer avec les bons codec (debian), latence élevée, fps trop bas….
    Puis je suis tombé sur l’outil v4l2rtspserver, projet datant de 2012 sous licence ‘unlicense’ tjrs marquée en v0.0.1 mais fonctionnemant parfaitement bien (déjà +iseurs jours de fonctionnement sous ZoneMinder), je le conseille fortement avant la phase de l’auto-suicide 😉
    Suffit de le compiler en suivant le tuto: https://github.com/mpromonet/v4l2rtspserver

    Répondre
  32. Ping : Raspberry faire un stream avec la picamera - La programmation sur le web

  33. elfab06

    bonjour,
    J’essaye de faire afficher le preview de la commande raspistill sur mon ecran waveshare pouces mais le preview s’affiche toujours sur l’ecran hdmi même lorsque celui ci est débranché.
    Merci de votre aide

    Répondre
  34. Ping : RaspiCam (Rasberry Pi) | Pearltrees

  35. mrxavvv

    bonjour j’aimerai savoir comment faire juste un ptit streaming de webcam avec mon raspi trés facilement . pour surveiller mon vieux chien . sur windows rien de plus simple avec YAWcam . une idée ? 🙂 la qualiter m’inporte peu , mais la reactiviter un peu plus 😉

    Répondre
  36. Ping : Camera | Pearltrees

  37. RENARD

    Bonjour,

    Merci pour l’article qui m’a aider un peu dans ma recherche.
    Actuellement je cherche à faire avec mon Pi3 (qui a recalbox) :
    – ma console ps2 / nintendo game cube ou autre en RCA
    – un grabber RCA vers USB
    – l’écran officiel Tactile du Pi
    – Diriger le flux vidéo de l’usb sur mon écran branché via le GPIO.

    Tout ça pour garder ma recalbox et profiter de mes autres consoles salon via mon petit écran sans monopoliser la TV familiale 🙂

    Est-ce possible à votre avis?

    CDT

    RENARD

    Répondre
  38. Ping : Raspberry | Pearltrees

  39. Ping : Streamer la camera du Raspberry Pi sur Linux - Hackquarium

  40. maria

    Bonjour , j’ai comme projet d’afficher à distance un ensemble de videos de projet sur une TV connectée via notamment une application android , j’ai pensé à kodi sur une rasbeppru pi sauf que les profs cherchent un menu très simple où les videos seront directement accessible de la page d’acceuil sans passer par toutes l’arborescence , pour cela je voulais vous demander si vous n’avez pas des idées pour m’aider .

    Répondre

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.