2012-05-16 4 views
0

Я хочу сделать снимок с веб-камеры через java. Я последовал за this question и прибыл на этот example. Но есть исключения нулевого указателя исходя из следующей строки -Съемка снимков с веб-камеры с использованием JMF

Buffer buf = frameGrabber.grabFrame(); 
Image img = (new BufferToImage((VideoFormat) buf.getFormat()) 
       .createImage(buf)); 
     buffImg = new BufferedImage(img.getWidth(this), img.getHeight(this), 
       BufferedImage.TYPE_INT_RGB); 

Через отладчик я заметил, что буфер фактически не содержит данных. Поэтому я пошел создать frameGrabber.

frameGrabber = (FrameGrabbingControl) player 
       .getControl("javax.media.control.FrameGrabbingControl"); 

Есть проблемы с этим кодом. Поскольку JMFStudio отлично работает на моей машине, но код не может получить к нему доступ. Спасибо.

+1

* "Исключение из следующей строки" * Я считаю 3 строки. Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/) и трассировку стека. –

ответ

1

Я нашел решение. JMF требует времени для инициализации. В этом примере мы должны переключить строку. Поместите

new Timer(3000, this).start(); 

ниже попытки улова.

Весь блок выглядит, как показано ниже.

 try { 
      player = Manager.createRealizedPlayer(cdi.getLocator()); 
      player.start(); 
     } catch (NoPlayerException e) { 
      e.printStackTrace(); 
     } catch (CannotRealizeException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
      new Timer(3000, this).start(); 
     // Grab a frame from the capture device 
     frameGrabber = (FrameGrabbingControl) player 
       .getControl("javax.media.control.FrameGrabbingControl"); 
Смежные вопросы