Le 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.
Pour l’ensemble des méthodes exposées dans cet article, nous utiliserons le matériel et le montage suivant :
- Raspberry Pi A+
- Module Camera ou la version NoIR
- Un dongle WiFi Netgear WNA1000M
- Une carte micro-SD SanDisk 8Go
- Une batterie Romoss 5200mAh
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 subversionlibv4l-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 :
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 :
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.
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
Les 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.
Vous 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 :
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.
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.
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
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.
if r inférieur à g et g inférieur à b alors pixel = vert
Bonjour,
avez vous réalisé le visiophone avec le raspberry ? j’essaye d’en fabriquer un actuellement
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.
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
Hehe 🙂
On trouve tout sur magdiblog.fr : http://www.magdiblog.fr/divers/creer-une-passerelle-securisee-avec-un-raspberry-pi/
Tu peux t’inspirer de ce projet en installant tout sur le même Pi 😉
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;
Ping : Squal78 | Pearltrees
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.
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.
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
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 ?
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
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
oui mais c’est la tout le probleme je suis bloque
Bolqué où ? Au niveau de la recherche Google ? 😉
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
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 ?
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 🙂
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 !!
Autre petite question, je peux le connecter au wifi ? Puis-je y mettre une clé 3g?
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 !
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
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 🙂
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
Si vous n’avez pas de wifi vous pouvez mettre une clé 3G avec une SIM Free à 2€ 😉
Ping : Prolonger la durée de vie de vos cartes SD sur Raspberry Pi
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
😉
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
Ping : Raspberry - Remote things | Pearltrees
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?
Bonjour,
Est ce que tu es bien dans le bon répertoire quand tu lances cette commande ?
Je suis dans: pi@raspberrypi:-/mjpg-streamer$
est-ce le bon?
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 !
Bonjour,
Non je n’ai toujours pas trouvé la solution, je vous préviendrai si je trouve quelque chose
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.
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 »
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.
Bonsoir Raouf
J’ai le même problème que vous, les 2 pi tourne sous jessie.
Vous avez trouvé une solution ?
Bien Cordialement,
Ping : Projets - Enseignement | Pearltrees
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
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
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
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
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.
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.
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 .
Ping : ICN 1ere | Pearltrees
Ping : Groupe camera | Pearltrees
Ping : Groupe camera | Pearltrees
Ping : ICN 1ere | Pearltrees
Ping : Hacking - edouardmangel | Pearltrees
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
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
Ping : Raspberry faire un stream avec la picamera - La programmation sur le web
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
Ping : RaspiCam (Rasberry Pi) | Pearltrees
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 😉
Ping : Camera | Pearltrees
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
Ping : Raspberry | Pearltrees
Ping : Streamer la camera du Raspberry Pi sur Linux - Hackquarium
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 .