begin process at 2010 02 10 10:56:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Multimedia

 > 

Capture webcam avec JMF, les formats de capture


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Capture webcam avec JMF, les formats de capture

mercredi 13 avril 2005 à 18:54:25 | Capture webcam avec JMF, les formats de capture

elawem

Bonjour à tous, je dois afficher les flux vidéos de plusieurs webcams pour un jeu de belote en réseau.
Grâce aux différents tutoriaux et exemples du site j'ai réussi à acquérir le flux et l'afficher dans un JPanel, cependant comme cela est destiné à un jeu de belote, je dois obtenir ce flux dans un format bien précis: du 160*120 en RGB.
Voici le code que j'ai mis en oeuvre pour récupérer les périphériques video de la machine:

[code]
videoFormat = new VideoFormat(VideoFormat.RGB, new Dimension(160, 120), 230400, Format.byteArray, 20f);
deviceList = CaptureDeviceManager.getDeviceList(new VideoFormat(VideoFormat.RGB));
webcam = (CaptureDeviceInfo)deviceList.get(i);
[/code]

Je pensais que l'object VideoFormat ainsi crée allait me donner un flux en 160*120. En fait il ne permet que de selectionner les peripheriques supportant ce mode.

Je ne trouve pas comment modifier la taille de ce flux apres acquisition du CaptureDeviceInfo.
J'ai bien trouvé qu'apres avoir crée un Player on pouvait accéder à une interface de tyep Control pour modifier le flux mais je voudrai que ca soit automatique.

Pour résumer, je cherche un moyen de spécifier la taille du rendu vidéo avant de faire un:

player.start();

sans solliciter une action de l'utilisateur.


mercredi 13 avril 2005 à 18:57:33 | Re : Capture webcam avec JMF, les formats de capture

elawem

Petit rectificatif, j'ai mal copié mon code source, le voila:

[code]
videoFormat = new VideoFormat(VideoFormat.RGB, new Dimension(160, 120), 230400, Format.byteArray, 20f);
deviceList = CaptureDeviceManager.getDeviceList(new VideoFormat(videoFormat));
webcam = (CaptureDeviceInfo)deviceList.get(0);
[/code]

jeudi 14 avril 2005 à 22:12:24 | Re : Capture webcam avec JMF, les formats de capture

frank_sauvage

bonjour,

effectivement, le fait de specifier un format lors de la recuperation du CDI, ne permet pas d'obtenir un flux dans ce meme format.

pour cela, il vous faudra utiliser un Processor. et specifier ce format en tant que format de sortie grace à, si mes souvenirs sont bons, la methode setOutputFormat.

si je puis me permettre,
vous semblez vous attaquer à la JMF depuis peu, et ce que vous cherchez à faire n'est pas des plus simples. quel est votre delai de livraison ?

sinon pour vous aiguiller un peu dans vos recherches, vous devrez utiliser quelque chose du type :

CDI -> DataSource -> processor -> CloneableDataSource-> RTPManager |_______| RTPManager -> Player.
(la cloneable datasource vous servant a utiliser une seconde fois le flux pour l'affichage local)
pour votre transmission reseau il vous sera neccessaire d'utiliser le protocole RTP grace à :
-soit l'implémentation par defaut.
- soit definir votre propre support à RTP grace à l'interface RTPConnector.

si effectivement, il vous sera probablement apparent qu'il est plus rapide d'utiliser l'implementation par defaut, sachez que cette derniere suit à la lettre le RFC 1889/1890 ( mis à jour vers le 3550 ?? pas sur, mais non essentiel), et que donc vous serez pas à meme de passer les NAT et les firewalls dans la diffusion de vos flux.
c'est donc la que vous devrez trouver un autre moyen de passer, soit en implementant vous meme STUN (toujours pas porté sur JAVA), soit en bidouillant votre propre protocole.


donc pour résumer :
- la premiére etape est de vous familiariser avec les objets de la JMF sus-cités.
- la seconde étant un travail sur la partie reseau pour la transmission des flux.

il s'agit ici de visio-conférence temps réelle, c'est une partie interressante mais ardue de la JMF.
cependant, si votre but n'est que la possibilité pour les differents participants de pouvoir se voir, il existe neanmoins une autre possibilité : l'utilisation de capture d'image et leur publication via HTML. si l'idée peut paraitre saugrenue, elle est malgré tout rapidement realisable.
pour cela utilisez le GrabFrameControl..cette interface ne posséde qu'une seule methode grabFrame qui renvoi un buffer. il vous suffit ensuite d'utiliser la classe BufferToImage et de la serializer vers le serveur ou autre.

cette fois ci c'est donc plutot :

CDI -> DataSource -> Player -> GrabFrameControl -> Buffer -> BufferToImage -> Image.

Voila,
en esperant que cela vous aidera a diriger vos travaux.

Cdlt;
FSA;






vendredi 15 avril 2005 à 10:44:27 | Re : Capture webcam avec JMF, les formats de capture

elawem

Le jeu constitue mon projet de langage Java en école d'ingénieur, il ne sera testé que sur le réseau local donc les flux n'ont pas besoin de passer a travers des firewalls. C'est un peu triste de passer par la facilité, mais comme il y a 5 autres projets à rendre dans un mois il va falloir aller vite avec le streaming.

Merci pour votre aide, elle est précieuse et va nous permettre d'avancer après 2 jours de galere :)


vendredi 15 avril 2005 à 17:09:05 | Re : Capture webcam avec JMF, les formats de capture

frank_sauvage

oh un collégue étudiant :)

je suis moi même en licence d'informatique à paris 5..donc je suis plus où moins dans les mêmes conditions actuellement ;)

sinon pour revenir à votre probléme, si vous n'avez qu'à le faire marcher en reseau local..
sachez que la version 2.1.1 de la JMF implemente desormais le protocole RTSP (streaming multicast) ce qui sera probablement alors encore plus simple pour vous.

P.S. la documentation de la JMF en ligne n'est pas à jour si vous y acceder via le site de sun..
le mieux est donc de telecharger les sources et de regenerer les javadocs localement.
il est aussi possbile d'avoir accés à une mise à jour mais cette fois il vous faudra passer par ce lien : http://java.sun.com/products/java-media/jmf/2.1.1/apidocs/index.html

voila en esperant que cela vous aidera dans votre projet.
Cdlt;
FSA;




mardi 10 mai 2005 à 14:56:53 | Re : Capture webcam avec JMF, les formats de capture

madjonk

Salut,


Je travaille aussi dans mon projet avec l'API JMF avec lequel je débute.
J'aurais besoin de quelques éclaircissements... voila mon probleme:

Je récupère des datas frame d'une video, grace à l'API JMF, que j'envoie dans le réseau.
A l'autre bout du réseau, je les récupère et je voudrais les remettre dans le format de départ.

Mon problème réside dans le fait que l'API JMF ne me permet pas de construire un fichier de sortie .avi me contenant tous les frames de la vidéo. C'est à dire un fichier .avi contenant les bon headers, etc..(Les frames arrivent dans l'ordre à l'autre bout du réseau.) Y t-il moyen avec l'api JMF de générer le fichier .avi (avec les bon headers et le bon format)

Merci de votre aide.

mercredi 11 mai 2005 à 15:29:14 | Re : Capture webcam avec JMF, les formats de capture

frank_sauvage

Bonjour,

je ne suis pas sur de comprendre ce que vous voulez faire exactement..
Comment faites vous pour recuperer les dataFrame ? a partir de quel classe et quel type de flux en entrée.. pour l'envoi reseau.comment faites vous ? utilisez vous le RTPManager ?

par contre, en ce qui concerne l'enregistrement dans un fichier, et plus particulierement un AVI, la jmf le permet sans trop de difficultées normalement..
en fait pour ca, vous devez utiliser un processeur et un datasink..
pour specifier le format des pistes utilisez la methode setFormat()
pour pouvoir  specifier le format en sortie du processeur, utilisez la methode : setContentDescriptor()

par exemple :  (tres simplifié au niveau de la gestion des tracks)
this.track = processeur.getTrackControls();
this.track[0].setFormat(new Format(VideoFormat.CINEPAK));
processeur.setContentDescriptor(new ContentDescriptor
(FileTypeDescriptor.MSVIDEO)));

par contre..si vous voulez que ca marche bien..n'oubliez pas un detail : vous devrez toujours stopper le processeur avant le datasink.

bon..n'etant pas sur de ce que vous vouliez..
en cas de PB, je reste sur ce forum..

Cdlt;
FSA;


lundi 8 août 2005 à 07:47:55 | Re : Capture webcam avec JMF, les formats de capture

salvucho


