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:
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:
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:
-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.