2009-09-05 32 views

Trả lời

2

Freedom for Media in Java là triển khai thay thế JMF (tương thích API). Chỉ trong trường hợp bạn muốn sử dụng thư viện OpenSource.

7
  1. Tải về và cài đặt JMF
  2. Add jmf.jar đến thư viện dự án của bạn
  3. Tải file FrameGrabber nguồn và thêm nó vào dự án của bạn
  4. Sử dụng nó như sau để bắt đầu chụp video.

    FrameGrabber mới(). Start();

Để đến hình ảnh cơ bản, bạn chỉ cần gọi getBufferedImage() trên tham chiếu FrameGrabber của bạn. Bạn có thể làm điều này trong một nhiệm vụ Timer ví dụ, mỗi 33 mili giây.

Mẫu mã:

public class TestWebcam extends JFrame { 
    private FrameGrabber vision; 
    private BufferedImage image; 
    private VideoPanel videoPanel = new VideoPanel(); 
    private JButton jbtCapture = new JButton("Show Video"); 
    private Timer timer = new Timer(); 

    public TestWebcam() { 
    JPanel jpButton = new JPanel(); 
    jpButton.setLayout(new FlowLayout()); 
    jpButton.add(jbtCapture); 

    setLayout(new BorderLayout()); 
    add(videoPanel, BorderLayout.CENTER); 
    add(jpButton, BorderLayout.SOUTH); 
    setVisible(true); 

    jbtCapture.addActionListener(
     new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       timer.schedule(new ImageTimerTask(), 1000, 33); 
      } 
     } 
    ); 
    } 

    class ImageTimerTask extends TimerTask { 
    public void run() { 
     videoPanel.showImage(); 
    } 
    } 

    class VideoPanel extends JPanel { 
     public VideoPanel() { 
     try { 
      vision = new FrameGrabber(); 
      vision.start(); 
     } catch (FrameGrabberException fge) { 
     } 
     } 

     protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     if (image != null) 
      g.drawImage(image, 10, 10, 160, 120, null); 
     } 

     public void showImage() { 
      image = vision.getBufferedImage(); 
      repaint(); 
     } 
    } 

    public static void main(String[] args) { 
     TestWebcam frame = new TestWebcam(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(190, 210); 
     frame.setVisible(true); 
    } 
} 
+0

Cảm ơn JRL, tôi đang cố triển khai nó, tôi muốn biết liệu nó có tự động phát hiện webcam của tôi không? –

Các vấn đề liên quan