Entrées graphiques et sonores? [Résolu]

Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006
- - Dernière réponse : cs_coq
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
- 26 mars 2006 à 19:41
Je travaillais sur un système de monitoring avancé quand j'ai frappé un mur. Il faudrait que j'obtienne ce qui est sur l'écran. Mon système devrait effectuer cette opération 25 fois / seconde (pas plus bas que 15 fps). Y-a-t'il un moyen simple de faire ça? J'ai déjà de mettre en cache les informations requises et je créerai un système asynchrone, mais cela demandera beaucoup trop de mémoire vive (environ 10Mo (opérations) multiplié par le poids d'une image (donc la résolution)(dans ce cas 40Ko) et le nombre de fps (10000x25x40 = 10 000Mo)! Tout ce qui a été réussi, c'est la copie de test d'une image 200x141 à 12 fps en gif noir&blanc ... Très mauvais.

Si vous avez aussi un code pour le son en cours, merci de me l'envoyer.

Ce système sera disponible en partie sur codes-sources (une version spéciale, puisque la vraie contient des mots de passe et le contrôleur du système de protection de notre réseau).

En bref, comment obtenir le screenshot de l'écran de windows 25 fois par seconde sans que ça dépasse 300 Mo de mémoire système? et comment obtient-on le son qui se joue lors de ces captures?). Merci de me renseigner.

--------------------------------------------------
David L.Pratte, Administrateur
Mykeys Software Foundation
Making dreams into programs / Du rêve au programme
Afficher la suite 

13 réponses

Meilleure réponse
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
3
Merci
A tout hasard regarde aussi du côté des technos Windows Media, et notamment Windows Media Encocer.

/*
coq
MVP Visual C#
*/

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_coq
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006
0
Merci
Je travaille en .net 1.1 pour spécifier.

--------------------------------------------------
David L.Pratte, Administrateur
Mykeys Software Foundation
Making dreams into programs / Du rêve au programme
Demandes acceptées gratuitement
Commenter la réponse de Le_proprio_de_mykeyes
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
0
Merci
Salut,

Tu as regarder du côté des implémentations .Net du proto VNC ?
VncSharp
VNC-Client

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006
0
Merci
puisqu'il s'agit de clients VNC, ca ne prendrait pas une serveur VNC? d'après ma visite sur les sites on me parle juste des clients (je sais bien parler anglais, ne vous inquiétez pas).
Merci.

