This repository has been archived on 2026-01-04. You can view files and clone it, but cannot push or open issues or pull requests.
Files
JSCA/src/main/java/com/jsca/WebcamStreamReader.java
rattatwinko cceb0d44e8 initial
2025-05-27 16:34:09 +02:00

53 lines
1.5 KiB
Java

package com.jsca;
import com.github.sarxos.webcam.Webcam;
import java.awt.Dimension;
import java.awt.Image;
import javax.swing.SwingUtilities;
public class WebcamStreamReader implements StreamReader {
private final CameraPanel panel;
private volatile boolean running = true;
private Webcam webcam;
public WebcamStreamReader(CameraPanel panel) {
this.panel = panel;
}
@Override
public void run() {
try {
webcam = Webcam.getDefault();
if (webcam == null) {
throw new RuntimeException("No webcam detected");
}
webcam.setViewSize(new Dimension(640, 480));
webcam.open();
while (running && webcam.isOpen()) {
final Image image = webcam.getImage();
if (image != null) {
SwingUtilities.invokeLater(() -> panel.updateFrame(image));
}
Thread.sleep(33); // ~30 FPS
}
} catch (Exception e) {
SwingUtilities.invokeLater(() -> {
javax.swing.JOptionPane.showMessageDialog(panel,
"Error reading from webcam: " + e.getMessage(),
"Webcam Error",
javax.swing.JOptionPane.ERROR_MESSAGE);
});
} finally {
if (webcam != null && webcam.isOpen()) {
webcam.close();
}
}
}
@Override
public void stop() {
running = false;
}
}