Page 1 sur 2

[R] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : mer. 27 janv. 2010 06:40
par pierrotm777
Bonjour,

J'ai revu à la baisse mes besoins , j'ai par hasard trouvé un script plus simple tjs avec 4 cams mais sans fioritures !

Mon seul problème est de créer commandes différentes ( 1 par caméra) qui au premier appui ouvre la caméra associée et au deuxième appuie la referme proprement.

Je porpose les touches F1 à F4 :

Multicam.au3
► Afficher le texte
Merci de votre aide !

Re: [..] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : ven. 05 févr. 2010 10:13
par pierrotm777
Bonjour,

J'ai un peu bossé et ai fini par arriver à quelque chose de fonctionnel, mais pour une seule caméra.
Si je rajoute les trois autres, le scripte devient trés long à charger !

Mais mon problème et que je n'ai pas de webcam pour tester. J'utilise pour mes test http://www.webcamsimulator.com/ qui comme son
nom l'indique simule une caméra à partir d'un fichier vidéo, et pour une raison que j'ignore, je dois aussi utiliser http://www.manycam.com/ et choisir la source vidéo dans manycam pour voir afin une vidéo dans ma GUI ! OOUUUFFF!!!

Donc , si quelqu'un a au moins deux webcam usb sur son PC, celui-ci pourrait-il me dire si déjà sans ces programmes mon script fonctionne ?

Utilisation:
-rester sur 4 écrans par défaut
-choisir 'Save Bmp' ou 'Save Avi'
-cliquer sur Cam1 sous le combo 'Save Type'
(si aucun préfix n'est défini dans le fichier ini , chaque nouveau fichier, bmp ou avi, est nommé à partir de la date et de l'heure du pc) .

Ce qu'il manque:
-pouvoir choisir une source différente pour chaque webcam
-mettre ON ou OFF chaque webcam séparément (les 4 boutons sous le combo 'Nbr of Cam').
-choisir écran 1 webcam ou 4 webcams(combo 'Nbr of Cam') tout en restant dans la même GUI .

J'ai mis à jour le script dans le premier post, mais je joinds tous les fichiers nécessaires .

Merci de votre aide.

Re: [..] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : sam. 06 févr. 2010 08:04
par pierrotm777
56 lectures et pas un avis ?

Re: [..] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : mer. 10 févr. 2010 22:54
par ani
bein non :D

Re: [..] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : ven. 19 févr. 2010 16:45
par pierrotm777
Je n'ai pas posté au bon endroit ou quoi ? :oops:

J'ai un peu avancé .
Je pense avoir trouvé comment définir quatre webcams différentes:
J'ai modifié l'UDF webcam.au3 de telle sorte que l'on puisse gérer 4 devices différents:

ainsi, les lignes:
► Afficher le texte
deviennent:
► Afficher le texte
où $WebCamId peut donc prendre les valeurs 0 à 3 ; il semblerait que l'on puisse aller jusqu'à 9 !

Je n'arrive toujours pas à bien gérer le passage de 4 webcams à une webcam à l'écran, fonction _Gui1().
Si l'on peut me guider ?

J'ai modifié le fichier principal dans le post n°1.
J'ai besoin d'un testeur svp ! (une webcam nécessaire, deux idéal!)


le nouveau fichier UDF webcam.au3 serait donc:

Re: [..] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : dim. 21 févr. 2010 19:31
par pierrotm777
Bonjour,
Je continue mon monologue :evil: .

J'ai mis à jour le post un . Essentiellement du graphique.

Actuellement, je peut:
-sauver bmp ou avi pour chaque webcam mais uniquement si une seule webcam est ON
-definir leasource pour chaque webcam dans un fichier ini

Ce que je ne peux pas faire:
-fermer une webcam
-sortir du programme si plus d'une webcam est démarrée
-sauver un fichier bmp/avi si plus d'une webcam est démarrée
-ne peux pas effacer le fichier bmp aprés crétion du fichier jpg

Merci de votre aide !

