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:
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
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);il doit rester à false pour créer un DataSource et permettre mon streaming RTP.
Code : Sélectionner tout - Visualiser dans une fenêtre à part -Djava.awt.headless=false
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.
Partager