package com.github.sarxos.webcam; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; import javax.swing.SwingUtilities; import com.github.sarxos.webcam.ds.ffmpegcli.FFmpegCliDriver; /** * Proof of concept of how to handle webcam video stream from Java * * @author Bartosz Firyn (SarXos) */ public class WebcamViewerExample extends JFrame implements Runnable, WebcamListener, WindowListener { private static final long serialVersionUID = 1L; private Webcam webcam = null; private WebcamPanel viewer = null; @Override public void run() { // IMPORTANT! Replace default driver by FFmpegCliDriver. Webcam.setDriver(new FFmpegCliDriver()); setTitle("Java Webcam Capture MJPEG POC"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); addWindowListener(this); webcam = Webcam.getDefault(); if (webcam == null) { System.out.println("No webcams supporting MJPEG format has been found..."); System.exit(1); } webcam.setViewSize(WebcamResolution.QVGA.getSize()); webcam.addWebcamListener(WebcamViewerExample.this); viewer = new WebcamPanel(webcam, false); viewer.setFPSDisplayed(true); setContentPane(viewer); pack(); setVisible(true); Thread t = new Thread() { @Override public void run() { viewer.start(); } }; t.setDaemon(true); t.start(); } public static void main(String[] args) { SwingUtilities.invokeLater(new WebcamViewerExample()); } @Override public void webcamOpen(WebcamEvent we) { System.out.println("webcam open"); } @Override public void webcamClosed(WebcamEvent we) { System.out.println("webcam closed"); } @Override public void webcamDisposed(WebcamEvent we) { System.out.println("webcam disposed"); } @Override public void webcamImageObtained(WebcamEvent we) { } @Override public void windowActivated(WindowEvent e) { } @Override public void windowClosed(WindowEvent e) { webcam.close(); } @Override public void windowClosing(WindowEvent e) { } @Override public void windowOpened(WindowEvent e) { } @Override public void windowDeactivated(WindowEvent e) { } @Override public void windowDeiconified(WindowEvent e) { System.out.println("webcam viewer resumed"); viewer.resume(); } @Override public void windowIconified(WindowEvent e) { System.out.println("webcam viewer paused"); viewer.pause(); } }