RÉCUPÉRER LES IMAGES D?UNE CAMERA IP TRANSMETTANT UN FLUX MJPEG

Messages postés
69
Date d'inscription
samedi 14 mai 2005
Statut
Membre
Dernière intervention
12 août 2007
- - Dernière réponse : djmahdouch
Messages postés
3
Date d'inscription
dimanche 11 novembre 2007
Statut
Membre
Dernière intervention
23 février 2012
- 23 févr. 2012 à 14:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36494-recuperer-les-images-d-une-camera-ip-transmettant-un-flux-mjpeg

djmahdouch
Messages postés
3
Date d'inscription
dimanche 11 novembre 2007
Statut
Membre
Dernière intervention
23 février 2012
-
salut
Je me présente, Mahdi , étudiant en troisième année de Informatique, et actuellement en 23ème jour de stage de Projet fin d'étude.

Mon sujet porte sur la gestion d'une caméra IP de surveillance sous Android
Concrètement, je dois réaliser une application Android, permettant à l'utilisateur de pouvoir obtenir l'image sur son Tablet , que reçoit la caméra.
Mon problème actuel : récupérer l'image de la caméra, sur Android , création de la classe client (socket, les méthode de récupération de le flux vidéo )
Or, je me permets donc de vous demander un "petit coup de main", afin de savoir par quelle méthode avez vous pu récupérer l'image de la caméra ?
Si vous pouviez me renseigner, cela me serait d'une grande utilité pour la réalisation de mon projet de stage .
En vous remerciant.

Je vous laisse mes coordonnées si vous souhaitez me contacter :

Mail : mahjoub.mahdi5@gmail.com

MERCI . ......
SebLinck
Messages postés
212
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
23 juin 2011
-
Salut,

Il faudrait savoir de quel type de mpeg est ton flux d'abord ...
Par exemple certain type de mpeg ne renvois que les pixels qui ont
changé dans l'image par rapport à la précédente ...
Ce qui va engendrer de grosses modifications dans ce code.
Si ta caméra est une TrendNet Tv-IP 300 elle gère le lux MJPEG.
Et si ce n'est pas le cas, il existe du code LGPL chez trend Net:
http://www.trendnet.com/downloads/list_gpl.asp
Avec ça tu devrais pouvoir faire quelque chose de bien !
Bon courage ...
ALICE009
Messages postés
4
Date d'inscription
lundi 27 avril 2009
Statut
Membre
Dernière intervention
21 mai 2009
-
salut SEBLINCK ,
oui mon camera IP possède un serveur web intégré , le probleme que le flux transmit par la camera IP est MPEG et non pas MJPEG ?
pour l'adabtation du code :

const char* s=netFormat("GET /TRENDnet-cgi/mpeg/video.cgi?resolution="512 x 480"&fps="25" HTTP/1.1\r\nUser-Agent: HttpClient\r\nHost:"192.168.0.30"\r\nConnection:Keep-Alive\r\nCache-Control:no-cache\r\n\r\n");

est ce que c'est juste ?
SebLinck
Messages postés
212
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
23 juin 2011
-
Désolé ZOUZOUAG, je n'avais pas vu ta question.
Pour utiliser un client sur le réseaux local
comme source du flux, il faut soit connaitre
son protocole ( dans notre cas, protocole HTTP)
soit utiliser une API ou SDK fournissant une méthode.
Par exemple pour Axis:
Il faut lier le programme avec la lib de l'API,
puis appeller la méthode GetCurrentImage(...),
avec les paramètres qui vont bien. Et tu retrouves
ton image dans un buffer.Qu'il ne reste plus qu'a
pousser sur l'interface .
SebLinck
Messages postés
212
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
23 juin 2011
-
Salut,

Si ta caméra IP possède un serveur web intégré sur lequel tu peux te connecter,
pour visualiser le flux live en MJPEG, tu peux très simplement adapter ce code.
ALICE009
Messages postés
4
Date d'inscription
lundi 27 avril 2009
Statut
Membre
Dernière intervention
21 mai 2009
-
salut ,
je veux récupérer les images d'une camera IP 300 (512 x 480) est ce que je peux adapter ce code pour mon camera IP 300 TRENDnet ?

