从直接显示设备获取图像

时间:2014-08-13 18:53:09

标签: java ffmpeg webcam xuggler fmj

我想用Java中的直接显示设备获取图像,但我找不到合适的解决方案。 我的设备是屏幕捕获记录器,很容易使用ffmpeg,所以我的第一个想法是使用Xuggler。 我试过这段代码:

String driverName = "dshow";
String deviceName= "screen-capture-recorder";
// Let's make sure that we can actually convert video pixel formats.
if (!IVideoResampler.isSupported(IVideoResampler.Feature.FEATURE_COLORSPACECONVERSION))
          throw new RuntimeException("you must install the GPL version of Xuggler (with IVideoResampler support) for this demo to work");
// Create a Xuggler container object
IContainer container = IContainer.make();
// Tell Xuggler about the device format
IContainerFormat format = IContainerFormat.make();
if (format.setInputFormat(driverName) < 0)
          throw new IllegalArgumentException("couldn't open webcam device: " + driverName);
// devices, unlike most files, need to have parameters set in order
// for Xuggler to know how to configure them, for a webcam, these
// parameters make sense
IMetaData params = IMetaData.make();
params.setValue("framerate", "30/1");
params.setValue("video_size", "320x240");

// Open up the container
int retval = container.open(deviceName, IContainer.Type.READ, format,
false, true, params, null);

但是当我尝试打开设备时(通过他的设备名称),它无法正常工作: 0 [main] ERROR org.ffmpeg - [dshow @ 05168820]格式错误的dshow输入字符串。 0 [main] DEBUG com.xuggle.xuggler - 无法打开输出url:screen-capture-recorder(../../../../../../../csrc/com/xuggle/ xuggler / Container.cpp:436) 线程&#34; main&#34;中的例外情况java.lang.IllegalArgumentException:无法打开文件:screen-capture-recorder;错误:输入/输出错误     在DisplayWebcamVideo.main(DisplayWebcamVideo.java:99) Java结果:1

搜索了一下之后我找到了DSJ,但它仅用于非商业用途,我们需要一个注册表版本,因此无法使用。

我也找到了LTI-CIVIL,但它无法检测到&#34;屏幕捕获记录器&#34;。 我尝试过FMJ和JMF,但它也找不到设备。

我尝试过VLCj,但是如果我想获取图像而且不是我需要的话,那么带有视频的容器必须打开。

我试过网络摄像头(github.sarxos.webcam),它检测到设备,但是当我尝试打开它时出现了这个错误:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x5faf910d, pid=2552, tid=9780
#

我现在有点陷入困境,我不知道如何解决这个问题有人可以帮助我吗? 或者给我一个简单的DLL,我可以通过JNA从直接显示设备中获取图像......

0 个答案:

没有答案