Чтобы обнаружить только веб-камеры, вы должны передать аргумент методу getDeviceList(Format)
(вместо нуля):
Vector<Object> devices = CaptureDeviceManager.getDeviceList(new Format("RGB"));
Iterator<Object> di = devices.iterator();
while (di.hasNext()) {
CaptureDeviceInfo info = (CaptureDeviceInfo) di.next();
System.out.println(info);
}
Это должно распечатать все ваши веб-камеры - встроенные и подключенные к USB. Я проверил этот код, и он работает для меня.
Если это не поможет (поскольку JMF устарел и некоторые части кода могут быть устаревшими), вы можете попробовать использовать часть моего проекта Webcam Capture . Он работает корректно на большинстве платформ - Windows x86 и x64, Linux x86 и x64, Mac OS и т. Д. Если вы решите попробовать это, вам нужно написать что-то вроде этого, чтобы перечислить все устройства вашей веб-камеры:
List<Webcam> webcams = Webcam.getDevices();
Обратите внимание, что он также может работать поверх JMF - чтобы заменить встроенный драйвер по умолчанию на JMF, вам нужно добавить JMF драйвер JAR в classpath и позвоните, прежде чем перечислять веб-камеры:
Webcam.setDriver(new JmfDriver());
Надеюсь, эта помощь.