merci d'avance pour votre aide :)
zouzoualg
Messages postés
3
Date d'inscription
samedi 25 avril 2009
Statut
Membre
Dernière intervention
9 mai 2009
-
salut Seblink ,
merci de m'avoir répondu ,j'arrivais à compiler cet programme ,j'ai voulu essayer d'integrer cet programmme pour mon projet sur la detection des visages , Mais est ce que vous avez une idée si je peut récupère mon flux MJPEG non pas par une camera mais par un flux MPEG transmis par un client dans un réseaux local ?
merci d'avance pour votre aide :)
SebLinck
Messages postés
212
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
23 juin 2011
-
Salut,

Si Visual Studio 2008 ne trouve pas lalib GDI, c'est la loose...
Tu asfait quoi comme type de projet ?
zouzoualg
Messages postés
3
Date d'inscription
samedi 25 avril 2009
Statut
Membre
Dernière intervention
9 mai 2009
-
slt,
merci pour ton code , ce geniale comme idée , je voulus le compiler mais je trouver quelque deficulte ce qui conserne le linker , j'utilise visual studio C++2008 comme IDE et je ne trouve pas les lib suivants: libgdi32 libuser32 libole32 liboleaut32 libolepro32 libuuid dans mon IDE , et ce qui conserne libsock32 d'ou je peut le charger ?
merci d'avace pour votre aide :)
cs_Crepuscule3
Messages postés
24
Date d'inscription
samedi 13 octobre 2007
Statut
Membre
Dernière intervention
25 novembre 2008
-
Bonjour Youp_youp...

