Bild von USB-Webcam über JMF

kor

Mitglied
Hallo

Ich möchte von meiner Webcam mittels JMF Bilder machen.
Habe dazu folgenden code benutzt der anscheinend bei anderen funktioniert bei mir nicht.
Ich komme nicht darauf warum nicht.
Java:
public class Webcam {

	private Player _player;

	
	Webcam(){
		
	}
	
	   public void initPlayer(){
	        try{
	        MediaLocator videoMediaLocator = new MediaLocator("vfw:/0");
	        _player = Manager.createRealizedPlayer(videoMediaLocator);
	        }catch(Exception e){
	            e.printStackTrace();
	        }
	        _player.start();
	    }

	    public Image grabbImage() {
	        FrameGrabbingControl fgc = (FrameGrabbingControl) _player.getControl("javax.media.control.FrameGrabbingControl");
	        Buffer b = fgc.grabFrame();
	        Image img = null;
	        try {
	            BufferToBufferedImage bbtoi = new BufferToBufferedImage((VideoFormat) b.getFormat());
	            img = bbtoi.createImage(b);
	            return img;
	        }
	        catch (Exception e) {
	            return null;
	        }
	    }
	    public boolean isReady(){
	        return grabbImage() != null;
	    }
	    public void closeGrabber(){
	        _player.close();
	    }
}
Test-Klasse:
Java:
	       Webcam cam=new Webcam();
	       cam.initPlayer();
	       
	       while(!cam.isReady()){   //IN DIESER SCHLEIFE BLEIBT DAS PROGRAMM HÄNGEN!
	            Thread.sleep(100);
	            System.out.println("a ");
	        }
	       System.out.println("GO ");

       image=cam.grabbImage();

 try {
	            ImageIO.write((RenderedImage) image, "png", new File("C:\\Image.png"));
	        } catch (IOException e) {
	            e.printStackTrace();
	        }

	       cam.closeGrabber();
In der Schleife "while(!cam.isReady())" bleibt das Porgramm hängen.

Lg

P.s.: Die USB-Webcam funktioniert über JMStudio, ich gehe also davon aus das es theoretisch mit dieser Kamera funktionieren sollte.
 
Hey,

so wie ich deinen Code verstehe prüfst du in der While darauf ob du ein Image hast.
Aber du rufst in der Test Klasse erst nach der while Schleife dein grabbImage auf. Also kann da nur ein Dead End entstehen.



mfg
 
hi

danke für deine antwort.
Daran liegt es nicht selbst wenn ich grabbImage in einer schleife aufrufe bekomme ich immer eine null zurück, d.h die funktion landet imer in der exception.

ich bin ratlos, habe es jetzt mit JMyron probiert und da funktioniert das ansprechen der webcam tadellos. mit jmf schaff ich es aber nicht.

lg
 

Zurück
Oben