--------------------------------------------------
David L.Pratte, Administrateur
Mykeys Software Foundation
Making dreams into programs / Du rêve au programme
Demandes acceptées gratuitement
Commenter la réponse de Le_proprio_de_mykeyes
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006
0
Merci
Et pour l'instant je n'ai pas nécéssairement besoin d'autant, simplement parce que mon code enregistre ce qui se passe sur son propre poste. L'utilité est d'enregistrer l'écran puisque la caméra de surveillance ne diffuse qu'en direct. C'est pourquoi que je voudrais avoir un enregistrement 25fps (vidéo standard). Mon programme fait ensuite appel à un encodeur DivX afin de compresser la vidéo (lorsqu'on lui demande ou lorsque la vidéo pèse plus de 9 giga-octets. Mais ça, c'est un détail sans importance. Le constructeur de cette caméra est SafeGate, une petite compagnie du coin.

--------------------------------------------------
David L.Pratte, Administrateur
Mykeys Software Foundation
Making dreams into programs / Du rêve au programme
Demandes acceptées gratuitement
Commenter la réponse de Le_proprio_de_mykeyes
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
0
Merci
Comment ça en direct ?
Le problème qui peut aussi se poser avec ta méthode de capture est la mise en arrière plan de l'affichage de la vidéo, le changement de bureau (écran de veille, bureaux multiple, ...), le passage du logiciel à un affichage utilisant le même mode de rendu que WMP, etc etc

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006
0
Merci
En fait la caméra installée est reliée à un ordinateur par un système USB sans fil. Le CD d'installation contient les pilotes du système et aussi un logiciel, 24/7 Camera Security (2CS), qui affiche en temps réel les données de la caméra. Ce logiciel se met en avant-plan de tout les autres et s'affiche en plein écran. Seulement , dans 2CS, il n'y a pas de fonction "enregistrer dans un fichier". Le but de mon programme serait d'intégrer un module d'enregistrement au logiciel. Puisque mon module est en C# (et pas en c++), il va s'éxécuter en même temps sans afficher d'interface. La vidéo se sauvegardera en avi puis sera compressé en DivX après (ou lorsqu'elle atteindra 9 Go d'espace disque).

La mise en veille est désactivée, puisque c'est avec cet ordinateur qu'on surveille les activités suspectes. J'ai déjà essayé d'obtenir le flux de données à partir du périphérique, mais je n'ai jamais réussi à décrypter les données sécurisées).

Je travaille présentement sur un système utilisant des DLL déjà faites, mais l'éxécution (supposée prendre 25 fps)prend 10 images par secondes et les enregistre. au bout de quelques secondes, System.OutOfMemoryException... Ca fonctionne avec une image 200 x 150 en 8 bits, mais pas plus. Il me faut donc une autre solution.

Merci d'essayer de m'aider

--------------------------------------------------
David L.Pratte, Administrateur
Mykeys Software Foundation
Making dreams into programs / Du rêve au programme
Demandes acceptées gratuitement
Commenter la réponse de Le_proprio_de_mykeyes
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006
0
Merci
J'ai pu régler le problème d'affichage grâce à mes contacts chez SafeGate, qui m'ont donné une DLL de décryption des données codées. Cela m'a permis d'encoder en 35 fps, donc une excellente qualité vidéo. Cette DLL contenait aussi plusieurs filtres de correction d'images (il s'agit du module d'affichage de 2CS, retravaillé pour une compatibilité. Merci de m'avoir conseillé en ce point quand même.
Merci quand même d'avoir pris le temps et ton idée n'était pas mauvaise. Je vais voir pour savoir si on peut trouver autre chose.

--------------------------------------------------
David L.Pratte, Administrateur
Mykeys Software Foundation
Making dreams into programs / Du rêve au programme
Demandes acceptées gratuitement
Commenter la réponse de Le_proprio_de_mykeyes
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
0
Merci
Ok.
De rien :-)

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006
0
Merci
J'ai quand même regardé Windows Media Encoder, et ça aurait pu régler mon problème. Mais ce périphérique envoyait des données cryptées avec deux clés 256 bits changeant 12 fois / minute (selon le constructeur). Mais ça marche bien avec un périphérique standard.

--------------------------------------------------
David L.Pratte, Administrateur
Mykeys Software Foundation
Making dreams into programs / Du rêve au programme
Demandes acceptées gratuitement
Commenter la réponse de Le_proprio_de_mykeyes
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
0
Merci
Oui c'est sur qu'en prennant le periph comme source, il ne vas pas pouvoir faire grand chose avec les données cryptées.
Il me semblait par contre qu'on pouvait désigner l'écran comme source, et c'est dans ce sens là que j'en parlais :-)

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006
0
Merci
Ca peut se faire, mais avec la machine utilisée (processeur 800 MHz, 390 Mo mémoire vive, HD 4200 rpm), la capture se fait en 7 fps si on prend l'écran et 14 fps si on prend un périphérique standard avec WME (Encore moins avec un antivirus qui analyse en permanence le fichier vidéo). Avec la DLL recue, on a de 25 fps à 45 fps (en moyenne 35). la compression vidéo DivX et la sauvegarde est intégrée, donc moins de problèmes.

À tous ceux qui veulent un vidéo d'écran et un processeur assez puissant> Windows Media Encoder
À tous ceux qui ont une caméra SafeGate LPZ2379-2006 Wireless USB -> contactez moi pour la DLL.

Note: WME me donnait du 300x200 @ 15 fps (qualité moyenne) quand mon l'antivirus était désactivé.

--------------------------------------------------
David L.Pratte, Administrateur
Mykeys Software Foundation
Making dreams into programs / Du rêve au programme
Demandes acceptées gratuitement
Commenter la réponse de Le_proprio_de_mykeyes
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
0
Merci
C'est sûr que si tout est intégré, autant l'utiliser ^^. Et en plus c'est beaucoup plus sûr.
Pour le "problème" de fréquence de capture, il doit y avoir l'accélération matérielle qui entre en jeu, il me semble que ça joue sur les performances de capture.

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq