IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Multimédia Java Discussion :

JMF et export DISPLAY sur Linux


Sujet :

Multimédia Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 139
    Par défaut JMF et export DISPLAY sur Linux
    Bonjour à tous,

    j'ai besoin d'aide sur une appli que je met en place en ce moment... j'ai un PC sous Linux (Ubuntu) sur lequel je fais tourner mon prog Java (appli tomcat) qui va gérer une camera USB.

    cette appli intègre une applet qui va permettre de gérer un flux RTP depuis cette Camera, jusque là pas de problème, tout tourne bien !

    par contre j'ai une servlet sur ce même PC, cette Servlet est appelée depuis une URL et doit afficher une image (JPG) prise depuis la camera. par contre la page affiche une erreur du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
    	java.lang.Class.forName0(Native Method)
    	java.lang.Class.forName(Class.java:169)
    	java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68)
    	sun.awt.image.CachingSurfaceManager.<init>(CachingSurfaceManager.java:171)
    	sun.java2d.x11.X11CachingSurfaceManager.<init>(X11CachingSurfaceManager.java:56)
    	sun.java2d.SurfaceManagerFactory.createCachingManager(SurfaceManagerFactory.java:36)
    	sun.awt.image.SurfaceManager.getManager(SurfaceManager.java:54)
    	sun.awt.image.ImagingLib.filter(ImagingLib.java:228)
    	java.awt.image.AffineTransformOp.filter(AffineTransformOp.java:266)
    	com.sun.media.util.BufferToBufferedImage.createImage(BufferToBufferedImage.java:73)
    	javax.media.util.BufferToImage.createImage(BufferToImage.java:171)
    	com.jr.Camera.CameraJPEGServlet.doPost(CameraJPEGServlet.java:73)
    	com.jr.Camera.CameraJPEGServlet.doGet(CameraJPEGServlet.java:37)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


    et le code qui pose problème est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
        FormatControl formatControl = null;
    	VideoFormat currentFormat = null;
    	CaptureDeviceInfo deviceInfo = CaptureDeviceManager.getDevice(config.getCameraDevice());
    
    	Player player;
    	player = Manager.createRealizedPlayer(deviceInfo.getLocator());
    	Format[] formats = deviceInfo.getFormats();
    	currentFormat = (RGBFormat)formats[3];  
    	formatControl = (FormatControl)player.getControl( "javax.media.control.FormatControl" );
    	formatControl.setFormat ( currentFormat );
    	player.start();
    	Thread.sleep(5000);
    	FrameGrabbingControl frameGrabber =(FrameGrabbingControl)player.getControl("javax.media.control.FrameGrabbingControl");
    	Buffer buf = frameGrabber.grabFrame();
    	BufferToImage buff = new BufferToImage((VideoFormat)buf.getFormat());
    	Image img = buff.createImage(buf);
    	
    	BufferedImage buffImg = new BufferedImage(img.getWidth(null),img.getHeight(null), BufferedImage.TYPE_INT_RGB);
    donc à priori je ne peux pas créer d'image depuis ma Webcam si je n'ai pas la possibilité d'accéder à l'environnement X11...de mon PC...or cela m'est impossible, et je ne peux pas non plus jouer sur le paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -Djava.awt.headless=false
    il doit rester à false pour créer un DataSource et permettre mon streaming RTP.

    je suis bloqué et tenté d'utiliser de méthodes annexes (FMJ, LTI) mais je rencontre des problemes de compatibilité de lib C++...

    qu'en pensez vous ? auriez vous des pistes ?

    Merci à vous tous !
    Tiamat.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Si tu ne sais pas te passer d'un environnement graphique, n'hésite pas à lui en donner un, par exemple avec Xvfb

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 139
    Par défaut
    salut tchize,

    ben disons que j'ai à priori pas trop le choix...mais j'aimerais bien m'en passer !
    mon PC sur ubuntu a un serveur X démarré mais étant doné que j'appelle des méthodes depuis une page distante je ne peux pas y accéder.

    tu penses qu'en installant Xvfb sur mon serveur je peux détourner ça ?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    D'abord essayer avec les headless à true. Si ca ne marche pas, c'est que tu appelle directement ou indirectement des méthodes de l'awt qui font appel à l'environnement graphique (création de fenetres, etc). Dans ce cas, il faudra un environnement graphique accessible au serveur, et le xvfb est un environnement graphique comme un autre.

    Mais bon, avoir une application serveur qui nécessite un environnement graphique, ca sent la bourde de design quelque part, même si parfois ca peut se justifier

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 139
    Par défaut
    je te remercie des conseils...effectivement j'ai pas le choix, certaines APIs nécessitent un environnement graphique même si moi de mon coté je n'en ai pas vraiment besoin...

    bref j'ai installé Xfvb sur mon serveur sur :1 et après avoir fait un xhost+ et export DISPLAY=:1 ça marche impec.

    je te remercie Tchize.
    ++

    Tiamat.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment faire un export DISPLAY en perl ou comment initialiser une variable linux
    Par redgis01 dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 08/03/2007, 11h01
  2. quel sgbd sur linux??
    Par fabfab1 dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 27/11/2004, 18h38
  3. lancer OEM via le browser (10g sur linux)
    Par learn dans le forum Entreprise Manager
    Réponses: 6
    Dernier message: 20/09/2004, 17h04
  4. [analyse de syntaxe] pour C et C++ sur Linux
    Par Madmac dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 10/07/2004, 06h37
  5. [ websphere] problème d'export DISPLAY
    Par gogozep001 dans le forum Websphere
    Réponses: 8
    Dernier message: 04/09/2003, 13h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo