Ich versuche, das Video mit der jxcapture aufzunehmen. Ich schaffe es nur für einmal, aber wenn ich versuche, das zweite Mal das Video im selben Programm zu erfassen, geriet ich in Schwierigkeiten. Mein Code ist folgender:
%Vor%}
Wenn ich dies versuche, erhalte ich den folgenden Fehler (Es sind nicht genügend Systemressourcen vorhanden, um die angeforderte Webkamera für den Service fertigzustellen):
Ausnahme im Thread "main" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException unter com.teamdev.jxcapture.video.win.BaseDirectShowCapture.doStart (Quelldatei: 103) bei com.teamdev.jxcapture.VideoCapture.start (Quelldatei: 146) bei captur.CaptureVideoFromWebCamera.start (CaptureVideoFromWebCamera.java:58) bei captur.CaptureVideoFromWebCamera.main (CaptureVideoFromWebCamera.java:76) Verursacht von: java.lang.reflect.InvocationTargetException bei com.teamdev.jxdesktop.win32.g.doInvokeAndWait (unbekannte Quelle) unter com.teamdev.jxcapture.video.win.BaseDirectShowCapture.doStart (Quelldatei: 97) ... 3 mehr Verursacht durch: com.teamdev.jxdesktop.win32.com.ComException: COM-Objektmethode gibt Fehlercode zurück: 0x800705AA; Es sind nicht genügend Systemressourcen vorhanden, um den angeforderten Dienst abzuschließen.
EDIT2: Ich habe versucht, dem Code etwas Thread-Schlaf hinzuzufügen, um auf den zweiten Erfassungsprozess zu warten.
%Vor%Ich habe den gleichen Fehler.
EDIT3: Wenn ich versuche, dasselbe Objekt für die Aufnahme zu verwenden, bekomme ich folgende Meldung:
Ausnahme im Thread "main" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException unter com.teamdev.jxcapture.video.win.BaseDirectShowCapture.doStart (Quelldatei: 103) bei com.teamdev.jxcapture.VideoCapture.start (Quelldatei: 146) bei CaptureVideoFromWebCamera.start (CaptureVideoFromWebCamera.java:47) //videoCapture.start (); bei CaptureVideoFromWebCamera.main (CaptureVideoFromWebCamera.java:64) /obj.start("2.wmv "); Verursacht von: java.lang.reflect.InvocationTargetException bei com.teamdev.jxdesktop.win32.g.doInvokeAndWait (unbekannte Quelle) unter com.teamdev.jxcapture.video.win.BaseDirectShowCapture.doStart (Quelldatei: 97) ... 3 mehr
Tatsächlich erhalten Sie eine Fehlermeldung, weil Ihre Ressource bereits von einem anderen Thread gesperrt wurde und die Sperre nicht aufgehoben wird, während Sie versuchen, dieselbe Ressource aus dem anderen Thread zu verwenden.
Hier müssen Sie zwei Dinge tun:
Schritt 1:
In Ihrem Programm haben Sie Thread.Sleep(5000);
eingerichtet, aber stattdessen pausieren Sie stattdessen Ihren Thread und Sie haben keine Anweisung zum Freigeben der Ressource eingerichtet. Versuchen Sie also, den Kamera-Socket und das schließende Objekt in einer finally
-Anweisung zurückzusetzen.
Schritt 2:
Probieren Sie Synchronized
thread stattdessen mit normalem aus, da nur ein Prozess Ihre Ressource gleichzeitig verwenden kann.
Tags und Links java