2012-05-16 2 views
0

자바를 통해 웹캠에서 스냅 샷을 찍고 싶습니다. 나는 this question을 따라 가면서이 example에 도착했습니다. 그러나 아래 줄에서 오는 널 포인터 예외가 있습니다. -JMF를 사용하여 웹캠에서 스냅 샷 찍기

디버거를 통해 버퍼에 실제로 데이터가 포함되지 않은 것으로 나타났습니다. 그래서 나는 frameGrabber의 창조물을 만들었다.

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

이 코드에 문제가 있습니까? JMFStudio가 내 컴퓨터에서 제대로 작동하기 때문에 코드가 액세스 할 수 없습니다. 고맙습니다.

+1

* "아래 줄부터 오는 예외"* 3 줄을 계산합니다. 더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/) 및 스택 추적을 게시하십시오. –

답변

1

해결책을 찾았습니다. JMF는 초기화에 시간이 필요합니다. 이 예에서는 선을 전환해야합니다.

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

을 try catch 아래에 넣으십시오.

전체 블록은 아래와 같습니다.

 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");