jeudi 20 mars 2008

Webcam librairie

[Télécharger]
"Certaines webcams (Philips SPC520NC...) ne fonctionnent pas avec JMF", dont la mienne, d'après ce constat j'ai réalisé une librairie utilisant du code natif via JNA basée sur avicap.dll et vfw.h.

Cette librairie fonctionnant exclusivement sous win32 permet d'accéder et de communiquer avec le driver d'une ou plusieurs webcam.
Aussi pas moyen à l'heure actuelle de l'intégrer avec AWT ou Swing, seulement avec la SWT.
Le développement continue...

Je me suis basé sur la description de Video For Window dont la doc est disponible ici : http://msdn2.microsoft.com/en-us/library/ms712699%28VS.85%29.aspx

La classe org.hypik.webcamlib.DeviceManager permet de lister tous les drivers installés en renvoyant des instances de org.hypik.webcamlib.device.Device.
Cette dernière propose une API permettant de:
- Créer la fenêtre de la webcam avec les différents styles possibles,
- Se connecter à la webcam,
- Demander à la webcam de copier la frame courante dans le presse-papier,
- Se déconnecter,
- De s'aboner aux erreurs renvoyées par la webcam,
- De s'abonner aux messages de status,
- De s'abonner à chaque frame affichées,
- De récupérer une frame,
- Détruire la fenêtre,
- D'ouvrir les boites de dialogues de configuration proposées par le driver,
- De dispatcher les messages du système vers la fenêtre de la webcam si on utilise pas la SWT ( marche pas avec AWT/Swing)

Le package org.hypik.webcam.compressor permet de décompresser une frame dans un certain format vers un autre. L'api permet de:
-Lister tous les décompresseurs disponible,
-Recherche un décompresseur pour un format d'entrée vers un format de sortie,
-Bien sur de décompresser une frame,

Je vous propose trois classes de tests (Simple, SWT et AWT) pour bien prendre en main la librairie.
Elles peuvent être lancées directement en renommant les fichiers contenu dans bin en .bat.
Pour le test utilisant la swt il vous faut la librairie disponible sur http://www.eclipse.org/swt/

J'espère pouvoir faire évoluer cette librairie rapidement.
Vos retours/suggestions sont les bienvenus.
NB: Toutes mes excuses au pingouin mais j'ai pas le courage de me pencher sur video4linux.
Pierrick Hymbert

3 commentaires:

Chetan Kumar a dit…

Hello,

Sorry, I do not know much french, but I'm greatly interested in your project. But unfortunately we're working in swing. We're working on timeline, so.. any idea when you might have swing support ?

Pierrick a dit…

Hi,

No problem to speak in english. (@french cela reste à prouver)

This library is based on win32 api. In this way, it is difficult to work with swing.

Do you try with an awt bridge ?

I wrote this source few month ago and I hav'nt times to investigate any more.
Please apologize me!

Do you try fmj (Frredom media 4 java)?

I'm realy happy you're interested in my work.

best regards
Pierrick

Ritchy a dit…

Salut! Super bibliothèque, elle marche très bien et est vraiment stable!

Par contre je n'arrive pas a récupérer une frame compressée avec un codec : apparemment, le fait de sélectionner un codec dans le menu n'a aucun effet (le buffer "compressedData" n'est jamais exploité dans la classe SWTTest par exemple)... Est-ce que tu aurais un exemple permettant de récupérer le buffer contenant la sortie du codec ?

Merci ! ;)