This commit is contained in:
rattatwinko
2025-05-27 16:34:09 +02:00
commit cceb0d44e8
21 changed files with 811 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
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;
}
}