我试图使用jxcapture捕捉视频。我设法这样做了一次,但当我试图在同一个节目中第二次获取视频时,我陷入了麻烦。我的代码如下:系统资源不足,从网络摄像头捕捉视频java
public VideoCapture videoCapture = VideoCapture.create(VideoFormat.WMV);
public CaptureVideoFromWebCamera(){}
public void start(String filename){
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("WebCamera.wmv"));
encodingParameters.setBitrate(500000);
encodingParameters.setFramerate(10);
encodingParameters.setKeyFrameInterval(1);
encodingParameters.setCodec(videoCodec);
videoCapture.setEncodingParameters(encodingParameters);
videoCapture.start();
System.out.println("Recording started. Press 'Enter' to terminate.");
}
public void stop(String filename) throws IOException{
System.in.read();
videoCapture.stop();
}
public static void main(String[] args) throws Throwable {
CaptureVideoFromWebCamera obj = new CaptureVideoFromWebCamera();
obj.start("");
obj.stop("");
CaptureVideoFromWebCamera obj1 = new CaptureVideoFromWebCamera();
obj1.start("");
obj1.stop("");
}
}
当我试图这样做,我reveiving以下错误(存在不足的系统资源来完成所要求的服务网络摄像头):
异常在线程 “主” 了java.lang.RuntimeException:在com.teamdev.jxcapture.video.win.BaseDirectShowCapture.doStart java.lang.reflect.InvocationTargetException (的SourceFile:103) 在com.teamdev.jxcapture。 VideoCapture.start(SourceFile:146) 在capturer.CaptureVideoFromWebCamera.start(CaptureVideoFromWebCamera.java:58) 在capturer.CaptureVideoFromWebCamera.main(CaptureVideoFromWebCamera.java:76) 产生的原因:在com.teamdev.jxdesktop.win32.g java.lang.reflect.InvocationTargetException .doInvokeAndWait(Unknown Source) at com.teamdev.jxcapture.video.win.BaseDirectShowCapture.doStart(SourceFile:97) ... 3更多 引起:com.teamdev.jxdesktop.win32.com.ComException:COM对象方法返回错误代码:0x800705AA;系统资源不足以完成请求的服务。
EDIT2:我试着做一些线程睡眠添加到代码,以等待第二次捕捉过程。
CaptureVideoFromWebCamera obj = new CaptureVideoFromWebCamera();
obj.start("1.wmv");
obj.stop("");
Thread.sleep(5000);
CaptureVideoFromWebCamera obj1 = new CaptureVideoFromWebCamera();
obj1.start("2.wmv");
obj1.stop("");
我得到了同样的错误。
EDIT3:当我试图使用相同的对象,因为我得到了以下信息捕获:螺纹
异常“主”了java.lang.RuntimeException:java.lang.relfect包。的InvocationTargetException 在com.teamdev.jxcapture.video.win.BaseDirectShowCapture.doStart(的SourceFile:103) 在com.teamdev.jxcapture.VideoCapture.start(的SourceFile:146) 在CaptureVideoFromWebCamera.start(CaptureVideoFromWebCamera.java:47)/ /videoCapture.start(); CaptureVideoFromWebCamera.main(CaptureVideoFromWebCamera.java:64)/obj.start("2.wmv“); 产生的原因:在com.teamdev.jxcapture.video.win.BaseDirectShowCapture.doStart(的SourceFile:97)在com.teamdev.jxdesktop.win32.g.doInvokeAndWait(未知来源) java.lang.reflect.InvocationTargetException 。 .. 3更多
尝试在再次调用相机之前添加一些睡眠时间。当您尝试第二次启动相机时,停止操作可能没有完成。或者更好的是,使用GUI进行测试,您必须按下按钮才能启动和停止相机。 – Olantobi
我尝试了他们两个仍然我有同样的问题! –
看来,videoStop停止捕获,但相机的资源仍然保持从java的使用,所以我不能再次初始化捕获。该程序停止捕捉,但相机仍然打开,我必须关闭程序,以便我的carmera关闭。 –