Re: [..] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : dim. 21 févr. 2010 21:03
par Stigmate
Dommage que je n'ai pas les connaissances requises, le projet est intéressant j'espère que tu ne va pas l'abandonner.
J'ai testé avec la webcam de mon pc portable mais celle ci ne s'affiche pas. Cela dit tu destinais sa a des webcam usb je sais pas si sa fait une différence. En revanche ma cam virtuel fonctionne.
Sinon le script est effectivement long à charger et mange du cpu, si tu réussi à le boucler la case optimisation s'impose =p
Bon courage !

Re: [..] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : dim. 21 févr. 2010 22:21
par timmalos
Il est tres difficile de s'imiscer dans un script aussi complet que celui la. On ne sait pas vraiment ou est le probleme, on ne peut pas tester bref c'est difficile de vous aider. Ceci dit un projet tel que celui ci devrait etre effectué avec un langage de bas niveau et non un langage de script comme Autoit, vous gagneriez alors le double de vitesse de chargement.

Re: [..] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : lun. 22 févr. 2010 15:31
par pierrotm777
Merci de vos encouragements.

Effectivement autoit n'est peut être pas approprié, mais je ne connait, et trés mal, que lui.
Le titre n'est pas bien clair effectivement, car le script doit pouvoir marcher avec une webcam branchée autrement qu'en USB.

Mon script est un ajout de différent morceaux de scripts trouvés ci et là .

Tout est défini dans l'udf webcam.au3 .

Les devices (sources) vont ici de 0 à 3.
Les commandes dispo sont:

_WebcamOpen($sHwnd, $sLeft, $sTop, $sWidth, $sHeight,$WebCamId=0) ;démarrage de la caméra
_WebcamClose($sId) ; fermeture de la caméra
_WebcamSnap($sId, $sFile) ; création bmp selon n° caméra
_WebcamRecordStart($sFile, $sId) ; enregistrement avi selon n° caméra
_WebcamRecordStop($sId) ; arrêt enregistrement avi selon n° caméra

Aprés un peu de lecture , j'ai ajouté cette fonction Setting qui permet de régler , la compression, le format , la source.
Settings($sId,$Settings)

J'ai ajouté dans le post 1 l'udf webcam.au3 modifié !

Voilà pour une petite description .

Re: [..] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : mar. 23 févr. 2010 20:05
par pierrotm777
Bonjour,

Je continue mon monologue :wink: ,
Je viens de mettre à jour le post 1 (multicam.au3)
Dans cette version , j'ai nettoyé le code, ajouté la possibilité d'envoyer l'image sauvegardée sur une page web (pour l'instant 192.168.0.1:6969) et l'envoie par mail d'un fichier bmp zipé .

J'ai un problème avec la fonction de sauvegarde bmp.
Je souhaite , aprés la création du bmp, convertir le bmp en jpg.
J'utilise donc GDIPlus, aucun problem.
Par contre , je n'arrive pas à effacer mon fichier bmp aprés création du jpg , comme si GDIplus me bloqait le "Filedelete".

Par contre si j'efface les lignes GDIPlus, j'arrive bien à effacer mon fichier bmp ?

Une idée SVP :mrgreen:

voici ma fonction:
► Afficher le texte

Re: [..] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : mar. 23 févr. 2010 20:23
par timmalos
Essaye de rajouter

Code : Tout sélectionner

_GDIPlus_ImageDispose ($img)
avant le shutdown

Re: [..] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : mer. 24 févr. 2010 10:26
par pierrotm777
Merci timmalos,

C'était pas un problème donc de fermeture de GDIPlus.

Merci

Re: [..] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : mar. 02 mars 2010 18:08
par pierrotm777
Bonjour,

J'ai revu à la baisse mes besoins . J'ai donc reduit énormément le script d'origine , voir post 1 ,(plus lisible !).

Mon seul besoin est de pouvoir ouvrir et fermer à volonté chaque caméra séparément .
Par appui sur les touches F1 à F4 par exemple .
Un appuie sur F1 doit ouvrir la cam 1 , un autre appuie la refermer .

