我有一个java类,它实际上是从webcamer捕获帧。这个类有两种启动方式和一种停止方式。我想将这个类添加到我创建的gui中。但是,当我添加功能,因为他们是我的游戏卡住了。看来我需要在这里做一些多线程。我如何将我的类方法添加到新线程中?将java类的方法添加到一个新的线程
编辑:我的代码,现在是这样的:
Thread t2 = new Thread(new Runnable() {
public void run()
{
VideoCapture videoCapture = VideoCapture.create(VideoFormat.WMV);
List<VideoSource> availableVideoSources = VideoSource.getAvailable();
//System.out.println("availableVideoSources = " + availableVideoSources);
if (availableVideoSources.isEmpty()) {
throw new IllegalStateException("No external video sources available");
}
VideoSource webCamera = availableVideoSources.get(0);
//System.out.println("webCamera = " + webCamera);
videoCapture.setVideoSource(webCamera);
java.util.List<Codec> videoCodecs = videoCapture.getVideoCodecs();
//System.out.println("videoCodecs = " + videoCodecs);
if (videoCodecs.isEmpty()) {
throw new IllegalStateException("No video codecs available");
}
Codec videoCodec = videoCodecs.get(2);
//System.out.println("videoCodec = " + videoCodec);
EncodingParameters encodingParameters = new EncodingParameters(new File("file.wmv"));
encodingParameters.setBitrate(500000);
encodingParameters.setFramerate(10);
encodingParameters.setKeyFrameInterval(1);
encodingParameters.setCodec(videoCodec);
videoCapture.setEncodingParameters(encodingParameters);
videoCapture.start();
//System.in.read();
//videoCapture.stop();
}});
我通过调用t2.start运行这个线程(),我怎么能在第二个函数调用videoCapture.stop()?
我使用的是eclipse和javafx。所以我可以为我的班级创建跑步者? – konstantin
使用跑步者获取新线程。然后使用该跑步者进行扫描。您可能还想研究JavaFX中的'SwingWorker'和替代方法。我记得在JavaFX中,'invokeLater'等价物是'Platform.runLater(...)'。 – ifly6
我不能这样做:(我必须在javafx中工作 – konstantin