Bonjour à tous, je suis un pt nouveau en programmation, et je dois afficher les flux vidéos de plusieurs webcams connectées sur des USB d'un seul PC.
J'arrive à voir le flux d'une webcam, mais quand je connecte la 2ème il bug !

Quelqu'un pourrait m'aider ? ?
Voici un bout de code

        String str1 = "vfw:Logitech USB Video Camera:0";
        String str2 = "vfw:Microsoft WDM Image Capture(Win32):0";
        captDeviceInfo = CaptureDeviceManager.getDevice(str2);
        medialocator = new MediaLocator( "vfw://0" );
        try
  {
            this.player = Manager.createRealizedPlayer(medialocator);
            this.player.start();
            this.componentWebCam = this.player.getVisualComponent();
        }  
        catch (Exception e)
        {
            System.out.println( "ERREUR : WebCam..." );
            e.printStackTrace();
        }
 
vendredi 3 mars 2006 à 12:17:01 | Re : Capture webcam avec JMF, les formats de capture

PhoeniXX52

Ce post m'a bien aidé ... Bonne continuation à tous

Simon.
Pourvu que ca dure ...
[url]www.eagendas.be[/url]

jeudi 19 juillet 2007 à 12:15:40 | Re : Capture webcam avec JMF, les formats de capture

hakim8086

Bonjour a tous:
 
Je travaille aussi dans mon projet avec l'API JM   , je veus afficher un flux video sur mon ardinateur et en meme je l'envoyer ds le reseau .
le probleme est : si j'onvoyer  le flux
sur le reseau  je peut pas l'afficher sur mon ordinateur et le contraire
et lors de l'execution il affiche un erreur d'exception "java.io.IOException: Capture device in use"
c_ad le data source de webcam est utilise par un autre  player ou autre processor ??????
alors je veut recupere le flux video et je l'affiche dans sur mon ordinateur dans un panel et en meme temps  j'envoyer sur le reseau .
Est ce que je peut dupliquer l'affichage d'un seul player dans 2 panel ou + ?????
Est ce je peut creer + d'un player pour un seul data source ?????
Merci de votre aide  .



1 2

Cette discussion est classée dans : flux, capture, rgb, webcam, videoformat


Répondre à ce message

Sujets en rapport avec ce message

JMF redimension du flux video et capture d'image HELP!! [ par vivi_2701 ] Bonjour,Est-ce que quelqu'un pourrait m'aider ???? Voila je récupère le flux video de ma webcam grace à l'api JMF. La taille de ce flux est de 352*288 Récupération d'un flux vidéo à partir d'une webcam WIFI [ par Karras_Le_Fou ] Bonjour,     Je suis nouveau sur ce site et commence également en JAVA. Je travaille actuellement sur un projet consistant à récupérer un flux vidéo Java JMF flux ASF [ par pottop ] Bonjour,je travaille actuellement sur un projet permettant de récupérer le flux vidéo d'une webcam (ou plusieurs) après permettre de transformer cette API JMF [ par zaka2005 ] salut a tous. en fait,je veux capture a partir d'une webcam ,mais sans passer par le CaptureDialog pour regler les proprietes de l'audio et video, Flux video a partir d une webcam [ par fraclot ] Salut tout le monde, Je souhaite creer un flux video a partir de ma webcam. J y suis plus ou moins arrive avec JMF, mais j ai trouve JMF pas tres soup Récupération du flux vidéo d'une webcam en java [ par romain_seb ] Bonjour tout le monde!Nous sommes deux étudiants qui devont faire un projet pour nos études. On cherche notamment a récupérer le flux d'une webcam bra probleme applet de capture image de webcam [ par paddy04 ] Bonjour a tous,J'ai un petit probleme. j'ai realisé une applet qui permet de capturer des images a partir d'une webcam en utlisant l'api JMF. Mais j'a je recherche des exemples de flux xmpp [ par eclipse2007 ] bonsoir,je recherche des exemples de flux xml pouvant être transmis entre deux serveurs utilisé a des fins d'échange d'état,implémentant ainsi le prot traiter/filter les images d'une webcam et afficher la video [ par GNurdin ] Bonjour à tous,J'aimerais réaliser une petite application en java qui capturerait l'image d'une webcam et qui avant de l'afficher la traiterait.Je pen Java Sound [ par jbond008 ] Bonjour,Je souhaite lire dans mon application Java un flux de données binaires (généré octet par octet par l'application).Je connais à l'avance le for


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,123 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales