Unzureichende Systemressourcen, Videoaufnahme von der Webkamera Java

9

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

    
Jose Ramon 15.07.2016, 20:02
quelle

3 Antworten

1

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.

    
Karthick Ramasamy 22.07.2016 19:17
quelle
1

Kann es Ihnen helfen? Ich denke, Sie müssen eine Ressource freigeben, nachdem Sie den nächsten Capture-Prozess aufgenommen haben, der sie frei aufnehmen kann.

%Vor%     
Yan Pak 23.07.2016 08:30
quelle
1

Versuchen Sie, Ihren Code ein wenig zu mischen, damit Sie das Videosystem nicht zweimal initialisieren:

%Vor%

Ich hoffe, das hilft, ich habe keine JxCapture-Lizenz (noch die Web-Cam :)), um das zu überprüfen.

    
MirMasej 23.07.2016 08:53
quelle

Tags und Links