Traitement flux http ?
Anonyme
Hello à tous,

Voici mon problème, je recois un flux http de type multipart qui contient donc des images. La question est, comment puis je traiter ce flux pour récupérer les jpeg une à une et les mettre dans un champs image ? en sachant que j'ai environ 25 images par secondes.

voici un exmple du flux recu :

HTTP/1.0 200 OK\r\n
Content-Type: multipart/x-mixed-replace;boundary=myboundary\r\n
\r\n
--myboundary\r\n
Content-Type: image/jpeg\r\n
Content-Length: 15656\r\n
\r\n
\r\n
--myboundary\r\n
Content-Type: image/jpeg\r\n
Content-Length: 14978\r\n
\r\n
\r\n
--myboundary\r\n
Content-Type: image/jpeg\r\n
Content-Length: 15136\r\n
\r\n
\r\n
--myboundary\r\n


Krys

Contribution le : 23/02/2005 11:16
Créer un fichier PDF de la contribution Imprimer


Re: Traitement flux http ?

Inscrit:
19/11/2002 12:20
Post(s): 390
Comment reçois tu les images? Par socket?

Tout dépends comment les images ont été encodées pour passer dans le flux http:
par exemple, dans les fichiers attachés dans les mails, les images sont codées en base64, ce qui oblige de faire la manip:
image codée en base 64 -> image "réelle"...

Exemple d'une image codée en base 64 dans un mail:
Content-Type: image/jpeg; name="test.jpg"
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="test.jpg"

/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAA
Af/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQT
ExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBdwEMAwERAAIRAQMRAf/EALYAAAEE
AwEBAAAAAAAAAAAAAAADBAUGAQIHCAkBAAIDAQEAAAAAAAAAAAAAAAACAQMEBQYQAAEDAgMC
CAcMBQkGBQUAAAEAAgMRBCESBTEGQVFhcSIyEweBkbEUtDcIocHRQlJiciMzhHW1otKTJDSC


Donc le serveur en question t'envoie t'il directement l'image, ou l'encode t'il d'abord dans un autre format?

Contribution le : 23/02/2005 14:51
Créer un fichier PDF de la contribution Imprimer


Re: Traitement flux http ?
Anonyme
Non il ne sont pas encodés..ce doit être un format brut jpeg.
Je recois le flux en envoyant une requete http. Donc c'est une réponnse stream...

Penses tu que l'on puisse traiter ce signal ?
Avec quel commande WD faire cela ?

merci de ta réponse

Contribution le : 23/02/2005 18:51
Créer un fichier PDF de la contribution Imprimer


Re: Traitement flux http ?

Inscrit:
19/11/2002 12:20
Post(s): 390
Il faudrait que tu mettes le code ici, l'équivalent d'une ou deux images pour voir... Sur ce que j'ai vu via google, le contenu de l'image jpeg est encapsulée au format mime (base64) lors du transfert http...

Si c'est vraiment du jpeg "brut", il suffit de faire une extraction dans la chaîne de caractère reçue pour récupérer uniquement le jpeg, si tu as un truc genre:
toto="Content-Type: image/jpeg\r\nContent-Length: 15656\r\n\r\n\r\n"
//pos_depart est le premier caractère jpeg brut.
contenu_jpeg=milieu(toto,pos_depart,pos_depart+15656)
ce qui fait que contenu_jpeg contiendra ...

il faut juste que tu récupères le , tu le sauves dans un fichier:
fsauvetexte("c:\test.jpg",contenu_jpeg)

Contribution le : 24/02/2005 10:10
Créer un fichier PDF de la contribution Imprimer


Re: Traitement flux http ?
Anonyme
Ok cool,

Par contre quel commande WD utiliser pour récuperer un flux en continu et lancer des traitements (récup JPG) de temps en temps ?

Krys

Contribution le : 24/02/2005 13:30
Créer un fichier PDF de la contribution Imprimer


Re: Traitement flux http ?
Anonyme
Voici un exemple (live) d'un flux en question :
http://137.229.42.101:8080/axis-cgi/mjpg/video.cgi?camera=&resolution=704x480


Krys

Contribution le : 24/02/2005 13:38
Créer un fichier PDF de la contribution Imprimer


Re: Traitement flux http ?

Inscrit:
19/11/2002 12:20
Post(s): 390
Ah... je croyais que tu avais déjà un moyen de le faire en fait...