J'ai simplifier le script du post 1 ce qui devrait permettre de mieux comprendre mon problème ! :mrgreen:

Merci de votre aide

Re: [..] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : jeu. 04 mars 2010 21:15
par pierrotm777
Bon je pense avoir trouvé tous mes problèmes .

Voici le script final avec l'ajout de 4 boutons on/off !
► Afficher le texte

Re: [R] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : jeu. 04 mars 2010 22:11
par timmalos
Felicitations, on n'a pas pu vous apporter grand aide il faudrait une heure complète pour se plonger dans votre code et pour etre franc je n'en avais pas tres envi.

Re: [R] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : mar. 09 mars 2010 20:01
par pierrotm777
Merci,

Mon seul regret est que dans mon avant dernière version, j'avais trouvé un script dont javais fait un UDF qui permettait de définir des boutons avec des images .ico.

FunButton.au3:
► Afficher le texte
Je pouvais alors créer un bouton avec du text et une image de dessus du genre:
_GUICtrlCreateBitBtn("Cam 1", 552, 68, 44, 46, Webcam.ico, 20, 35, 0, 3, 10);ON/OFF caméra 1

Mais avec la commande GUICtrlCreateCheckbox("OFF",810,10,40,40, $BS_PUSHLIKE) , je n'ais plus cette possibilité .
Si vous avez une idée ,

Merci d'avance

Re: [R] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : dim. 04 juil. 2010 20:57
par paberge
Bonjour, J'ai tenté de faire fonctionner votre script avec deux caméra sans y parvenir. Il semblerait que windows ne soit pas adapté à ce type d'opération, si j'en crois des développeurs C++. C'est dommage....

Re: [R] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : mer. 08 sept. 2010 15:57
par LOUIS
Bonjour,

Juste pour te dire que j'ai fais un programme qui utilise 2 webcams ( installées) en C++ mais avec la librairie vfw ( celle qui contient les fonctions que tu utilises).

Bonne suite.

Re: [R] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : mer. 08 sept. 2010 16:14
par pierrotm777
Et ça fonctionne avec 2 webcams?

Re: [R] Gestion de 4 Webcam USB ou IP dans une seule fenêtre

Posté : mer. 08 sept. 2010 19:03
par matwachich
Juste comme ca en passant:

ca:

Code : Tout sélectionner

DllCall($user, "int", "SendMessage", "hWnd", $cap0[0], "int", $WM_CAP_END, "int", 0, "int", 0)
DllCall($user, "int", "SendMessage", "hWnd", $cap0[0], "int", $WM_CAP_DRIVER_DISCONNECT, "int", 0, "int", 0)

DllCall($user, "int", "SendMessage", "hWnd", $cap1[0], "int", $WM_CAP_END, "int", 0, "int", 0)
DllCall($user, "int", "SendMessage", "hWnd", $cap1[0], "int", $WM_CAP_DRIVER_DISCONNECT, "int", 0, "int", 0)

DllCall($user, "int", "SendMessage", "hWnd", $cap2[0], "int", $WM_CAP_END, "int", 0, "int", 0)
DllCall($user, "int", "SendMessage", "hWnd", $cap2[0], "int", $WM_CAP_DRIVER_DISCONNECT, "int", 0, "int", 0)

DllCall($user, "int", "SendMessage", "hWnd", $cap3[0], "int", $WM_CAP_END, "int", 0, "int", 0)
DllCall($user, "int", "SendMessage", "hWnd", $cap3[0], "int", $WM_CAP_DRIVER_DISCONNECT, "int", 0, "int", 0)

DllClose($user)
Exit
Ne serait-il pas mieux comme ça?:

Code : Tout sélectionner

For $i = 0 To 3
    DllCall($user, "int", "SendMessage", "hWnd", Eval("$cap" & $i & "[0]"), "int", $WM_CAP_END, "int", 0, "int", 0)
    DllCall($user, "int", "SendMessage", "hWnd", Eval("$cap" & $i & "[0]"), "int", $WM_CAP_DRIVER_DISCONNECT, "int", 0, "int", 0)
Next

DllClose($user)
Exit