私は実際にウェブカメラからフレームをキャプチャするJavaクラスを持っています。このクラスには、開始と終了の2つのメソッドがあります。このクラスを私が作成したGUIに追加したいと思います。しかし、私が彼らのように機能を追加するとき、私のゲームは固執しています。私はここでいくつかのマルチスレッドをする必要があるようです。クラスメソッドを新しいスレッドに追加するにはどうすればよいですか?新しいスレッドにJavaクラスメソッドを追加
EDIT:今私のコードは以下の通りです:
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
ランナーを使用して新しいスレッドを取得します。そのランナーを使ってスキャンします。また、SwingWorkerとJavaFXの代替案を調べることもできます。 JavaFXでは、 'invokeLater'は' Platform.runLater(...) 'に相当します。 – ifly6
私はそれを行うことはできません:(私はjavafxで作業しなければなりません) – konstantin