Apparemment le fichier jpeg est bien "nature" à l'intérieur, tu avais raison.
Par contre, pour télécharger le flux en question, tu ne peux pas utiliser la commande Windev httprequete car elle est bloquante et elle attends la fin de téléchargement du fichier pour te rendre la main...
Et vu que c'est un flux, elle ne rendra jamais la main...

Il faudrait télécharger le fichier, comme un téléchargement via Internet Exlorer, malheureusement pour ça il faut accéder aux API Windows, et manque de bol, tu ne peux pas le faire car Windev 9 plantera lorsque tu essaieras d'appeler certaines des API exigées (j'ai essayé il fut un temps)...

Je vais essayer un ou deux trucs et je reviens...

Contribution le : 24/02/2005 15:28
Créer un fichier PDF de la contribution Imprimer


Re: Traitement flux http ?
Anonyme
Merci bcp de tes précieux renseignements...et surtout tiens moi au courant si jamais il existe une solution... sinon je serais obligé de prendre un autre outil de dev, genre .NET....

Contribution le : 24/02/2005 15:45
Créer un fichier PDF de la contribution Imprimer


Re: Traitement flux http ?

Inscrit:
19/11/2002 12:20
Post(s): 390
J'ai essayé par les sockets UDP et TCP, ça ne marche pas, en jouant avec le timeout de httprequete, marche pas non plus...

Ce que je te conseille, c'est de trouver ou de faire une DLL ou un activeX qui télécharge le "fichier", et sous windev, tu le lis au fur et à mesure... Je sais que ça, ça marche... Je l'ai fait, une DLL sous VC++6 qui télécharge les fichiers, comme IE6, c'est pour ça que je te dis que ça marche :) Par contre, je ne peux malheureusement pas te la passer, elle a été faite dans le cadre d'un projet interne à ma boîte et le code ne m'appartient "pas" on va dire...

Tu devrais trouver très facilement des codes ou mêmes des trucs tout prêt pour le télécahrgement de fichiers sur google ou même sur:
www.cppfrance.com

Windev est bien, il faut prendre simplement l'habitude de combler les lacunes avec autre chose...

Contribution le : 24/02/2005 16:14
Créer un fichier PDF de la contribution Imprimer


Re: Traitement flux http ?
Stagiaire WDF
Inscrit:
24/02/2005 15:49
Post(s): 8
Oki... en tout cas merci de ta sollicitude.
J'en ai profité pour m'inscrire

Merci encore.

Contribution le : 24/02/2005 16:36
Créer un fichier PDF de la contribution Imprimer


Re: Traitement flux http ?

Inscrit:
19/11/2002 12:20
Post(s): 390
Pour ce qui est du format, il est en effet assez simple:
--myboundary\r\n
Content-Type: image/jpeg\r\n\r\n
<Code fichier Jpeg>\r\n\r\n
--myboundary\r\n
Content-Type: image/jpeg\r\n\r\n
etc...


\r\n est RC en Windev, donc il faut chercher pour avoir le début du jpeg (exemple bien sûr, il faudra affiner):

str_header="--myboundary"+RC+"Content-Type: image/jpeg"+RC+RC
str_footer=RC+RC+"--myboundary"+RC+"Content-Type: image/jpeg"
ind=position(str_flux,str_header)
//il faut rajouter la taille de l'header qui n'appartient pas au JPEG
if ind>0 then
   ind+=Taille(str_header)
else
   //pas de header détecté, il faut continuer à récupérer du flux
end

//on cherche la prochaine image pour avoir la fin de notre image
//car la taille n'est pas indiquée dans le header...
ind_next=position(str_flux,str_footer,ind)
if ind_next>0 then
    //on a la fin de l'image...
    image_jpeg=str_flux[[ind sur (ind_next-ind)]]
    //on saute l'image que l'on a générée
    str_flux=str_flux[[ind_next A ]]
else
   //on a pas encore reçu la fin de l'image...
   //il faut continuer à lire le fichier par exemple...
end

Contribution le : 24/02/2005 16:43
Créer un fichier PDF de la contribution Imprimer


Re: Traitement flux http ?

Inscrit:
19/11/2002 12:20
Post(s): 390
Un truc qui marche sinon, c'est d'utiliser un soft de téléchargement "spécial" comme getright qui te permets de télécharger à un endroit précis que tu connais, et pas dans un répertoire caché comme Internet explorer, il ne te reste plus alors qu'à lire le fichier que getright est en train de télécharger...

Contribution le : 24/02/2005 16:47
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2