Pour ta question, lorsque j'étais encore sur mon projet de master 2, j'ai finis par réussir à récupérer les pixels dans un tableau que je pouvais traiter à ma guise.
Cela remonte maintenant à plus d'un an et je m'apprête à partir au travail, tout ce que je peux donc faire pour l'instant c'est te donner l'adresse d'un de mes messages sur ce forum où il me semble que je donne la solution (pour le cas d'une camera AXIS207MW utilisant un flux MJPEG).

http://www.cppfrance.com/forum/sujet-RECUPERER-IMAGE-DEPUIS-BUFFER_1043087.aspx

De mémoire, il me semble qu'il faut utiliser une fonction d'Axis genre GetCurrentImage(.. , .. , ..) avec les arguments qui vont bien, ce qui te récupère dans un buffer (qui a été passé en argument de la fonction) une image bitmap (dans le premier argument il me semble, si tu mets 1 ça fait du bitmap, si tu mets 0 ça fait du JPEG).

Je n'avais que 2 mois pour mon projet en plus des cours, je n'ai pas atteint le bout mais il ne me restait plus qu'à réafficher mes images traités dans une fenêtre.

J'espère que ça pourra t'aider.

Sinon, si tu veux plus d'info sur ce que j'avais fait en projet de master, recherche "Crepuscule3" sur ce forum, tu devrais trouver tous mes messages sur le sujet. Peut-être que ça t'aidera.

Cordialement,

Crepuscule3
youp_youp_
Messages postés
8
Date d'inscription
mercredi 21 décembre 2005
Statut
Membre
Dernière intervention
18 novembre 2008
-
up
youp_youp_
Messages postés
8
Date d'inscription
mercredi 21 décembre 2005
Statut
Membre
Dernière intervention
18 novembre 2008
-
Bonjour,

je souhaiterai savoir si l'un de vous à réussi dans cette mission qu'est la récupération des pixels de l'image?

Bonne soirée
SebLinck
Messages postés
212
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
23 juin 2011
-
Salut,
je travail sur une Axis 210, il est possible d'utiliser la même méthode que propose GSDevelop, mais il faut changer légèrement la requête ( ça va sans dire ).

"GET /axis-cgi/mjpg/video.cgi?resolution="320x240"&fps="25" HTTP/1.1\r\nUser-Agent: HttpClient\r\nHost:"192.168.10.50"\r\nConnection:Keep-Alive\r\nCache-Control:no-cache\r\n\r\n"

Voilà, sinon il est très facile de récupérer un flux M-jpeg en utilisant l'exemple AXIS,
mais comme le souligne Crepuscule3, il est assez difficile de faire un traitement derrière.
En revanche, la méthode fournis par AXIS est très bonne pour un enrgistrement de flux...
cs_Crepuscule3
Messages postés
24
Date d'inscription
samedi 13 octobre 2007
Statut
Membre
Dernière intervention
25 novembre 2008
-
Bonjour à tous,

je travaille actuellement sur une camera axis 207MW. Je souhaiterais faire un traitement d'image temps réel sur le flux MJPEG ou MPEG4 provenant de cette camera IP, dans le but de ne visualiser que les contours des objets filmés. Je possède actuellement un programme provenant de chez axis me permettant de relever le flux MJPEG. J'arrive donc à le visualiser mais je n'arrive toujours pas à trouver comment faire un traitement vidéo dessus (pour cela il me faudrait un accès aux pixels). Par ailleurs, je préciserai que les commandes utilisées pour afficher la vidéo sont des fonctions "InvokeHelper" de ActiveX ou DirectX je ne sais plus.
Si l'un d'entre vous a réussit à faire un traitement d'image sur un flux MJPEG, ou si quelqu'un a réussit à faire marcher le programme de cette page web, ou encore si quelqu'un sait comment utiliser le programme de chez axis, pourriez vous me donner un coup de main? Je galère vraiment depuis quelque temps.

Cordialement

Crepuscule3
kalidor86
Messages postés
1
Date d'inscription
dimanche 19 novembre 2006
Statut
Membre
Dernière intervention
14 août 2007
-
Salut à vous,

j'ai un problème avec la fonction netInit() à la compliation il me met une error comme quoi elle a besoin d'arguments (elle est appelée avec des arguments dans netSocket.h)
Or si je modifie la fonction dans le .h en lui virant les arguments , il la reconnait plus quand il doit aller la chercher dans la lib et me fait une erreur du type lnk2019.

Comme vous arruvez à le compiler je comprend pas d'où vient mon erreur.
pour info ,j'utilise Visual C++

Merci d'avance pour votre aide :)
4u4me4us
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3 -
Salut,
J'arrive pas a compiler tu peu me donner la lib netsoket STP
Nylsax
Messages postés
14
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
11 mai 2009
-
Salut je voudrai comprendre cette ligne de programme :
const char* s = netFormat ("GET /VIDEO.CGI HTTP/1.0\r\nUser-Agent: user\r\nAuthorization: Basic YWRtaW46REVVU1Q=\r\n\r\n") ;
Je sais pas comment tu apel ? netFormat ? d'ou il vient ?
Merci.
cs_isetcom
Messages postés
2
Date d'inscription
vendredi 14 avril 2006
Statut
Membre
Dernière intervention
14 décembre 2006
-
salut
je suis un etudiant en informatique je suis entrient de travailler sur la videsurveillance ip. ce pendant j'ai un probleme avec la compilation de votre code il ne genére pas .exe si vous pouvez m'aidé je serais tres reconéssant. c'est tres urgent svp.
voila mon e-mail:mekki.ben-younes@laposte.net
merci d'avance..
je7ch
Messages postés
4
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
7 mai 2007
-
salut
j'arrive à compiler votre code mais il ne veut pas s'executer.Bon il m'affiche le message suivant "fatal error C1010: unexpected end of file while looking for precompiled header directive
Error executing cl.exe."
j'ai besoin de votre aide s.v.p .C'est tres important.
merci
poseidon162
Messages postés
2
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
7 juillet 2006
-
Salut a tous.

Deja bien ton code.
Moi je travailles avec une DCS-6620G mais je dois recuperer le flux video afin de l'afficher dans une frame.
Alors j'arrive a controler la camera au niveau rotation par contre impossible de recuperer le flux.
J'utilise ethereal pour recuperer la requete a envoyer mais lorsque je l'envoie j'ai une exception : "Le serveur a renvoyé une réponse non valide ou non reconnue".
Pourtant j'envoi la même requête qu'IE.

voila le code correspondant.

char *l_strHeaders2 = "User-Agent: VVTK (ver=40)\r\nAccept: */*\r\nHost: 10.226.144.238\r\n\r\n";
char *l_strObject2 = "/cgi-bin/downstream.cgi?SID=0";
m_pconnection = m_session.GetHttpConnection(l_strServeur, port , "VVTK (ver=40)");
m_pfile = m_pconnection->OpenRequest(CHttpConnection::HTTP_VERB_GET , l_strObject2,NULL , 1 , NULL , "HTTP/1.0");
if(m_pfile != NULL)
{
try
{
m_pfile->AddRequestHeaders(l_strHeaders2);
m_pfile->SendRequest(NULL,0,NULL,0);
}
catch(CInternetException *e)
{
char error[255];
e->GetErrorMessage(error,255);
}
catch(CException *e)
{
char error[255];
e->GetErrorMessage(error,255);
}
}

et voila la requete envoyé par IE vu par ethereal :
GET /cgi-bin/downstream.cgi?SID=0 HTTP/1.0

User-Agent: VVTK (ver=40)

Accept: */*

Host: 10.226.144.238

et voila la mienne :

GET /cgi-bin/downstream.cgi?SID=0 HTTP/1.1

User-Agent: VVTK (ver=40)

Accept: */*

Host: 10.226.144.238



alors je me dit que c a cause du HTTP/1.1 mais il me le met par defaut et je ne sais comment le passer en 1.0.

Si quelqu'un a une idée je vous serez vraiment reconnaissant.

Merci d'avance
sarkosichon
Messages postés
1
Date d'inscription
jeudi 29 décembre 2005
Statut
Membre
Dernière intervention
9 juin 2006
-
salut!
Merci pour ton code mais je n'arrive pas à le compiler. je ne trouve pas la lib plib. j'ai trouvé netSocket.h mais il me manque toujours des fichiers d'en tete. si tu peu m'aiguillé ou ziper ton repertoire include et le mettre sur le site ca serai bien sympa de ta part.
merci d'avance.
hugo_cpp
Messages postés
8
Date d'inscription
dimanche 8 janvier 2006
Statut
Membre
Dernière intervention
17 août 2006
-
Slt,
Merci pour ton code, il est plutôt bien fait et surtout il marche!! Je l'ai adapter pour ma camera (Sony SNC-P1) car elle peut délivrer soit des MJPEG, soit du MPEG4. J'aimerai maintenant récupérer le flux MPEG4, pense-tu que c'est possible à partir de ton code? J'ai pas encore eu trop le temps de me pencher dessus mais si je trouve je te previens.
A+
turnerom
Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
1 -
Pour que ca marche il faut aussi linker avec libws2_32.a et libwsock32.a.
turnerom
Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2012
1 -
Salut
dans ton code, tu déclare
#define longMaxJpeg 16384 // longueur maximale d'une image jpeg reçue (suffisant pour du 320x200)
Comment tu trouve ton 16384, comment le caluler ? car moi j'utilise du 320x240.
Merci
poldere
Messages postés
69
Date d'inscription
samedi 14 mai 2005
Statut
Membre
Dernière intervention
12 août 2007
-
concernat la vision binoculaire . . . . tu connait ce site http://www.fuzzgun.btinternet.co.uk/rodney/rodney.htm . Si ça peut t'aider il y a un bon projet et de bonnes sources.
cs_aerith
Messages postés
54
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
12 mars 2006
-
J'ai commencer un algo de traitement d'image (il en est a la recherche de lignes complexes), sont but seras la vision binoculaire, en C+SDL...
Si tu arrive a me motivé je veux bien le continuer...

Je doit modifier cette recherche de ligne pour la rendre plus sensible, avec une notion d'intervale.

Je dev portable...
poldere
Messages postés
69
Date d'inscription
samedi 14 mai 2005
Statut
Membre
Dernière intervention
12 août 2007
-
Salut! Tiens ! Tu travaille sur un robot ? Moi aussi. A l'occasion on pourra avoir un contact pour échange vocal. De mon coté je suis en VB , win XP et cam USB ( un peu différent n'est ce pas lol ). A plus . . .