Получить изображение с устройства прямого показа
Я хочу получить изображение с устройства прямого показа в 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: устройство записи экрана (../../../../../../../csrc/com/xuggle/xuggler/Container.cpp:436) Исключение в потоке "main" java.lang.IllegalArgumentException: не удалось открыть файл: screen-capture-recordder; Ошибка: ошибка ввода / вывода в DisplayWebcamVideo.main(DisplayWebcamVideo.java:99) Результат Java: 1
После небольшого поиска я нашел DSJ, но он предназначен только для некоммерческого использования, и нам нужна версия реестра, поэтому для меня это невозможно использовать.
Я также нашел LTI-CIVIL, но он не смог обнаружить "захват экрана захвата". Я пробовал 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, чтобы получить изображение с устройства прямого показа...